10 #ifndef LLVM_LIB_CODEGEN_ASMPRINTER_DEBUGLOCENTRY_H
11 #define LLVM_LIB_CODEGEN_ASMPRINTER_DEBUGLOCENTRY_H
103 Values.push_back(std::move(Val));
118 if ((End == Next.Begin && Values == Next.Values)) {
129 Values.append(Vals.
begin(), Vals.
end());
133 }) &&
"value must be a piece");
139 std::sort(Values.begin(), Values.end());
142 Values.begin(), Values.end(), [](
const Value &
A,
const Value &
B) {
MachineLocation getLoc() const
bool MergeRanges(const DebugLocEntry &Next)
Attempt to merge this DebugLocEntry with Next and return true if the merge was successful.
const ConstantInt * getConstantInt() 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.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
const ConstantFP * getConstantFP() const
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.
ArrayRef< Value > getValues() const
const DIExpression * getExpression() const
DebugLocEntry(const MCSymbol *B, const MCSymbol *E, Value Val)
Value(const DIExpression *Expr, const ConstantInt *CIP)
const MCSymbol * getBeginSym() 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.
static GCRegistry::Add< OcamlGC > B("ocaml","ocaml 3.10-compatible GC")
Value(const DIExpression *Expr, MachineLocation Loc)
const MCSymbol * getEndSym() const
bool isFragment() const
Return whether this is a piece of an aggregate variable.
friend bool operator<(const Value &, const Value &)
Compare two fragments based on their offset.
static GCRegistry::Add< CoreCLRGC > E("coreclr","CoreCLR-compatible GC")
bool isConstantInt() const
This is an important base class in LLVM.
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.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
void dump() const
Support for debugging, callable in GDB: V->dump()
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...
INITIALIZE_PASS(HexagonGenMux,"hexagon-mux","Hexagon generate mux instructions", false, false) void HexagonGenMux I isValid()
union llvm::DebugLocEntry::Value::@246 Constant
Either a constant,.
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.
A single location or constant.
void finalize(const AsmPrinter &AP, DebugLocStream::ListBuilder &List, const DIBasicType *BT)
Lower this entry into a DWARF expression.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
bool operator<(int64_t V1, const APSInt &V2)
bool operator==(uint64_t V1, const APInt &V2)
bool isConstantFP() const
void addValues(ArrayRef< DebugLocEntry::Value > Vals)
static GCRegistry::Add< ErlangGC > A("erlang","erlang-compatible garbage collector")
Basic type, like 'int' or 'float'.