LLVM 19.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | Friends | List of all members
llvm::DWARFExpression::Operation Class Reference

This class represents an Operation in the Expression. More...

#include "llvm/DebugInfo/DWARF/DWARFExpression.h"

Classes

struct  Description
 Description of the encoding of one expression Op. More...
 

Public Types

enum  Encoding : uint8_t {
  Size1 = 0 , Size2 = 1 , Size4 = 2 , Size8 = 3 ,
  SizeLEB = 4 , SizeAddr = 5 , SizeRefAddr = 6 , SizeBlock = 7 ,
  BaseTypeRef = 8 , SizeSubOpLEB = 9 , WasmLocationArg = 30 , SignBit = 0x80 ,
  SignedSize1 = SignBit | Size1 , SignedSize2 = SignBit | Size2 , SignedSize4 = SignBit | Size4 , SignedSize8 = SignBit | Size8 ,
  SignedSizeLEB = SignBit | SizeLEB
}
 Size and signedness of expression operations' operands. More...
 
enum  DwarfVersion : uint8_t {
  DwarfNA , Dwarf2 = 2 , Dwarf3 , Dwarf4 ,
  Dwarf5
}
 

Public Member Functions

const DescriptiongetDescription () const
 
uint8_t getCode () const
 
std::optional< unsignedgetSubCode () const
 
uint64_t getNumOperands () const
 
ArrayRef< uint64_tgetRawOperands () const
 
uint64_t getRawOperand (unsigned Idx) const
 
ArrayRef< uint64_tgetOperandEndOffsets () const
 
uint64_t getOperandEndOffset (unsigned Idx) const
 
uint64_t getEndOffset () const
 
bool isError () const
 
bool print (raw_ostream &OS, DIDumpOptions DumpOpts, const DWARFExpression *Expr, DWARFUnit *U) const
 

Static Public Member Functions

static bool verify (const Operation &Op, DWARFUnit *U)
 Verify Op. Does not affect the return of isError().
 

Friends

class DWARFExpression::iterator
 

Detailed Description

This class represents an Operation in the Expression.

An Operation can be in Error state (check with isError()). This means that it couldn't be decoded successfully and if it is the case, all others fields contain undefined values.

Definition at line 32 of file DWARFExpression.h.

Member Enumeration Documentation

◆ DwarfVersion

Enumerator
DwarfNA 

Serves as a marker for unused entries.

Dwarf2 
Dwarf3 
Dwarf4 
Dwarf5 

Definition at line 57 of file DWARFExpression.h.

◆ Encoding

Size and signedness of expression operations' operands.

Enumerator
Size1 
Size2 
Size4 
Size8 
SizeLEB 
SizeAddr 
SizeRefAddr 
SizeBlock 

Preceding operand contains block size.

BaseTypeRef 
SizeSubOpLEB 

The operand is a ULEB128 encoded SubOpcode.

This is only valid for the first operand of an operation.

WasmLocationArg 
SignBit 
SignedSize1 
SignedSize2 
SignedSize4 
SignedSize8 
SignedSizeLEB 

Definition at line 35 of file DWARFExpression.h.

Member Function Documentation

◆ getCode()

uint8_t llvm::DWARFExpression::Operation::getCode ( ) const
inline

◆ getDescription()

const Description & llvm::DWARFExpression::Operation::getDescription ( ) const
inline

◆ getEndOffset()

uint64_t llvm::DWARFExpression::Operation::getEndOffset ( ) const
inline

◆ getNumOperands()

uint64_t llvm::DWARFExpression::Operation::getNumOperands ( ) const
inline

Definition at line 90 of file DWARFExpression.h.

References Operands.

