LLVM  4.0.0
Public Member Functions | List of all members
llvm::DebugLocDwarfExpression Class Reference

DwarfExpression implementation for .debug_loc entries. More...

#include <DwarfExpression.h>

Inheritance diagram for llvm::DebugLocDwarfExpression:
[legend]
Collaboration diagram for llvm::DebugLocDwarfExpression:
[legend]

Public Member Functions

 DebugLocDwarfExpression (unsigned DwarfVersion, ByteStreamer &BS)
 
void EmitOp (uint8_t Op, const char *Comment=nullptr) override
 Output a dwarf operand and an optional assembler comment. More...
 
void EmitSigned (int64_t Value) override
 Emit a raw signed value. More...
 
void EmitUnsigned (uint64_t Value) override
 Emit a raw unsigned value. More...
 
bool isFrameRegister (const TargetRegisterInfo &TRI, unsigned MachineReg) override
 Return whether the given machine register is the frame register in the current function. More...
 
- Public Member Functions inherited from llvm::DwarfExpression
 DwarfExpression (unsigned DwarfVersion)
 
virtual ~DwarfExpression ()
 
void finalize ()
 This needs to be called last to commit any pending changes. More...
 
void AddReg (int DwarfReg, const char *Comment=nullptr)
 Emit a dwarf register operation. More...
 
void AddRegIndirect (int DwarfReg, int Offset, bool Deref=false)
 Emit an (double-)indirect dwarf register operation. More...
 
void AddOpPiece (unsigned SizeInBits, unsigned OffsetInBits=0)
 Emit a DW_OP_piece or DW_OP_bit_piece operation for a variable fragment. More...
 
void AddShr (unsigned ShiftBy)
 Emit a shift-right dwarf expression. More...
 
void AddStackValue ()
 Emit a DW_OP_stack_value, if supported. More...
 
bool AddMachineRegIndirect (const TargetRegisterInfo &TRI, unsigned MachineReg, int Offset=0)
 Emit an indirect dwarf register operation for the given machine register. More...
 
bool AddMachineReg (const TargetRegisterInfo &TRI, unsigned MachineReg, unsigned MaxSize=~1U)
 Emit a partial DWARF register operation. More...
 
void AddSignedConstant (int64_t Value)
 Emit a signed constant. More...
 
void AddUnsignedConstant (uint64_t Value)
 Emit an unsigned constant. More...
 
void AddUnsignedConstant (const APInt &Value)
 Emit an unsigned constant. More...
 
bool AddMachineRegExpression (const TargetRegisterInfo &TRI, DIExpressionCursor &Expr, unsigned MachineReg, unsigned FragmentOffsetInBits=0)
 Emit a machine register location. More...
 
void AddExpression (DIExpressionCursor &&Expr, unsigned FragmentOffsetInBits=0)
 Emit all remaining operations in the DIExpressionCursor. More...
 
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. More...
 

Additional Inherited Members

- 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. More...
 
- Protected Attributes inherited from llvm::DwarfExpression
unsigned DwarfVersion
 
uint64_t OffsetInBits = 0
 Current Fragment Offset in Bits. More...
 
unsigned SubRegisterSizeInBits = 0
 Sometimes we need to add a DW_OP_bit_piece to describe a subregister. More...
 
unsigned SubRegisterOffsetInBits = 0
 

Detailed Description

DwarfExpression implementation for .debug_loc entries.

Definition at line 201 of file DwarfExpression.h.

Constructor & Destructor Documentation

llvm::DebugLocDwarfExpression::DebugLocDwarfExpression ( unsigned  DwarfVersion,
ByteStreamer BS 
)
inline

Definition at line 205 of file DwarfExpression.h.

Member Function Documentation

void DebugLocDwarfExpression::EmitOp ( uint8_t  Op,
const char *  Comment = nullptr 
)
overridevirtual

Output a dwarf operand and an optional assembler comment.

Implements llvm::DwarfExpression.

Definition at line 130 of file DwarfDebug.cpp.

References llvm::ByteStreamer::EmitInt8(), and llvm::dwarf::OperationEncodingString().

void DebugLocDwarfExpression::EmitSigned ( int64_t  Value)
overridevirtual

Emit a raw signed value.

Implements llvm::DwarfExpression.

Definition at line 136 of file DwarfDebug.cpp.

References llvm::ByteStreamer::EmitSLEB128().

void DebugLocDwarfExpression::EmitUnsigned ( uint64_t  Value)
overridevirtual

Emit a raw unsigned value.

Implements llvm::DwarfExpression.

Definition at line 140 of file DwarfDebug.cpp.

References llvm::ByteStreamer::EmitULEB128().

bool DebugLocDwarfExpression::isFrameRegister ( const TargetRegisterInfo TRI,
unsigned  MachineReg 
)
overridevirtual

Return whether the given machine register is the frame register in the current function.

Implements llvm::DwarfExpression.

Definition at line 144 of file DwarfDebug.cpp.


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