LLVM: lib/CodeGen/AsmPrinter/DbgEntityHistoryCalculator.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "dwarfdebug"
Functions
static std::optional< ArrayRef< InsnRange >::iterator > intersects (const MachineInstr *StartMI, const MachineInstr *EndMI, ArrayRef< InsnRange > Ranges, const InstructionOrdering &Ordering)
Check if the instruction range [StartMI, EndMI] intersects any instruction range in Ranges.
static void dropRegDescribedVar (RegDescribedVarsMap &RegVars, unsigned RegNo, InlinedEntity Var)
static void addRegDescribedVar (RegDescribedVarsMap &RegVars, unsigned RegNo, InlinedEntity Var)
static void clobberRegEntries (InlinedEntity Var, unsigned RegNo, const MachineInstr &ClobberingInstr, DbgValueEntriesMap &LiveEntries, DbgValueHistoryMap &HistMap, SmallVectorImpl< Register > &FellowRegisters)
Create a clobbering entry and end all open debug value entries for Var that are described by RegNo using that entry.
static void handleNewDebugValue (InlinedEntity Var, const MachineInstr &DV, RegDescribedVarsMap &RegVars, DbgValueEntriesMap &LiveEntries, DbgValueHistoryMap &HistMap)
Add a new debug value for Var. Closes all overlapping debug values.
static void clobberRegisterUses (RegDescribedVarsMap &RegVars, RegDescribedVarsMap::iterator I, DbgValueHistoryMap &HistMap, DbgValueEntriesMap &LiveEntries, const MachineInstr &ClobberingInstr)
static void clobberRegisterUses (RegDescribedVarsMap &RegVars, unsigned RegNo, DbgValueHistoryMap &HistMap, DbgValueEntriesMap &LiveEntries, const MachineInstr &ClobberingInstr)

DEBUG_TYPE

#define DEBUG_TYPE "dwarfdebug"

addRegDescribedVar()

void addRegDescribedVar ( RegDescribedVarsMap & RegVars, unsigned RegNo, InlinedEntity Var ) static

clobberRegEntries()

Create a clobbering entry and end all open debug value entries for Var that are described by RegNo using that entry.

Inserts into FellowRegisters the set of Registers that were also used to describe Var alongside RegNo.

Definition at line 327 of file DbgEntityHistoryCalculator.cpp.

References assert(), llvm::SmallSet< T, N, C >::contains(), llvm::SmallVectorImpl< T >::erase(), llvm::DbgValueHistoryMap::getEntry(), llvm::SmallSet< T, N, C >::insert(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Reg, and llvm::DbgValueHistoryMap::startClobber().

Referenced by clobberRegisterUses().

clobberRegisterUses() [1/2]

void clobberRegisterUses ( RegDescribedVarsMap & RegVars, RegDescribedVarsMap::iterator I, DbgValueHistoryMap & HistMap, DbgValueEntriesMap & LiveEntries, const MachineInstr & ClobberingInstr ) static

clobberRegisterUses() [2/2]

dropRegDescribedVar()

void dropRegDescribedVar ( RegDescribedVarsMap & RegVars, unsigned RegNo, InlinedEntity Var ) static

handleNewDebugValue()

Add a new debug value for Var. Closes all overlapping debug values.

Definition at line 369 of file DbgEntityHistoryCalculator.cpp.

References addRegDescribedVar(), assert(), llvm::MachineInstr::debug_operands(), dropRegDescribedVar(), llvm::SmallVectorImpl< T >::erase(), llvm::DIExpression::fragmentsOverlap(), llvm::MachineInstr::getDebugExpression(), llvm::DbgValueHistoryMap::getEntry(), I, llvm::SmallVectorImpl< T >::insert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::insert_or_assign(), llvm::MachineInstr::isDebugEntryValue(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::DbgValueHistoryMap::startDbgValue().

Referenced by llvm::calculateDbgEntityHistory().

intersects()