LLVM: llvm::DbgVariableRecord Class Reference (original) (raw)

Record of a variable value-assignment, aka a non instruction representation of the dbg.value intrinsic. More...

#include "[llvm/IR/DebugProgramInstruction.h](DebugProgramInstruction%5F8h%5Fsource.html)"

Public Types
enum class LocationType : uint8_t { Declare, Value, Assign, DeclareValue, End, Any }
Public Types inherited from llvm::DbgRecord
enum Kind : uint8_t { ValueKind, LabelKind }
Subclass discriminator. More...
using self_iterator = simple_ilist<DbgRecord>::iterator
using const_self_iterator = simple_ilist<DbgRecord>::const_iterator
Public Member Functions
LLVM_ABI DbgVariableRecord (const DbgVariableIntrinsic *DVI)
Create a new DbgVariableRecord representing the intrinsic DVI, for example the assignment represented by a dbg.value.
LLVM_ABI DbgVariableRecord (const DbgVariableRecord &DVR)
LLVM_ABI DbgVariableRecord (Metadata *Location, DILocalVariable *DV, DIExpression *Expr, const DILocation *DI, LocationType Type=LocationType::Value)
Directly construct a new DbgVariableRecord representing a dbg.value intrinsic assigning Location to the DV / Expr / DI variable.
LLVM_ABI DbgVariableRecord (Metadata *Value, DILocalVariable *Variable, DIExpression *Expression, DIAssignID *AssignID, Metadata *Address, DIExpression *AddressExpression, const DILocation *DI)
bool isDbgDeclare () const
bool isDbgValue () const
bool isDbgDeclareValue () const
LLVM_ABI iterator_range< location_op_iterator > location_ops () const
Get the locations corresponding to the variable referenced by the debug info intrinsic.
LLVM_ABI Value * getVariableLocationOp (unsigned OpIdx) const
LLVM_ABI void replaceVariableLocationOp (Value *OldValue, Value *NewValue, bool AllowEmpty=false)
LLVM_ABI void replaceVariableLocationOp (unsigned OpIdx, Value *NewValue)
LLVM_ABI void addVariableLocationOps (ArrayRef< Value * > NewValues, DIExpression *NewExpr)
Adding a new location operand will always result in this intrinsic using an ArgList, and must always be accompanied by a new expression that uses the new operand.
LLVM_ABI unsigned getNumVariableLocationOps () const
bool hasArgList () const
bool hasValidLocation () const
Returns true if this DbgVariableRecord has no empty MDNodes in its location list.
bool isAddressOfVariable () const
Does this describe the address of a local variable.
bool isValueOfVariable () const
Determine if this describes the value of a local variable.
LocationType getType () const
LLVM_ABI void setKillLocation ()
LLVM_ABI bool isKillLocation () const
void setVariable (DILocalVariable *NewVar)
DILocalVariable * getVariable () const
MDNode * getRawVariable () const
void setExpression (DIExpression *NewExpr)
DIExpression * getExpression () const
MDNode * getRawExpression () const
Metadata * getRawLocation () const
Returns the metadata operand for the first location description.
Value * getValue (unsigned OpIdx=0) const
void setRawLocation (Metadata *NewLocation)
Use of this should generally be avoided; instead, replaceVariableLocationOp and addVariableLocationOps should be used where possible to avoid creating invalid state.
LLVM_ABI std::optional< DbgVariableFragmentInfo > getFragment () const
DbgVariableFragmentInfo getFragmentOrEntireVariable () const
Get the FragmentInfo for the variable if it exists, otherwise return a FragmentInfo that covers the entire variable if the variable size is known, otherwise return a zero-sized fragment.
LLVM_ABI std::optional< uint64_t > getFragmentSizeInBits () const
Get the size (in bits) of the variable, or fragment of the variable that is described.
bool isEquivalentTo (const DbgVariableRecord &Other) const
bool isIdenticalToWhenDefined (const DbgVariableRecord &Other) const
LLVM_ABI DbgVariableRecord * clone () const
LLVM_ABI DbgVariableIntrinsic * createDebugIntrinsic (Module *M, Instruction *InsertBefore) const
Convert this DbgVariableRecord back into a dbg.value intrinsic.
LLVM_ABI void handleChangedLocation (Metadata *NewLocation)
Handle changes to the location of the Value(s) that we refer to happening "under our feet".
LLVM_ABI void print (raw_ostream &O, bool IsForDebug=false) const
LLVM_ABI void print (raw_ostream &ROS, ModuleSlotTracker &MST, bool IsForDebug) const
DbgAssign Methods
bool isDbgAssign () const
LLVM_ABI Value * getAddress () const
Metadata * getRawAddress () const
Metadata * getRawAssignID () const
LLVM_ABI DIAssignID * getAssignID () const
DIExpression * getAddressExpression () const
MDNode * getRawAddressExpression () const
void setAddressExpression (DIExpression *NewExpr)
LLVM_ABI void setAssignId (DIAssignID *New)
void setAddress (Value *V)
LLVM_ABI void setKillAddress ()
Kill the address component.
LLVM_ABI bool isKillAddress () const
Check whether this kills the address component.
Public Member Functions inherited from llvm::DbgRecord
DbgRecord (Kind RecordKind, DebugLoc DL)
LLVM_ABI bool isEquivalentTo (const DbgRecord &R) const
Same as isIdenticalToWhenDefined but checks DebugLoc too.
Kind getRecordKind () const
void setMarker (DbgMarker *M)
DbgMarker * getMarker ()
const DbgMarker * getMarker () const
LLVM_ABI BasicBlock * getBlock ()
LLVM_ABI const BasicBlock * getBlock () const
LLVM_ABI Function * getFunction ()
LLVM_ABI const Function * getFunction () const
LLVM_ABI Module * getModule ()
LLVM_ABI const Module * getModule () const
LLVM_ABI LLVMContext & getContext ()
LLVM_ABI const LLVMContext & getContext () const
LLVM_ABI const Instruction * getInstruction () const
LLVM_ABI const BasicBlock * getParent () const
LLVM_ABI BasicBlock * getParent ()
LLVM_ABI void removeFromParent ()
LLVM_ABI void eraseFromParent ()
DbgRecord * getNextNode ()
DbgRecord * getPrevNode ()
LLVM_ABI void insertBefore (DbgRecord *InsertBefore)
LLVM_ABI void insertAfter (DbgRecord *InsertAfter)
LLVM_ABI void moveBefore (DbgRecord *MoveBefore)
LLVM_ABI void moveAfter (DbgRecord *MoveAfter)
LLVM_ABI void insertBefore (self_iterator InsertBefore)
LLVM_ABI void insertAfter (self_iterator InsertAfter)
LLVM_ABI void moveBefore (self_iterator MoveBefore)
LLVM_ABI void moveAfter (self_iterator MoveAfter)
DebugLoc getDebugLoc () const
void setDebugLoc (DebugLoc Loc)
LLVM_ABI void dump () const
LLVM_ABI void deleteRecord ()
Methods that dispatch to subclass implementations.
LLVM_ABI DbgRecord * clone () const
LLVM_ABI void print (raw_ostream &O, bool IsForDebug=false) const
LLVM_ABI void print (raw_ostream &O, ModuleSlotTracker &MST, bool IsForDebug) const
LLVM_ABI bool isIdenticalToWhenDefined (const DbgRecord &R) const
LLVM_ABI DbgInfoIntrinsic * createDebugIntrinsic (Module *M, Instruction *InsertBefore) const
Convert this DbgRecord back into an appropriate llvm.dbg.
Public Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< DbgRecord, Options... >::type >
self_iterator getIterator ()
reverse_self_iterator getReverseIterator ()
std::enable_if_t< T::is_sentinel_tracking_explicit, bool > isSentinel () const
Check whether this is the sentinel node.
Public Member Functions inherited from llvm::ilist_detail::node_parent_access< ilist_node_impl< ilist_detail::compute_node_options< DbgRecord, Options... >::type >, ilist_detail::compute_node_options< DbgRecord, Options... >::type::parent_ty >
const ilist_detail::compute_node_options< DbgRecord, Options... >::type::parent_ty * getParent () const
void setParent (ilist_detail::compute_node_options< DbgRecord, Options... >::type::parent_ty *Parent)
Static Public Member Functions
static LLVM_ABI DbgVariableRecord * createUnresolvedDbgVariableRecord (LocationType Type, Metadata *Val, MDNode *Variable, MDNode *Expression, MDNode *AssignID, Metadata *Address, MDNode *AddressExpression, MDNode *DI)
Used to create DbgVariableRecords during parsing, where some metadata references may still be unresolved.
static LLVM_ABI DbgVariableRecord * createDVRAssign (Value *Val, DILocalVariable *Variable, DIExpression *Expression, DIAssignID *AssignID, Value *Address, DIExpression *AddressExpression, const DILocation *DI)
static LLVM_ABI DbgVariableRecord * createLinkedDVRAssign (Instruction *LinkedInstr, Value *Val, DILocalVariable *Variable, DIExpression *Expression, Value *Address, DIExpression *AddressExpression, const DILocation *DI)
static LLVM_ABI DbgVariableRecord * createDbgVariableRecord (Value *Location, DILocalVariable *DV, DIExpression *Expr, const DILocation *DI)
static LLVM_ABI DbgVariableRecord * createDbgVariableRecord (Value *Location, DILocalVariable *DV, DIExpression *Expr, const DILocation *DI, DbgVariableRecord &InsertBefore)
static LLVM_ABI DbgVariableRecord * createDVRDeclare (Value *Address, DILocalVariable *DV, DIExpression *Expr, const DILocation *DI)
static LLVM_ABI DbgVariableRecord * createDVRDeclare (Value *Address, DILocalVariable *DV, DIExpression *Expr, const DILocation *DI, DbgVariableRecord &InsertBefore)
static LLVM_ABI DbgVariableRecord * createDVRDeclareValue (Value *Address, DILocalVariable *DV, DIExpression *Expr, const DILocation *DI)
static LLVM_ABI DbgVariableRecord * createDVRDeclareValue (Value *Address, DILocalVariable *DV, DIExpression *Expr, const DILocation *DI, DbgVariableRecord &InsertBefore)
static bool classof (const DbgRecord *E)
Support type inquiry through isa, cast, and dyn_cast.
Public Attributes
LocationType Type
Classification of the debug-info record that this DbgVariableRecord represents.
DbgRecordParamRef< DILocalVariable > Variable
DbgRecordParamRef< DIExpression > Expression
DbgRecordParamRef< DIExpression > AddressExpression
Public Attributes inherited from llvm::DbgRecord
DbgMarker * Marker = nullptr
Marker that this DbgRecord is linked into.
Friends
class DebugValueUser
Additional Inherited Members
Protected Types inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< DbgRecord, Options... >::type >
using self_iterator
using const_self_iterator
using reverse_self_iterator
using const_reverse_self_iterator
Protected Member Functions inherited from llvm::DbgRecord
~DbgRecord ()=default
Similarly to Value, we avoid paying the cost of a vtable by protecting the dtor and having deleteRecord dispatch cleanup.
Protected Member Functions inherited from llvm::ilist_node_impl< ilist_detail::compute_node_options< DbgRecord, Options... >::type >
ilist_node_impl ()=default
Protected Member Functions inherited from llvm::DebugValueUser
ArrayRef< Metadata * > getDebugValues () const
LLVM_ABI DbgVariableRecord * getUser ()
LLVM_ABI const DbgVariableRecord * getUser () const
LLVM_ABI void handleChangedValue (void *Old, Metadata *NewDebugValue)
To be called by ReplaceableMetadataImpl::replaceAllUsesWith, where Old is a pointer to one of the pointers in DebugValues (so should be type Metadata**), and NewDebugValue is the new Metadata* that is replacing *Old.
DebugValueUser ()=default
DebugValueUser (std::array< Metadata *, 3 > DebugValues)
DebugValueUser (DebugValueUser &&X)
DebugValueUser (const DebugValueUser &X)
DebugValueUser & operator= (DebugValueUser &&X)
DebugValueUser & operator= (const DebugValueUser &X)
~DebugValueUser ()
void resetDebugValues ()
void resetDebugValue (size_t Idx, Metadata *DebugValue)
bool operator== (const DebugValueUser &X) const
bool operator!= (const DebugValueUser &X) const
Protected Attributes inherited from llvm::DbgRecord
DebugLoc DbgLoc
Kind RecordKind
Subclass discriminator.
Protected Attributes inherited from llvm::DebugValueUser
std::array< Metadata *, 3 > DebugValues

