|
LLVM 22.0.0git
|
DwarfExpression implementation for .debug_loc entries. More...
#include "CodeGen/AsmPrinter/DwarfExpression.h"
Public Member Functions | |
| DebugLocDwarfExpression (unsigned DwarfVersion, BufferByteStreamer &BS, DwarfCompileUnit &CU) | |
| Public Member Functions inherited from llvm::DwarfExpression | |
| 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 | addBooleanConstant (int64_t Value) |
| Emit a boolean constant. | |
| 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. | |
Additional Inherited Members | |
| Public Attributes inherited from llvm::DwarfExpression | |
| std::optional< uint8_t > | TagOffset |
| Protected Types inherited from llvm::DwarfExpression | |
| 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 inherited from llvm::DwarfExpression | |
| 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. | |
| void | emitConstu (uint64_t Value) |
| Emit a normalized unsigned constant. | |
| void | addReg (int64_t DwarfReg, const char *Comment=nullptr) |
| Emit a DW_OP_reg operation. | |
| void | addBReg (int64_t DwarfReg, int64_t Offset) |
| Emit a DW_OP_breg operation. | |
| void | addFBReg (int64_t 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 inherited from llvm::DwarfExpression | |
| 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 |
DwarfExpression implementation for .debug_loc entries.
Definition at line 309 of file DwarfExpression.h.
|
inline |
Definition at line 341 of file DwarfExpression.h.
References llvm::DwarfExpression::DwarfExpression(), and llvm::DwarfExpression::DwarfVersion.