14#ifndef LLVM_DEBUGINFO_LOGICALVIEW_READERS_LVDWARFREADER_H
15#define LLVM_DEBUGINFO_LOGICALVIEW_READERS_LVDWARFREADER_H
20#include <unordered_set>
23namespace logicalview {
27class LVScopeCompileUnit;
38 bool RangesDataAvailable =
false;
47 bool IncrementFileIndex =
false;
58 bool FoundLowPC =
false;
59 bool FoundHighPC =
false;
62 std::optional<LVAddress> TombstoneAddress;
65 using LVElementSet = std::unordered_set<LVElement *>;
66 struct LVElementEntry {
68 LVElementSet References;
70 LVElementEntry(
LVElement *Element =
nullptr) : Element(Element) {}
72 using LVElementReference = std::unordered_map<LVOffset, LVElementEntry>;
73 LVElementReference ElementTable;
87 void processLocationGaps();
91 if (GlobalOffsets.find(
Offset) == GlobalOffsets.end())
94 GlobalOffsets.emplace(
Offset,
nullptr);
107 bool CallSiteLocation =
false);
135 assert(TombstoneAddress &&
"Unset tombstone value");
136 return TombstoneAddress.value();
140 return SymbolsWithLocations;
148#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
mir Rename Register Operands
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
A structured debug information entry.
Utility class that carries the DWARF compile/type unit and the debug info entry in an object.
Lightweight error class with error context and mandatory checking.
StringRef - Represent a constant reference to a string, i.e.
LVDWARFReader(const LVDWARFReader &)=delete
LVAddress getTombstoneAddress() const
void setCUHighAddress(LVAddress Address)
void setTombstoneAddress(LVAddress Address)
void print(raw_ostream &OS) const
LVDWARFReader & operator=(const LVDWARFReader &)=delete
std::string getRegisterName(LVSmall Opcode, ArrayRef< uint64_t > Operands) override
void sortScopes() override
LVAddress getCUBaseAddress() const
void setCUBaseAddress(LVAddress Address)
LVAddress getCUHighAddress() const
LVDWARFReader(StringRef Filename, StringRef FileFormatName, object::ObjectFile &Obj, ScopedPrinter &W)
Error createScopes() override
const LVSymbols & GetSymbolsWithLocations() const
std::string FileFormatName
This class is the base class for all object file types.
This class implements an extremely fast bulk output stream that can only output to a stream.
std::map< LVOffset, LVElement * > LVOffsetElementMap
This is an optimization pass for GlobalISel generic memory operations.
LLVM_ABI raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.