LLVM 20.0.0git
|
Base class containing the logic for constructing DWARF expressions independently of whether they are emitted into a DIE or into a .debug_loc entry. More...
#include "CodeGen/AsmPrinter/DwarfExpression.h"
Classes | |
struct | Register |
Holds information about all subregisters comprising a register location. More... | |
Public Member Functions | |
void | setLocation (const MachineLocation &Loc, const DIExpression *DIExpr) |
Set the location (Loc ) and DIExpression (DIExpr ) to describe. | |
bool | isUnknownLocation () const |
bool | isMemoryLocation () const |
bool | isRegisterLocation () const |
bool | isImplicitLocation () const |
bool | isEntryValue () const |
bool | isIndirect () const |
bool | isParameterValue () |
DwarfExpression (unsigned DwarfVersion, DwarfCompileUnit &CU) | |
void | finalize () |
This needs to be called last to commit any pending changes. | |
void | addSignedConstant (int64_t Value) |
Emit a signed constant. | |
void | addUnsignedConstant (uint64_t Value) |
Emit an unsigned constant. | |
void | addUnsignedConstant (const APInt &Value) |
Emit an unsigned constant. | |
void | addConstantFP (const APFloat &Value, const AsmPrinter &AP) |
Emit an floating point constant. | |
void | setMemoryLocationKind () |
Lock this down to become a memory location description. | |
void | setEntryValueFlags (const MachineLocation &Loc) |
Lock this down to become an entry value location. | |
void | setCallSiteParamValueFlag () |
Lock this down to become a call site parameter location. | |
bool | addMachineRegExpression (const TargetRegisterInfo &TRI, DIExpressionCursor &Expr, llvm::Register MachineReg, unsigned FragmentOffsetInBits=0) |
Emit a machine register location. | |
void | beginEntryValueExpression (DIExpressionCursor &ExprCursor) |
Begin emission of an entry value dwarf operation. | |
unsigned | getOrCreateBaseType (unsigned BitSize, dwarf::TypeKind Encoding) |
Return the index of a base type with the given properties and create one if necessary. | |
void | addExpression (DIExpressionCursor &&Expr) |
Emit all remaining operations in the DIExpressionCursor. | |
bool | addExpression (DIExpressionCursor &&Expr, llvm::function_ref< bool(unsigned, DIExpressionCursor &)> InsertArg) |
Emit all remaining operations in the DIExpressionCursor. | |
void | addFragmentOffset (const DIExpression *Expr) |
If applicable, emit an empty DW_OP_piece / DW_OP_bit_piece to advance to the fragment described by Expr . | |
void | emitLegacySExt (unsigned FromBits) |
void | emitLegacyZExt (unsigned FromBits) |
void | addWasmLocation (unsigned Index, uint64_t Offset) |
Emit location information expressed via WebAssembly location + offset The Index is an identifier for locals, globals or operand stack. | |
Public Attributes | |
std::optional< uint8_t > | TagOffset |
Protected Types | |
enum | { Unknown = 0 , Register , Memory , Implicit } |
The kind of location description being produced. More... | |
enum | { EntryValue = 1 << 0 , Indirect = 1 << 1 , CallSiteParamValue = 1 << 2 } |
Additional location flags which may be combined with any location kind. More... | |
Protected Member Functions | |
void | setSubRegisterPiece (unsigned SizeInBits, unsigned OffsetInBits) |
Push a DW_OP_piece / DW_OP_bit_piece for emitting later, if one is needed to represent a subregister. | |
void | maskSubRegister () |
Add masking operations to stencil out a subregister. | |
virtual void | emitOp (uint8_t Op, const char *Comment=nullptr)=0 |
Output a dwarf operand and an optional assembler comment. | |
virtual void | emitSigned (int64_t Value)=0 |
Emit a raw signed value. | |
virtual void | emitUnsigned (uint64_t Value)=0 |
Emit a raw unsigned value. | |
virtual void | emitData1 (uint8_t Value)=0 |
virtual void | emitBaseTypeRef (uint64_t Idx)=0 |
virtual void | enableTemporaryBuffer ()=0 |
Start emitting data to the temporary buffer. | |
virtual void | disableTemporaryBuffer ()=0 |
Disable emission to the temporary buffer. | |
virtual unsigned | getTemporaryBufferSize ()=0 |
Return the emitted size, in number of bytes, for the data stored in the temporary buffer. | |
virtual void | commitTemporaryBuffer ()=0 |
Commit the data stored in the temporary buffer to the main output. | |
void | emitConstu (uint64_t Value) |
Emit a normalized unsigned constant. | |
virtual bool | isFrameRegister (const TargetRegisterInfo &TRI, llvm::Register MachineReg)=0 |
Return whether the given machine register is the frame register in the current function. | |
void | addReg (int DwarfReg, const char *Comment=nullptr) |
Emit a DW_OP_reg operation. | |
void | addBReg (int DwarfReg, int Offset) |
Emit a DW_OP_breg operation. | |
void | addFBReg (int Offset) |
Emit DW_OP_fbreg <Offset>. | |
bool | addMachineReg (const TargetRegisterInfo &TRI, llvm::Register MachineReg, unsigned MaxSize=~1U) |
Emit a partial DWARF register operation. | |
void | addOpPiece (unsigned SizeInBits, unsigned OffsetInBits=0) |
Emit a DW_OP_piece or DW_OP_bit_piece operation for a variable fragment. | |
void | addShr (unsigned ShiftBy) |
Emit a shift-right dwarf operation. | |
void | addAnd (unsigned Mask) |
Emit a bitwise and dwarf operation. | |
void | addStackValue () |
Emit a DW_OP_stack_value, if supported. | |
void | finalizeEntryValue () |
Finalize an entry value by emitting its size operand, and committing the DWARF block which has been emitted to the temporary buffer. | |
void | cancelEntryValue () |
Cancel the emission of an entry value. | |
~DwarfExpression ()=default | |
Protected Attributes | |
bool | IsEmittingEntryValue = false |
Whether we are currently emitting an entry value operation. | |
DwarfCompileUnit & | CU |
SmallVector< Register, 2 > | DwarfRegs |
The register location, if any. | |
uint64_t | OffsetInBits = 0 |
Current Fragment Offset in Bits. | |
unsigned | SubRegisterSizeInBits: 16 |
Sometimes we need to add a DW_OP_bit_piece to describe a subregister. | |
unsigned | SubRegisterOffsetInBits: 16 |
unsigned | LocationKind: 3 |
unsigned | SavedLocationKind: 3 |
unsigned | LocationFlags: 3 |
unsigned | DwarfVersion: 4 |
Base class containing the logic for constructing DWARF expressions independently of whether they are emitted into a DIE or into a .debug_loc entry.
Some DWARF operations, e.g. DW_OP_entry_value, need to calculate the size of a succeeding DWARF block before the latter is emitted to the output. To handle such cases, data can conditionally be emitted to a temporary buffer, which can later on be committed to the main output. The size of the temporary buffer is queryable, allowing for the size of the data to be emitted before the data is committed.
Definition at line 44 of file DwarfExpression.h.
|
protected |
The kind of location description being produced.
Enumerator | |
---|---|
Unknown | |
Register | |
Memory | |
Implicit |
Definition at line 82 of file DwarfExpression.h.
|
protected |
Additional location flags which may be combined with any location kind.
Currently, entry values are not supported for the Memory location kind.
Enumerator | |
---|---|
EntryValue | |
Indirect | |
CallSiteParamValue |
Definition at line 86 of file DwarfExpression.h.
|
protecteddefault |
|
inline |
Definition at line 224 of file DwarfExpression.h.
|
protected |
Emit a bitwise and dwarf operation.
Definition at line 95 of file DwarfExpression.cpp.
References emitConstu(), and emitOp().
Referenced by maskSubRegister().
|
protected |
Emit a DW_OP_breg operation.
Definition at line 56 of file DwarfExpression.cpp.
References assert(), emitOp(), emitSigned(), emitUnsigned(), isRegisterLocation(), and llvm::Offset.
Referenced by addExpression(), and addMachineRegExpression().
void DwarfExpression::addConstantFP | ( | const APFloat & | Value, |
const AsmPrinter & | AP | ||
) |
Emit an floating point constant.
Definition at line 224 of file DwarfExpression.cpp.
References assert(), llvm::APFloat::bitcastToAPInt(), llvm::APInt::byteSwap(), llvm::dbgs(), emitData1(), emitOp(), emitUnsigned(), llvm::APInt::getBitWidth(), llvm::AsmPrinter::getDataLayout(), llvm::APInt::getZExtValue(), llvm::DataLayout::isBigEndian(), isImplicitLocation(), isUnknownLocation(), LLVM_DEBUG, and llvm::APInt::lshr().
Referenced by llvm::DwarfDebug::emitDebugLocValue().
void DwarfExpression::addExpression | ( | DIExpressionCursor && | Expr | ) |
Emit all remaining operations in the DIExpressionCursor.
The cursor must not contain any DW_OP_LLVM_arg operations.
Definition at line 485 of file DwarfExpression.cpp.
References addExpression(), Idx, and llvm_unreachable.
Referenced by llvm::DwarfCompileUnit::addAddress(), llvm::DwarfCompileUnit::addComplexAddress(), addExpression(), llvm::DwarfDebug::emitDebugLocValue(), and llvm::DwarfCompileUnit::updateSubprogramScopeDIE().
bool DwarfExpression::addExpression | ( | DIExpressionCursor && | Expr, |
llvm::function_ref< bool(unsigned, DIExpressionCursor &)> | InsertArg | ||
) |
Emit all remaining operations in the DIExpressionCursor.
DW_OP_LLVM_arg operations are resolved by calling (InsertArg
).
InsertArg
) returns false. Definition at line 492 of file DwarfExpression.cpp.
References addBReg(), addOpPiece(), addStackValue(), llvm::alignTo(), assert(), llvm::dwarf::DW_OP_LLVM_arg, llvm::dwarf::DW_OP_LLVM_convert, llvm::dwarf::DW_OP_LLVM_extract_bits_sext, llvm::dwarf::DW_OP_LLVM_extract_bits_zext, llvm::dwarf::DW_OP_LLVM_fragment, llvm::dwarf::DW_OP_LLVM_tag_offset, DwarfVersion, emitBaseTypeRef(), emitConstu(), emitData1(), emitLegacySExt(), emitLegacyZExt(), emitOp(), emitSigned(), emitUnsigned(), getOrCreateBaseType(), Implicit, IsEmittingEntryValue, isImplicitLocation(), isMemoryLocation(), isParameterValue(), isRegisterLocation(), llvm_unreachable, LocationKind, Memory, OffsetInBits, setSubRegisterPiece(), SubRegisterOffsetInBits, SubRegisterSizeInBits, TagOffset, and Unknown.
|
protected |
Emit DW_OP_fbreg <Offset>.
Definition at line 68 of file DwarfExpression.cpp.
References emitOp(), emitSigned(), and llvm::Offset.
Referenced by addMachineRegExpression().
void DwarfExpression::addFragmentOffset | ( | const DIExpression * | Expr | ) |
If applicable, emit an empty DW_OP_piece / DW_OP_bit_piece to advance to the fragment described by Expr
.
Definition at line 716 of file DwarfExpression.cpp.
References addOpPiece(), assert(), llvm::DIExpression::getFragmentInfo(), llvm::DIExpression::isFragment(), and OffsetInBits.
Referenced by llvm::DwarfCompileUnit::addComplexAddress(), and llvm::DwarfDebug::emitDebugLocValue().
|
protected |
Emit a partial DWARF register operation.
MachineReg | The register number. |
MaxSize | If the register must be composed from sub-registers this is an upper bound for how many bits the emitted DW_OP_piece may cover. |
If size and offset is zero an operation for the entire register is emitted: Some targets do not provide a DWARF register number for every register. If this is the case, this function will attempt to emit a DWARF register by emitting a fragment of a super-register or by piecing together multiple subregisters that alias the register.
Definition at line 100 of file DwarfExpression.cpp.
References llvm::DwarfExpression::Register::createRegister(), llvm::DwarfExpression::Register::createSubRegister(), DwarfRegs, Idx, isFrameRegister(), llvm::Register::isPhysical(), llvm::Offset, RegSize, llvm::SmallBitVector::set(), setSubRegisterPiece(), Size, llvm::SmallBitVector::test(), and TRI.
Referenced by addMachineRegExpression().
bool DwarfExpression::addMachineRegExpression | ( | const TargetRegisterInfo & | TRI, |
DIExpressionCursor & | Expr, | ||
llvm::Register | MachineReg, | ||
unsigned | FragmentOffsetInBits = 0 |
||
) |
Emit a machine register location.
As an optimization this may also consume the prefix of a DwarfExpression if a more efficient representation for combining the register location and the first operation exists.
FragmentOffsetInBits | If this is one fragment out of a fragmented location, this is the offset of the fragment inside the entire variable. |
Definition at line 251 of file DwarfExpression.cpp.
References addBReg(), addFBReg(), addMachineReg(), addOpPiece(), addReg(), llvm::any_of(), assert(), cancelEntryValue(), llvm::DIExpressionCursor::consume(), llvm::dbgs(), llvm::dwarf::DW_OP_LLVM_fragment, DwarfRegs, DwarfVersion, emitOp(), finalizeEntryValue(), llvm::DIExpressionCursor::getFragmentInfo(), IsEmittingEntryValue, isEntryValue(), isFrameRegister(), isIndirect(), isMemoryLocation(), isParameterValue(), LLVM_DEBUG, LocationKind, maskSubRegister(), N, llvm::Offset, llvm::DIExpressionCursor::peek(), llvm::DIExpressionCursor::peekNext(), RegSize, SubRegisterSizeInBits, llvm::DIExpressionCursor::take(), TRI, and Unknown.
Referenced by llvm::DwarfCompileUnit::addAddress(), llvm::DwarfCompileUnit::addComplexAddress(), and llvm::DwarfDebug::emitDebugLocValue().
Emit a DW_OP_piece or DW_OP_bit_piece operation for a variable fragment.
OffsetInBits | This is an optional offset into the location that is at the top of the DWARF stack. |
Definition at line 73 of file DwarfExpression.cpp.
References emitOp(), emitUnsigned(), and OffsetInBits.
Referenced by addExpression(), addFragmentOffset(), addMachineRegExpression(), addUnsignedConstant(), and finalize().
Emit a DW_OP_reg operation.
Note that this is only legal inside a DWARF register location description.
Definition at line 43 of file DwarfExpression.cpp.
References assert(), emitOp(), emitUnsigned(), isRegisterLocation(), isUnknownLocation(), and LocationKind.
Referenced by addMachineRegExpression().
|
protected |
Emit a shift-right dwarf operation.
Definition at line 90 of file DwarfExpression.cpp.
References emitConstu(), and emitOp().
Referenced by maskSubRegister().
void DwarfExpression::addSignedConstant | ( | int64_t | Value | ) |
Emit a signed constant.
Definition at line 191 of file DwarfExpression.cpp.
References assert(), emitOp(), emitSigned(), Implicit, isImplicitLocation(), isUnknownLocation(), and LocationKind.
Referenced by llvm::DwarfDebug::emitDebugLocValue().
|
protected |
Emit a DW_OP_stack_value, if supported.
The proper way to describe a constant value is DW_OP_constu <const>, DW_OP_stack_value. Unfortunately, DW_OP_stack_value was not available until DWARF 4, so we will continue to generate DW_OP_constu <const> for DWARF 2 and DWARF 3. Technically, this is incorrect since DW_OP_const <const> actually describes a value at a constant address, not a constant value. However, in the past there was no better way to describe a constant value, so the producers and consumers started to rely on heuristics to disambiguate the value vs. location status of the expression. See PR21176 for more details.
Definition at line 186 of file DwarfExpression.cpp.
References DwarfVersion, and emitOp().
Referenced by addExpression(), and addUnsignedConstant().
Emit an unsigned constant.
Definition at line 204 of file DwarfExpression.cpp.
References addOpPiece(), addStackValue(), addUnsignedConstant(), assert(), llvm::Data, Implicit, isImplicitLocation(), isUnknownLocation(), LocationKind, llvm::Offset, and Size.
void DwarfExpression::addUnsignedConstant | ( | uint64_t | Value | ) |
Emit an unsigned constant.
Definition at line 198 of file DwarfExpression.cpp.
References assert(), emitConstu(), Implicit, isImplicitLocation(), isUnknownLocation(), and LocationKind.
Referenced by addUnsignedConstant(), and llvm::DwarfDebug::emitDebugLocValue().
Emit location information expressed via WebAssembly location + offset The Index is an identifier for locals, globals or operand stack.
Definition at line 766 of file DwarfExpression.cpp.
References assert(), emitOp(), emitUnsigned(), Implicit, LocationKind, Memory, llvm::Offset, and Unknown.
Referenced by llvm::DwarfDebug::emitDebugLocValue(), and llvm::DwarfCompileUnit::updateSubprogramScopeDIE().
void DwarfExpression::beginEntryValueExpression | ( | DIExpressionCursor & | ExprCursor | ) |
Begin emission of an entry value dwarf operation.
The entry value's first operand is the size of the DWARF block (its second operand), which needs to be calculated at time of emission, so we don't emit any operands here.
Definition at line 407 of file DwarfExpression.cpp.
References assert(), llvm::dwarf::DW_OP_LLVM_entry_value, enableTemporaryBuffer(), EntryValue, IsEmittingEntryValue, LocationFlags, LocationKind, SavedLocationKind, and llvm::DIExpressionCursor::take().
Referenced by llvm::DwarfCompileUnit::addComplexAddress(), and llvm::DwarfDebug::emitDebugLocValue().
|
protected |
Cancel the emission of an entry value.
Definition at line 441 of file DwarfExpression.cpp.
References assert(), disableTemporaryBuffer(), getTemporaryBufferSize(), IsEmittingEntryValue, LocationKind, and SavedLocationKind.
Referenced by addMachineRegExpression().
|
protectedpure virtual |
Commit the data stored in the temporary buffer to the main output.
Referenced by finalizeEntryValue().
|
protectedpure virtual |
Disable emission to the temporary buffer.
This does not commit data in the temporary buffer to the main output.
Referenced by cancelEntryValue(), and finalizeEntryValue().
|
protectedpure virtual |
Referenced by addExpression().
|
protected |
Emit a normalized unsigned constant.
Definition at line 29 of file DwarfExpression.cpp.
References emitOp(), and emitUnsigned().
Referenced by addAnd(), addExpression(), addShr(), and addUnsignedConstant().
|
protectedpure virtual |
Referenced by addConstantFP(), and addExpression().
void DwarfExpression::emitLegacySExt | ( | unsigned | FromBits | ) |
Definition at line 728 of file DwarfExpression.cpp.
References emitOp(), and emitUnsigned().
Referenced by addExpression().
void DwarfExpression::emitLegacyZExt | ( | unsigned | FromBits | ) |
Definition at line 743 of file DwarfExpression.cpp.
References emitOp(), and emitUnsigned().
Referenced by addExpression().
|
protectedpure virtual |
Output a dwarf operand and an optional assembler comment.
Referenced by addAnd(), addBReg(), addConstantFP(), addExpression(), addFBReg(), addMachineRegExpression(), addOpPiece(), addReg(), addShr(), addSignedConstant(), addStackValue(), addWasmLocation(), emitConstu(), emitLegacySExt(), emitLegacyZExt(), and finalizeEntryValue().
|
protectedpure virtual |
Emit a raw signed value.
Referenced by addBReg(), addExpression(), addFBReg(), and addSignedConstant().
|
protectedpure virtual |
Emit a raw unsigned value.
Referenced by addBReg(), addConstantFP(), addExpression(), addOpPiece(), addReg(), addWasmLocation(), emitConstu(), emitLegacySExt(), emitLegacyZExt(), and finalizeEntryValue().
|
protectedpure virtual |
Start emitting data to the temporary buffer.
The data stored in the temporary buffer can be committed to the main output using commitTemporaryBuffer().
Referenced by beginEntryValueExpression().
void DwarfExpression::finalize | ( | ) |
This needs to be called last to commit any pending changes.
Definition at line 705 of file DwarfExpression.cpp.
References addOpPiece(), assert(), DwarfRegs, SubRegisterOffsetInBits, and SubRegisterSizeInBits.
Referenced by llvm::DIEDwarfExpression::finalize(), and llvm::DebugLocEntry::finalize().
|
protected |
Finalize an entry value by emitting its size operand, and committing the DWARF block which has been emitted to the temporary buffer.
Definition at line 423 of file DwarfExpression.cpp.
References assert(), commitTemporaryBuffer(), disableTemporaryBuffer(), emitOp(), emitUnsigned(), getTemporaryBufferSize(), IsEmittingEntryValue, LocationFlags, LocationKind, SavedLocationKind, and Size.
Referenced by addMachineRegExpression().
unsigned DwarfExpression::getOrCreateBaseType | ( | unsigned | BitSize, |
dwarf::TypeKind | Encoding | ||
) |
Return the index of a base type with the given properties and create one if necessary.
Definition at line 454 of file DwarfExpression.cpp.
References I.
Referenced by addExpression().
|
protectedpure virtual |
Return the emitted size, in number of bytes, for the data stored in the temporary buffer.
Referenced by cancelEntryValue(), and finalizeEntryValue().
|
inline |
Definition at line 105 of file DwarfExpression.h.
References EntryValue, and LocationFlags.
Referenced by addMachineRegExpression().
|
protectedpure virtual |
Return whether the given machine register is the frame register in the current function.
Referenced by addMachineReg(), and addMachineRegExpression().
|
inline |
Definition at line 103 of file DwarfExpression.h.
References Implicit, and LocationKind.
Referenced by addConstantFP(), addExpression(), addSignedConstant(), and addUnsignedConstant().
|
inline |
Definition at line 107 of file DwarfExpression.h.
References Indirect, and LocationFlags.
Referenced by addMachineRegExpression().
|
inline |
Definition at line 99 of file DwarfExpression.h.
References LocationKind, and Memory.
Referenced by addExpression(), and addMachineRegExpression().
|
inline |
Definition at line 109 of file DwarfExpression.h.
References CallSiteParamValue, and LocationFlags.
Referenced by addExpression(), and addMachineRegExpression().
|
inline |
Definition at line 101 of file DwarfExpression.h.
References LocationKind.
Referenced by addBReg(), addExpression(), and addReg().
|
inline |
Definition at line 97 of file DwarfExpression.h.
References LocationKind, and Unknown.
Referenced by addConstantFP(), addReg(), addSignedConstant(), addUnsignedConstant(), and setMemoryLocationKind().
|
protected |
Add masking operations to stencil out a subregister.
add masking operations to stencil out a subregister.
Definition at line 697 of file DwarfExpression.cpp.
References addAnd(), addShr(), assert(), SubRegisterOffsetInBits, and SubRegisterSizeInBits.
Referenced by addMachineRegExpression().
|
inline |
Lock this down to become a call site parameter location.
Definition at line 254 of file DwarfExpression.h.
References CallSiteParamValue, and LocationFlags.
Referenced by llvm::DwarfCompileUnit::constructCallSiteParmEntryDIEs().
void DwarfExpression::setEntryValueFlags | ( | const MachineLocation & | Loc | ) |
Lock this down to become an entry value location.
Definition at line 392 of file DwarfExpression.cpp.
References EntryValue, Indirect, llvm::MachineLocation::isIndirect(), and LocationFlags.
Referenced by setLocation().
void DwarfExpression::setLocation | ( | const MachineLocation & | Loc, |
const DIExpression * | DIExpr | ||
) |
Set the location (Loc
) and DIExpression (DIExpr
) to describe.
Definition at line 398 of file DwarfExpression.cpp.
References llvm::DIExpression::isEntryValue(), llvm::MachineLocation::isIndirect(), setEntryValueFlags(), and setMemoryLocationKind().
Referenced by llvm::DwarfCompileUnit::addComplexAddress(), and llvm::DwarfDebug::emitDebugLocValue().
|
inline |
Lock this down to become a memory location description.
Definition at line 245 of file DwarfExpression.h.
References assert(), isUnknownLocation(), LocationKind, and Memory.
Referenced by llvm::DwarfCompileUnit::addAddress(), llvm::DwarfDebug::emitDebugLocValue(), and setLocation().
|
inlineprotected |
Push a DW_OP_piece / DW_OP_bit_piece for emitting later, if one is needed to represent a subregister.
Definition at line 116 of file DwarfExpression.h.
References assert(), OffsetInBits, SubRegisterOffsetInBits, and SubRegisterSizeInBits.
Referenced by addExpression(), and addMachineReg().
|
protected |
Definition at line 69 of file DwarfExpression.h.
|
protected |
The register location, if any.
Definition at line 72 of file DwarfExpression.h.
Referenced by addMachineReg(), addMachineRegExpression(), and finalize().
|
protected |
Definition at line 91 of file DwarfExpression.h.
Referenced by addExpression(), addMachineRegExpression(), and addStackValue().
|
protected |
Whether we are currently emitting an entry value operation.
Definition at line 67 of file DwarfExpression.h.
Referenced by addExpression(), addMachineRegExpression(), beginEntryValueExpression(), cancelEntryValue(), and finalizeEntryValue().
|
protected |
Definition at line 90 of file DwarfExpression.h.
Referenced by beginEntryValueExpression(), finalizeEntryValue(), isEntryValue(), isIndirect(), isParameterValue(), setCallSiteParamValueFlag(), and setEntryValueFlags().
|
protected |
Definition at line 88 of file DwarfExpression.h.
Referenced by addExpression(), addMachineRegExpression(), addReg(), addSignedConstant(), addUnsignedConstant(), addWasmLocation(), beginEntryValueExpression(), cancelEntryValue(), finalizeEntryValue(), isImplicitLocation(), isMemoryLocation(), isRegisterLocation(), isUnknownLocation(), and setMemoryLocationKind().
|
protected |
Current Fragment Offset in Bits.
Definition at line 75 of file DwarfExpression.h.
Referenced by addExpression(), addFragmentOffset(), addOpPiece(), and setSubRegisterPiece().
|
protected |
Definition at line 89 of file DwarfExpression.h.
Referenced by beginEntryValueExpression(), cancelEntryValue(), and finalizeEntryValue().
|
protected |
Definition at line 79 of file DwarfExpression.h.
Referenced by addExpression(), finalize(), maskSubRegister(), and setSubRegisterPiece().
|
protected |
Sometimes we need to add a DW_OP_bit_piece to describe a subregister.
Definition at line 78 of file DwarfExpression.h.
Referenced by addExpression(), addMachineRegExpression(), finalize(), maskSubRegister(), and setSubRegisterPiece().
std::optional<uint8_t> llvm::DwarfExpression::TagOffset |
Definition at line 111 of file DwarfExpression.h.
Referenced by llvm::DwarfCompileUnit::addAddress(), llvm::DwarfCompileUnit::addComplexAddress(), addExpression(), and llvm::DebugLocEntry::finalize().