14#ifndef LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVOBJECT_H
15#define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVOBJECT_H
33namespace logicalview {
109 enum class Property {
141 } TagAttrOpcode = {dwarf::DW_TAG_null};
149 } Parent = {
nullptr};
160 Properties = Object.Properties;
161 Offset = Object.Offset;
162 LineNumber = Object.LineNumber;
163 ScopeLevel = Object.ScopeLevel;
164 TagAttrOpcode = Object.TagAttrOpcode;
165 Parent = Object.Parent;
184 bool ShowZero)
const;
224 virtual bool isNamed()
const {
return false; }
225 virtual bool isTyped()
const {
return false; }
226 virtual bool isFiled()
const {
return false; }
227 bool isLined()
const {
return LineNumber != 0; }
249 assert((!Parent.Element ||
static_cast<LVElement *
>(Parent.Element)) &&
251 return Parent.Element;
254 assert((!Parent.Scope ||
static_cast<LVScope *
>(Parent.Scope)) &&
259 assert((!Parent.Symbol ||
static_cast<LVSymbol *
>(Parent.Symbol)) &&
261 return Parent.Symbol;
275 virtual const char *
kind()
const {
return nullptr; }
299 bool Full =
true)
const;
303 bool UseQuotes =
false,
bool PrintRef =
false)
const;
314#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
static cl::opt< bool > PrintRef("print-ref", cl::ReallyHidden)
This file contains constants used for implementing Dwarf debug support.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
Lightweight error class with error context and mandatory checking.
StringRef - Represent a constant reference to a string, i.e.
LLVM Value Representation.
PROPERTY(Property, IsDiscarded)
virtual StringRef getName() const
std::string referenceAsString(uint32_t LineNumber, bool Spaces) const
virtual bool isFiled() const
PROPERTY(Property, IsAdded)
virtual LVAddress getUpperAddress() const
PROPERTY(Property, IsGeneratedName)
virtual Error doPrint(bool Split, bool Match, bool Print, raw_ostream &OS, bool Full=true) const
virtual const char * kind() const
LVObject & operator=(const LVObject &)=delete
LVScope * getParentScope() const
dwarf::Tag getTag() const
LVSmall getOpcode() const
PROPERTY(Property, IsMissing)
std::string lineAsString(uint32_t LineNumber, LVHalf Discriminator, bool ShowZero) const
virtual void setLowerAddress(LVAddress Address)
std::string indentAsString() const
virtual void print(raw_ostream &OS, bool Full=true) const
virtual void dump() const
void setLevel(LVLevel Level)
void printAttributes(raw_ostream &OS, bool Full=true) const
dwarf::Attribute getAttr() const
virtual std::string lineNumberAsString(bool ShowZero=false) const
virtual void setName(StringRef ObjectName)
void setOpcode(LVSmall Opcode)
PROPERTY(Property, IsLineFromReference)
virtual void printExtra(raw_ostream &OS, bool Full=true) const
PROPERTY(Property, IsMissingLink)
virtual bool isNamed() const
virtual bool isTyped() const
PROPERTY(Property, IsReferenced)
void setParent(LVScope *Scope)
PROPERTY(Property, HasMoved)
PROPERTY(Property, IsResolvedName)
void setAttr(dwarf::Attribute Attr)
PROPERTY(Property, IsLocation)
virtual ~LVObject()=default
virtual void printFileIndex(raw_ostream &OS, bool Full=true) const
PROPERTY(Property, IsMatched)
PROPERTY(Property, HasPattern)
LVSymbol * getParentSymbol() const
void markBranchAsMissing()
uint32_t getLineNumber() const
virtual std::string noLineAsString(bool ShowZero) const
PROPERTY(Property, IsResolved)
void setOffset(LVOffset DieOffset)
LVOffset getOffset() const
PROPERTY(Property, IsFinalized)
PROPERTY(Property, HasCodeViewLocation)
void setLineNumber(uint32_t Number)
LVElement * getParent() const
void setTag(dwarf::Tag Tag)
PROPERTY(Property, IsFileFromReference)
PROPERTY(Property, IsInCompare)
PROPERTY(Property, IsOptimized)
std::string lineNumberAsStringStripped(bool ShowZero=false) const
virtual void setUpperAddress(LVAddress Address)
virtual LVAddress getLowerAddress() const
PROPERTY(Property, IsGlobalReference)
This class implements an extremely fast bulk output stream that can only output to a stream.
constexpr Tag DW_TAG_unaligned
bool(LVElement::*)() const LVElementGetFunction
bool(LVSymbol::*)() const LVSymbolGetFunction
void(LVType::*)() LVTypeSetFunction
bool(LVLine::*)() const LVLineGetFunction
const LVAddress MaxAddress
bool(LVObject::*)() const LVObjectGetFunction
bool(LVScope::*)() const LVScopeGetFunction
bool(LVLocation::*)() LVValidLocation
void(LVSymbol::*)() LVSymbolSetFunction
void(LVObject::*)() LVObjectSetFunction
void(LVLine::*)() LVLineSetFunction
bool(LVType::*)() const LVTypeGetFunction
void(LVScope::*)() LVScopeSetFunction
void(LVElement::*)() LVElementSetFunction
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.