Referenced by buildFromShuffleMostly(), combinevXi1ConstantToInteger(), llvm::SelectionDAG::computeKnownBits(), llvm::SelectionDAG::ComputeNumSignBits(), emitIntrinsicWithCC(), emitIntrinsicWithCCAndChain(), llvm::AMDGPU::HSAMD::MetadataStreamerMsgPackV4::emitPrintf(), llvm::SITargetLowering::getAsmOperandConstVal(), llvm::omp::getDeviceKernels(), llvm::X86TargetLowering::getNegatedExpression(), getNVPTXMDNode(), getTestBitOperand(), llvm::SelectionDAG::isBaseWithConstantOffset(), llvm::SITargetLowering::isCanonicalized(), isConstantOrUndefBUILD_VECTOR(), IsElementEquivalent(), llvm::SelectionDAG::isGuaranteedNotToBeUndefOrPoison(), isScalarToVector(), isSimpleVIDSequence(), isSplatBV(), llvm::VETargetLowering::legalizePackedAVL(), LowerAVXCONCAT_VECTORS(), llvm::HexagonTargetLowering::LowerBUILD_VECTOR(), LowerBUILD_VECTORvXbf16(), LowerBUILD_VECTORvXi1(), lowerBuildVectorOfConstants(), lowerBuildVectorViaDominantValues(), llvm::AMDGPUTargetLowering::LowerCONCAT_VECTORS(), llvm::HexagonTargetLowering::LowerCONCAT_VECTORS(), LowerCONCAT_VECTORS(), LowerCONCAT_VECTORS_i1(), LowerCONCAT_VECTORSvXi1(), lowerDSPIntr(), llvm::SparcTargetLowering::LowerF128Op(), llvm::HexagonTargetLowering::LowerINLINEASM(), llvm::RISCVTargetLowering::LowerOperation(), llvm::LanaiTargetLowering::LowerSHL_PARTS(), lowerVectorIntrinsicScalars(), llvm::makeFollowupLoopID(), llvm::ISD::matchUnaryPredicateImpl(), llvm::X86InstrInfo::optimizeCompareInstr(), promoteVCIXScalar(), replaceBoolVectorBitcast(), llvm::TargetLowering::ShrinkDemandedOp(), llvm::TargetLowering::SimplifyDemandedBits(), llvm::TargetLowering::SimplifyDemandedVectorElts(), llvm::X86TargetLowering::SimplifyDemandedVectorEltsForTargetNode(), SplitStrictFPVectorOp(), SplitVectorOp(), splitVectorOp(), llvm::VETargetLowering::splitVectorOp(), SplitVPOp(), and llvm::UpgradeModuleFlags().

◆ getOperandEndOffset()

uint64_t llvm::DWARFExpression::Operation::getOperandEndOffset ( unsigned  Idx) const
inline

Definition at line 96 of file DWARFExpression.h.

References Idx.

Referenced by llvm::DwarfDebug::emitDebugLocEntry().

◆ getOperandEndOffsets()

ArrayRef< uint64_t > llvm::DWARFExpression::Operation::getOperandEndOffsets ( ) const
inline

Definition at line 93 of file DWARFExpression.h.

◆ getRawOperand()

uint64_t llvm::DWARFExpression::Operation::getRawOperand ( unsigned  Idx) const
inline

◆ getRawOperands()

ArrayRef< uint64_t > llvm::DWARFExpression::Operation::getRawOperands ( ) const
inline

Definition at line 91 of file DWARFExpression.h.

References Operands.

◆ getSubCode()

std::optional< unsigned > llvm::DWARFExpression::Operation::getSubCode ( ) const

◆ isError()

bool llvm::DWARFExpression::Operation::isError ( ) const
inline

◆ print()

bool llvm::DWARFExpression::Operation::print ( raw_ostream OS,
DIDumpOptions  DumpOpts,
const DWARFExpression Expr,
DWARFUnit U 
) const

◆ verify()

bool llvm::DWARFExpression::Operation::verify ( const Operation Op,
DWARFUnit U 
)
static

Verify Op. Does not affect the return of isError().

Definition at line 394 of file DWARFExpression.cpp.

References BaseTypeRef, llvm::DWARFExpression::Operation::Description::Op, llvm::SmallVectorBase< Size_T >::size(), and Size.

Referenced by llvm::DWARFExpression::verify().

Friends And Related Function Documentation

◆ DWARFExpression::iterator

friend class DWARFExpression::iterator
friend

Definition at line 78 of file DWARFExpression.h.


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