Record of a variable value-assignment, aka a non instruction representation of the dbg.value intrinsic.

This class inherits from DebugValueUser to allow LLVM's metadata facilities to update our references to metadata beneath our feet.

Definition at line 277 of file DebugProgramInstruction.h.

LocationType

Enumerator
Declare
Value
Assign
DeclareValue
End Marks the end of the concrete types.
Any To indicate all LocationTypes in searches.

Definition at line 281 of file DebugProgramInstruction.h.

Create a new DbgVariableRecord representing the intrinsic DVI, for example the assignment represented by a dbg.value.

Definition at line 34 of file DebugProgramInstruction.cpp.

References llvm::DbgRecord::DbgRecord(), DebugValueUser, llvm::DbgRecord::getDebugLoc(), llvm::DbgVariableIntrinsic::getRawLocation(), and llvm::DbgRecord::ValueKind.

Referenced by clone(), createDbgVariableRecord(), createDbgVariableRecord(), createDVRAssign(), createDVRDeclare(), createDVRDeclare(), createDVRDeclareValue(), createDVRDeclareValue(), createLinkedDVRAssign(), createUnresolvedDbgVariableRecord(), DbgVariableRecord(), isEquivalentTo(), and isIdenticalToWhenDefined().

DbgVariableRecord() [2/4]

