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)
142 :
Data(
Data), AddressSize(AddressSize), Format(Format) {
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;
Returns the sub type a function will return at a given Idx Should correspond to the result type of an ExtractValue instruction executed with just that one unsigned Idx
This file contains constants used for implementing Dwarf debug support.
mir Rename Register Operands
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
This class represents an Operation in the Expression.
@ DwarfNA
Serves as a marker for unused entries.
bool print(raw_ostream &OS, DIDumpOptions DumpOpts, const DWARFExpression *Expr, DWARFUnit *U) const
uint64_t getEndOffset() const
Encoding
Size and signedness of expression operations' operands.
@ SizeBlock
Preceding operand contains block size.
@ SizeNA
Unused operands get this encoding.
const Description & getDescription() const
uint64_t getOperandEndOffset(unsigned Idx) const
uint64_t getRawOperand(unsigned Idx) const
An iterator to go through the expression operations.
const Operation & operator*() const
friend bool operator==(const iterator &, const iterator &)
iterator skipBytes(uint64_t Add) const
StringRef getData() const
static bool prettyPrintRegisterOp(DWARFUnit *U, raw_ostream &OS, DIDumpOptions DumpOpts, uint8_t Opcode, const uint64_t Operands[2])
DWARFExpression(DataExtractor Data, uint8_t AddressSize, std::optional< dwarf::DwarfFormat > Format=std::nullopt)
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...
bool operator==(const DWARFExpression &RHS) const
void print(raw_ostream &OS, DIDumpOptions DumpOpts, DWARFUnit *U, bool IsEH=false) const
Lightweight error class with error context and mandatory checking.
StringRef - Represent a constant reference to a string, i.e.
constexpr size_t size() const
size - Get the string size.
CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.
bool operator==(const AddressRangeValuePair &LHS, const AddressRangeValuePair &RHS)
Container for dump options that control which debug information will be dumped.
Description of the encoding of one expression Op.
DwarfVersion Version
Dwarf version where the Op was introduced.
Description(DwarfVersion Version=DwarfNA, Encoding Op1=SizeNA, Encoding Op2=SizeNA)
Encoding Op[2]
Encoding for Op operands, or SizeNA.