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;
44 LVScope *CurrentScope =
nullptr;
46 LVType *CurrentType =
nullptr;
53 bool IncrementFileIndex =
false;
56 std::vector<LVAddressRange> CurrentRanges;
67 bool FoundLowPC =
false;
68 bool FoundHighPC =
false;
71 using LVElementSet = std::unordered_set<LVElement *>;
72 struct LVElementEntry {
74 LVElementSet References;
76 LVElementEntry(
LVElement *Element =
nullptr) : Element(Element) {}
78 using LVElementReference = std::unordered_map<LVOffset, LVElementEntry>;
79 LVElementReference ElementTable;
94 void processLocationGaps();
98 if (GlobalOffsets.find(
Offset) == GlobalOffsets.end())
101 GlobalOffsets.emplace(
Offset,
nullptr);
106 LVOffsetElementMap::iterator Iter = GlobalOffsets.find(
Offset);
107 if (Iter != GlobalOffsets.end())
108 GlobalOffsets.erase(Iter);
118 bool CallSiteLocation =
false);
145 return SymbolsWithLocations;
153#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
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
void setCUHighAddress(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.
raw_ostream & dbgs()
dbgs() - This returns a reference to a raw_ostream for debugging messages.