Definition at line 61 of file DebugProgramInstruction.cpp.

References AddressExpression, llvm::DbgRecord::DbgRecord(), DbgVariableRecord(), llvm::DebugValueUser::DebugValues, DebugValueUser, Expression, llvm::DbgRecord::getDebugLoc(), getExpression(), getType(), getVariable(), Type, llvm::DbgRecord::ValueKind, and Variable.

DbgVariableRecord() [3/4]

DbgVariableRecord() [4/4]

addVariableLocationOps()

Adding a new location operand will always result in this intrinsic using an ArgList, and must always be accompanied by a new expression that uses the new operand.

Definition at line 359 of file DebugProgramInstruction.cpp.

References assert(), llvm::DIArgList::get(), getAsMetadata(), llvm::DbgRecord::getContext(), getNumVariableLocationOps(), getVariableLocationOp(), llvm::is_contained(), location_ops(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), setExpression(), setRawLocation(), and llvm::ArrayRef< T >::size().

classof()

clone()

createDbgVariableRecord() [1/2]

createDbgVariableRecord() [2/2]

createDebugIntrinsic()

Convert this DbgVariableRecord back into a dbg.value intrinsic.

InsertBefore Optional position to insert this intrinsic.

Returns

A new dbg.value intrinsic representing this DbgVariableRecord.

