LLVM: llvm::at Namespace Reference (original) (raw)

Assignment Tracking (at). More...

Classes
struct AssignmentInfo
Describes properties of a store that has a static size and offset into a some base storage. More...
struct VarRecord
Helper struct for trackAssignments, below. More...
Typedefs
using AssignmentInstRange
A range of instructions.
using StorageToVarsMap
Map of backing storage to a set of variables that are stored to it.
Functions
LLVM_ABI AssignmentInstRange getAssignmentInsts (DIAssignID *ID)
Return a range of instructions (typically just one) that have ID as an attachment.
AssignmentInstRange getAssignmentInsts (const DbgVariableRecord *DVR)
SmallVector< DbgVariableRecord * > getDVRAssignmentMarkers (const Instruction *Inst)
Return a range of dbg_assign records for which Inst performs the assignment they encode.
LLVM_ABI void deleteAssignmentMarkers (const Instruction *Inst)
Delete the llvm.dbg.assign intrinsics linked to Inst.
LLVM_ABI void RAUW (DIAssignID *Old, DIAssignID *New)
Replace all uses (and attachments) of Old with New.
LLVM_ABI void deleteAll (Function *F)
Remove all Assignment Tracking related intrinsics and metadata from F.
LLVM_ABI bool calculateFragmentIntersect (const DataLayout &DL, const Value *Dest, uint64_t SliceOffsetInBits, uint64_t SliceSizeInBits, const DbgVariableRecord *DVRAssign, std::optional< DIExpression::FragmentInfo > &Result)
Calculate the fragment of the variable in DAI covered from (Dest + SliceOffsetInBits) to to (Dest + SliceOffsetInBits + SliceSizeInBits)
LLVM_ABI void remapAssignID (DenseMap< DIAssignID *, DIAssignID * > &Map, Instruction &I)
Replace DIAssignID uses and attachments with IDs from Map.
LLVM_ABI void trackAssignments (Function::iterator Start, Function::iterator End, const StorageToVarsMap &Vars, const DataLayout &DL, bool DebugPrints=false)
Track assignments to Vars between Start and End.
LLVM_ABI std::optional< AssignmentInfo > getAssignmentInfo (const DataLayout &DL, const MemIntrinsic *I)
LLVM_ABI std::optional< AssignmentInfo > getAssignmentInfo (const DataLayout &DL, const StoreInst *SI)
LLVM_ABI std::optional< AssignmentInfo > getAssignmentInfo (const DataLayout &DL, const AllocaInst *AI)

Assignment Tracking (at).

AssignmentInstRange

Initial value:

A range adaptor for a pair of iterators.

A range of instructions.

Definition at line 178 of file DebugInfo.h.

StorageToVarsMap

Initial value:

Map of backing storage to a set of variables that are stored to it.

TODO: Backing storage shouldn't be limited to allocas only. Some local variables have their storage allocated by the calling function (addresses passed in with sret & byval parameters).

Definition at line 278 of file DebugInfo.h.

calculateFragmentIntersect()

deleteAll()

void llvm::at::deleteAll ( Function * F )

deleteAssignmentMarkers()

getAssignmentInfo() [1/3]

getAssignmentInfo() [2/3]

getAssignmentInfo() [3/3]

getAssignmentInsts() [1/2]

getAssignmentInsts() [2/2]

getDVRAssignmentMarkers()

RAUW()

remapAssignID()

trackAssignments()

Track assignments to Vars between Start and End.

Definition at line 2157 of file DebugInfo.cpp.

References assert(), llvm::cast_or_null(), DL, llvm::dyn_cast(), emitDbgAssign(), llvm::errs(), llvm::PoisonValue::get(), getAssignmentInfo(), llvm::DIAssignID::getDistinct(), llvm::Type::getInt1Ty(), I, LLVM_DEBUG, MI, and Poison.

Referenced by trackInlinedStores().