| 
    LLVM 22.0.0git
    
   | 
 
DwarfExpression implementation for singular DW_AT_location. More...
#include "CodeGen/AsmPrinter/DwarfExpression.h"
Public Member Functions | |
| DIEDwarfExpression (const AsmPrinter &AP, DwarfCompileUnit &CU, DIELoc &DIE) | |
| DIELoc * | finalize () | 
| 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 singular DW_AT_location.
Definition at line 347 of file DwarfExpression.h.
| DIEDwarfExpression::DIEDwarfExpression | ( | const AsmPrinter & | AP, | 
| DwarfCompileUnit & | CU, | ||
| DIELoc & | DIE ) | 
Definition at line 41 of file DwarfUnit.cpp.
References llvm::DwarfExpression::DwarfExpression().
      
  | 
  inline | 
Definition at line 373 of file DwarfExpression.h.
References llvm::DwarfExpression::finalize().
Referenced by llvm::DwarfCompileUnit::addAddress(), llvm::DwarfCompileUnit::addComplexAddress(), llvm::DwarfCompileUnit::constructCallSiteParmEntryDIEs(), llvm::DwarfUnit::constructTypeDIE(), and llvm::DwarfCompileUnit::updateSubprogramScopeDIE().