Definition at line 422 of file DebugProgramInstruction.cpp.

References Any, assert(), Assign, llvm::cast(), llvm::CallInst::Create(), Declare, DeclareValue, End, llvm::MetadataAsValue::get(), getAddressExpression(), getAssignID(), llvm::MDNode::getContext(), llvm::DbgRecord::getDebugLoc(), getExpression(), llvm::Function::getFunctionType(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Intrinsic::getOrInsertDeclaration(), getRawAddress(), getRawLocation(), getType(), getVariable(), llvm::Instruction::insertBefore(), isDbgAssign(), llvm_unreachable, llvm::Instruction::setDebugLoc(), llvm::CallInst::setTailCall(), and Value.

createDVRAssign()

createDVRDeclare() [1/2]

createDVRDeclare() [2/2]

createDVRDeclareValue() [1/2]

createDVRDeclareValue() [2/2]

createLinkedDVRAssign()

Definition at line 239 of file DebugProgramInstruction.cpp.

References llvm::Address, AddressExpression, assert(), llvm::cast(), createDVRAssign(), DbgVariableRecord(), Expression, llvm::Instruction::getMetadata(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), Value, and Variable.

Referenced by emitDbgAssign(), and insertNewDbgInst().

createUnresolvedDbgVariableRecord()

Used to create DbgVariableRecords during parsing, where some metadata references may still be unresolved.

Although for some fields a generic Metadata* argument is accepted for forward type-references, the verifier and accessors will reject incorrect types later on. The function is used for all types of DbgVariableRecords for simplicity while parsing, but asserts if any necessary fields are empty or unused fields are not empty, i.e. if the #dbg_assign fields are used for a non-dbg-assign type.

Definition at line 173 of file DebugProgramInstruction.cpp.

References llvm::Address, AddressExpression, DbgVariableRecord(), Expression, Type, and Variable.

Referenced by upgradeDbgIntrinsicToDbgRecord().

getAddress()

Value * DbgVariableRecord::getAddress ( ) const

getAddressExpression()

DIExpression * llvm::DbgVariableRecord::getAddressExpression ( ) const inline

getAssignID()

DIAssignID * DbgVariableRecord::getAssignID ( ) const

getExpression()

DIExpression * llvm::DbgVariableRecord::getExpression ( ) const inline

Definition at line 472 of file DebugProgramInstruction.h.

References Expression.

Referenced by buildOverlapMapAndRecordDeclares(), llvm::ConvertDebugDeclareToDebugValue(), llvm::ConvertDebugDeclareToDebugValue(), llvm::ConvertDebugDeclareToDebugValue(), createDebugIntrinsic(), llvm::DbgValueDef::DbgValueDef(), DbgVariableRecord(), getAddressExpression(), getFragment(), getFragmentSizeInBits(), llvm::FastISel::handleDbgInfo(), llvm::InsertDebugValueAtStoreLoc(), insertNewDbgInst(), isKillLocation(), migrateDebugInfo(), promoteSingleBlockAlloca(), rewriteSingleStoreAlloca(), llvm::coro::salvageDebugInfo(), UpdateDbgValue(), valueCoversEntireFragment(), llvm::ValueEnumerator::ValueEnumerator(), and llvm::SelectionDAGBuilder::visitDbgInfo().

getFragment()

getFragmentOrEntireVariable()

getFragmentSizeInBits()

std::optional< uint64_t > DbgVariableRecord::getFragmentSizeInBits ( ) const

getNumVariableLocationOps()

unsigned DbgVariableRecord::getNumVariableLocationOps ( ) const

getRawAddress()

Metadata * llvm::DbgVariableRecord::getRawAddress ( ) const inline

getRawAddressExpression()

MDNode * llvm::DbgVariableRecord::getRawAddressExpression ( ) const inline

getRawAssignID()

Metadata * llvm::DbgVariableRecord::getRawAssignID ( ) const inline

getRawExpression()

MDNode * llvm::DbgVariableRecord::getRawExpression ( ) const inline

getRawLocation()

Metadata * llvm::DbgVariableRecord::getRawLocation ( ) const inline

Returns the metadata operand for the first location description.

i.e., dbg intrinsic dbg.value,declare operand and dbg.assign 1st location operand (the "value componenet"). Note the operand (singular) may be a DIArgList which is a list of values.

Definition at line 479 of file DebugProgramInstruction.h.

References llvm::DebugValueUser::DebugValues.

Referenced by buildOverlapMapAndRecordDeclares(), createDebugIntrinsic(), llvm::DbgValueDef::DbgValueDef(), getNumVariableLocationOps(), getVariableLocationOp(), hasArgList(), isKillLocation(), location_ops(), llvm::coro::salvageDebugInfo(), and llvm::ValueEnumerator::ValueEnumerator().

getRawVariable()

MDNode * llvm::DbgVariableRecord::getRawVariable ( ) const inline

getType()

LocationType llvm::DbgVariableRecord::getType ( ) const inline

getValue()

Value * llvm::DbgVariableRecord::getValue ( unsigned OpIdx = 0) const inline

getVariable()

Definition at line 468 of file DebugProgramInstruction.h.

References Variable.

Referenced by llvm::ConvertDebugDeclareToDebugValue(), llvm::ConvertDebugDeclareToDebugValue(), llvm::ConvertDebugDeclareToDebugValue(), createDebugIntrinsic(), DbgVariableRecord(), findVarsWithStackSlot(), fixupDebugInfoPostExtraction(), getAggregateVariable(), getFragmentSizeInBits(), llvm::FastISel::handleDbgInfo(), llvm::InsertDebugValueAtStoreLoc(), insertNewDbgInst(), remarkAlloca(), valueCoversEntireFragment(), llvm::ValueEnumerator::ValueEnumerator(), and llvm::SelectionDAGBuilder::visitDbgInfo().

getVariableLocationOp()

Value * DbgVariableRecord::getVariableLocationOp ( unsigned OpIdx ) const

Definition at line 282 of file DebugProgramInstruction.cpp.

References assert(), llvm::cast(), llvm::dyn_cast(), getRawLocation(), llvm::isa(), OpIdx, and Value.

Referenced by addVariableLocationOps(), getValue(), llvm::FastISel::handleDbgInfo(), hasValidLocation(), replaceVariableLocationOp(), replaceVariableLocationOp(), llvm::coro::salvageDebugInfo(), valueCoversEntireFragment(), and llvm::SelectionDAGBuilder::visitDbgInfo().

handleChangedLocation()

LLVM_ABI void llvm::DbgVariableRecord::handleChangedLocation ( Metadata * NewLocation )

Handle changes to the location of the Value(s) that we refer to happening "under our feet".

References LLVM_ABI.

hasArgList()

bool llvm::DbgVariableRecord::hasArgList ( ) const inline

hasValidLocation()

bool llvm::DbgVariableRecord::hasValidLocation ( ) const inline

isAddressOfVariable()

bool llvm::DbgVariableRecord::isAddressOfVariable ( ) const inline

isDbgAssign()

bool llvm::DbgVariableRecord::isDbgAssign ( ) const inline

Definition at line 525 of file DebugProgramInstruction.h.

References Assign, and getType().

Referenced by llvm::ConvertDebugDeclareToDebugValue(), createDebugIntrinsic(), llvm::DbgValueDef::DbgValueDef(), llvm::memtag::DynCastToDbgAssign(), fixupDebugInfoPostExtraction(), llvm::at::getAssignmentInsts(), getIDFromMarker(), getRawAddress(), insertNewDbgInst(), LLVMDbgRecordGetKind(), replaceVariableLocationOp(), and llvm::ValueEnumerator::ValueEnumerator().

isDbgDeclare()

bool llvm::DbgVariableRecord::isDbgDeclare ( ) const inline

isDbgDeclareValue()

bool llvm::DbgVariableRecord::isDbgDeclareValue ( ) const inline

isDbgValue()

bool llvm::DbgVariableRecord::isDbgValue ( ) const inline

isEquivalentTo()

isIdenticalToWhenDefined()

isKillAddress()

bool DbgVariableRecord::isKillAddress ( ) const

isKillLocation()

bool DbgVariableRecord::isKillLocation ( ) const

Definition at line 387 of file DebugProgramInstruction.cpp.

References llvm::any_of(), getExpression(), getNumVariableLocationOps(), getRawLocation(), hasArgList(), llvm::isa(), llvm::DIExpression::isComplex(), location_ops(), and Value.

Referenced by llvm::DbgValueDef::DbgValueDef(), isKillAddress(), and SalvageDVI().

isValueOfVariable()

bool llvm::DbgVariableRecord::isValueOfVariable ( ) const inline

location_ops()

Get the locations corresponding to the variable referenced by the debug info intrinsic.

Depending on the intrinsic, this could be the variable's value or its address.

Definition at line 253 of file DebugProgramInstruction.cpp.

References assert(), llvm::cast(), llvm::dyn_cast(), and getRawLocation().

Referenced by addVariableLocationOps(), fixupDebugInfoPostExtraction(), llvm::insertDebugValuesForPHIs(), isKillLocation(), replaceVariableLocationOp(), setKillLocation(), and llvm::SelectionDAGBuilder::visitDbgInfo().

print() [1/2]

void DbgVariableRecord::print ( raw_ostream & O,
bool IsForDebug = false ) const

print() [2/2]

replaceVariableLocationOp() [1/2]

void DbgVariableRecord::replaceVariableLocationOp ( unsigned OpIdx,
Value * NewValue )

Definition at line 339 of file DebugProgramInstruction.cpp.

References assert(), llvm::cast(), llvm::DIArgList::get(), llvm::ValueAsMetadata::get(), getAsMetadata(), llvm::DbgRecord::getContext(), getNumVariableLocationOps(), getVariableLocationOp(), hasArgList(), llvm::isa(), OpIdx, llvm::SmallVectorTemplateBase< T, bool >::push_back(), setRawLocation(), and Value.

replaceVariableLocationOp() [2/2]

void DbgVariableRecord::replaceVariableLocationOp ( Value * OldValue,
Value * NewValue,
bool AllowEmpty = false )

Definition at line 305 of file DebugProgramInstruction.cpp.

References assert(), llvm::cast(), llvm::find(), llvm::DIArgList::get(), llvm::ValueAsMetadata::get(), getAddress(), getAsMetadata(), llvm::DbgRecord::getContext(), getVariableLocationOp(), hasArgList(), llvm::isa(), isDbgAssign(), llvm_unreachable, location_ops(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), setAddress(), setRawLocation(), and Value.

Referenced by llvm::insertDebugValuesForPHIs(), migrateDebugInfo(), rewriteDebugUsers(), llvm::coro::salvageDebugInfo(), setKillLocation(), and updateOneDbgValueForAlloca().

setAddress()

void llvm::DbgVariableRecord::setAddress ( Value * V) inline

setAddressExpression()

void llvm::DbgVariableRecord::setAddressExpression ( DIExpression * NewExpr) inline

setAssignId()

void DbgVariableRecord::setAssignId ( DIAssignID * New )

setExpression()

void llvm::DbgVariableRecord::setExpression ( DIExpression * NewExpr) inline

setKillAddress()

void DbgVariableRecord::setKillAddress ( )

setKillLocation()

void DbgVariableRecord::setKillLocation ( )

setRawLocation()

void llvm::DbgVariableRecord::setRawLocation ( Metadata * NewLocation) inline

setVariable()

void llvm::DbgVariableRecord::setVariable ( DILocalVariable * NewVar) inline

DebugValueUser

AddressExpression

Expression

Type

LocationType llvm::DbgVariableRecord::Type

Classification of the debug-info record that this DbgVariableRecord represents.

Essentially, "does this correspond to a dbg.value, dbg.declare, or dbg.assign?". FIXME: We could use spare padding bits from DbgRecord for this.

Definition at line 294 of file DebugProgramInstruction.h.

Referenced by createUnresolvedDbgVariableRecord(), DbgVariableRecord(), DbgVariableRecord(), getType(), isAddressOfVariable(), isDbgDeclare(), isDbgDeclareValue(), isDbgValue(), isIdenticalToWhenDefined(), isValueOfVariable(), and llvm::coro::salvageDebugInfo().

Variable


The documentation for this class was generated from the following files: