Go to the documentation of this file.
9 #ifndef LLVM_DEBUGINFO_DWARF_DWARFEXPRESSION_H
10 #define LLVM_DEBUGINFO_DWARF_DWARFEXPRESSION_H
88 uint8_t
getCode()
const {
return Opcode; }
91 return OperandEndOffsets[Idx];
103 std::optional<dwarf::DwarfFormat>
Format);
118 !
Op.extract(Expr->Data, Expr->AddressSize,
Offset, Expr->Format);
126 !
Op.extract(Expr->Data, Expr->AddressSize,
Offset, Expr->Format);
141 std::optional<dwarf::DwarfFormat>
Format = std::nullopt)
143 assert(AddressSize == 8 || AddressSize == 4 || AddressSize == 2);
150 bool IsEH =
false)
const;
158 GetNameForDWARFReg =
nullptr);
173 std::optional<dwarf::DwarfFormat>
Format;
178 return LHS.Expr ==
RHS.Expr &&
LHS.Offset ==
RHS.Offset;
An iterator to go through the expression operations.
This is an optimization pass for GlobalISel generic memory operations.
DwarfVersion Version
Dwarf version where the Op was introduced.
DWARFExpression(DataExtractor Data, uint8_t AddressSize, std::optional< dwarf::DwarfFormat > Format=std::nullopt)
Description(DwarfVersion Version=DwarfNA, Encoding Op1=SizeNA, Encoding Op2=SizeNA)
static bool verify(const Operation &Op, DWARFUnit *U)
Verify Op. Does not affect the return of isError().
bool operator==(const DWARFExpression &RHS) const
const Operation & operator*() const
uint64_t getOperandEndOffset(unsigned Idx) const
static bool prettyPrintRegisterOp(DWARFUnit *U, raw_ostream &OS, DIDumpOptions DumpOpts, uint8_t Opcode, const uint64_t Operands[2])
Encoding
Size and signedness of expression operations' operands.
@ DwarfNA
Serves as a marker for unused entries.
@ SizeNA
Unused operands get this encoding.
const Description & getDescription() const
bool printCompact(raw_ostream &OS, std::function< StringRef(uint64_t RegNum, bool IsEH)> GetNameForDWARFReg=nullptr)
Print the expression in a format intended to be compact and useful to a user, but not perfectly unamb...
This class represents an Operation in the Expression.
bool print(raw_ostream &OS, DIDumpOptions DumpOpts, const DWARFExpression *Expr, DWARFUnit *U) const
This class implements an extremely fast bulk output stream that can only output to a stream.
friend bool operator==(const iterator &, const iterator &)
StringRef getData() const
mir Rename Register Operands
void print(raw_ostream &OS, DIDumpOptions DumpOpts, DWARFUnit *U, bool IsEH=false) const
CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...
Description of the encoding of one expression Op.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
iterator skipBytes(uint64_t Add) const
bool operator==(uint64_t V1, const APInt &V2)
print Print MemDeps of function
StringRef - Represent a constant reference to a string, i.e.
constexpr size_t size() const
size - Get the string size.
Encoding Op[2]
Encoding for Op operands, or SizeNA.
Lightweight error class with error context and mandatory checking.
uint64_t getRawOperand(unsigned Idx) const
uint64_t getEndOffset() const
bool verify(DWARFUnit *U)
Container for dump options that control which debug information will be dumped.
@ SizeBlock
Preceding operand contains block size.