10 #ifndef LLVM_LIB_CODEGEN_ASMPRINTER_DEBUGLOCENTRY_H 11 #define LLVM_LIB_CODEGEN_ASMPRINTER_DEBUGLOCENTRY_H 14 #include "llvm/Config/llvm-config.h" 48 assert(cast<DIExpression>(Expr)->isValid());
80 #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) 121 if ((End == Next.Begin && Values == Next.Values)) {
136 }) &&
"value must be a piece");
bool MergeRanges(const DebugLocEntry &Next)
Attempt to merge this DebugLocEntry with Next and return true if the merge was successful.
ArrayRef< Value > getValues() const
Builder for DebugLocStream lists.
friend bool operator==(const Value &, const Value &)
Compare two Values for equality.
This struct describes location entries emitted in the .debug_loc section.
This class represents lattice values for constants.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
void push_back(const T &Elt)
Value(const DIExpression *Expr, int64_t i)
const DIExpression * Expression
Any complex address location expression for this Value.
Value(const DIExpression *Expr, const ConstantFP *CFP)
bool all_of(R &&range, UnaryPredicate P)
Provide wrappers to std::all_of which take ranges instead of having to pass begin/end explicitly...
EntryType
Type of entry that this represents.
void dump() const
Support for debugging, callable in GDB: V->dump()
const MCSymbol * getBeginSym() const
DebugLocEntry(const MCSymbol *B, const MCSymbol *E, Value Val)
Value(const DIExpression *Expr, const ConstantInt *CIP)
union llvm::DebugLocEntry::Value::@339 Constant
Either a constant,.
bool isConstantFP() const
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory)...
bool MergeValues(const DebugLocEntry &Next)
If this and Next are describing different pieces of the same variable, merge them by appending Next's...
static Optional< FragmentInfo > getFragmentInfo(expr_op_iterator Start, expr_op_iterator End)
Retrieve the details of this fragment expression.
Value(const DIExpression *Expr, MachineLocation Loc)
friend bool operator<(const Value &, const Value &)
Compare two fragments based on their offset.
static GCRegistry::Add< OcamlGC > B("ocaml", "ocaml 3.10-compatible GC")
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
This is an important base class in LLVM.
const DIExpression * getExpression() const
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator begin()
This file contains the declarations for the subclasses of Constant, which represent the different fla...
ConstantFP - Floating Point Values [float, double].
This class is intended to be used as a driving class for all asm writers.
const ConstantInt * getConstantInt() const
LLVM_DUMP_METHOD void dump() const
iterator erase(const_iterator CI)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
void sort(IteratorTy Start, IteratorTy End)
bool isConstantInt() const
This is the shared class of boolean and integer constants.
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small...
const MCSymbol * getEndSym() const
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
void append(in_iter in_start, in_iter in_end)
Add the specified range to the end of the SmallVector.
A single location or constant.
void finalize(const AsmPrinter &AP, DebugLocStream::ListBuilder &List, const DIBasicType *BT)
Lower this entry into a DWARF expression.
LLVM_ATTRIBUTE_ALWAYS_INLINE iterator end()
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
MachineLocation getLoc() const
bool isFragment() const
Return whether this is a piece of an aggregate variable.
void addValues(ArrayRef< DebugLocEntry::Value > Vals)
const ConstantFP * getConstantFP() const
Basic type, like 'int' or 'float'.