14#ifndef LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVSYMBOL_H
15#define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVSYMBOL_H
21namespace logicalview {
38 enum class Property { HasLocation, FillGaps,
LastEntry };
46 size_t LinkageNameIndex = 0;
57 size_t ValueIndex = 0;
60 unsigned CoverageFactor = 0;
61 float CoveragePercentage = 0;
94 const char *kind()
const override;
103 assert((!Element || isa<LVSymbol>(Element)) &&
"Invalid element");
104 setReference(
static_cast<LVSymbol *
>(Element));
133 bool CallSiteLocation =
false);
136 void fillLocationGaps();
140 bool RecordInvalid =
false);
141 void getLocations(
LVLocations &LocationList)
const;
144 void calculateCoverage();
152 void printLocations(
raw_ostream &
OS,
bool Full =
true)
const;
158 void resolveName()
override;
159 void resolveReferences()
override;
163 static bool parametersMatch(
const LVSymbols *References,
171 static void markMissingParents(
const LVSymbols *References,
175 bool equals(
const LVSymbol *Symbol)
const;
185 void printExtra(
raw_ostream &
OS,
bool Full =
true)
const override;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
static void print(raw_ostream &Out, object::Archive::Kind Kind, T Val)
mir Rename Register Operands
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
This is an important base class in LLVM.
Pass interface - Implemented by all 'passes'.
StringRef - Represent a constant reference to a string, i.e.
LLVM Value Representation.
LVSubclassID getSubclassID() const
StringRef getString(size_t Index) const
size_t getIndex(StringRef Key)
void setBitSize(uint32_t Size) override
LVSymbol & operator=(const LVSymbol &)=delete
void setCoveragePercentage(float Value)
size_t getLinkageNameIndex() const override
LVSymbol(const LVSymbol &)=delete
PROPERTY(Property, FillGaps)
KIND(LVSymbolKind, IsUnspecified)
KIND(LVSymbolKind, IsCallSiteParameter)
KIND(LVSymbolKind, IsConstant)
float getCoveragePercentage() const
KIND(LVSymbolKind, IsInheritance)
StringRef getLinkageName() const override
KIND(LVSymbolKind, IsMember)
static LVSymbolDispatch & getDispatch()
StringRef getValue() const override
void setLinkageName(StringRef LinkageName) override
KIND(LVSymbolKind, IsParameter)
void setReference(LVElement *Element) override
static bool classof(const LVElement *Element)
PROPERTY(Property, HasLocation)
uint32_t getBitSize() const override
void setReference(LVSymbol *Symbol) override
void setCoverageFactor(unsigned Value)
size_t getValueIndex() const override
LVSymbol * getReference() const
void setValue(StringRef Value) override
KIND(LVSymbolKind, IsVariable)
unsigned getCoverageFactor() const
This class implements an extremely fast bulk output stream that can only output to a stream.
std::vector< LVSymbolGetFunction > LVSymbolRequest
LLVM_ABI LVStringPool & getStringPool()
std::set< LVSymbolKind > LVSymbolKindSet
bool(LVLocation::*)() LVValidLocation
std::map< LVSymbolKind, LVSymbolGetFunction > LVSymbolDispatch
This is an optimization pass for GlobalISel generic memory operations.