14#ifndef LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVTYPE_H
15#define LLVM_DEBUGINFO_LOGICALVIEW_CORE_LVTYPE_H
20namespace logicalview {
52 enum class Property { IsSubrangeCount,
LastEntry };
96 const char *
kind()
const override;
102 bool isBase()
const override {
return getIsBase(); }
142#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
173 size_t ValueIndex = 0;
216 size_t ValueIndex = 0;
245 int64_t LowerBound = 0;
246 int64_t UpperBound = 0;
258 return getIsSubrangeCount() ? LowerBound : 0;
262 setIsSubrangeCount();
271 std::pair<unsigned, unsigned>
getBounds()
const override {
272 return {LowerBound, UpperBound};
Pass interface - Implemented by all 'passes'.
StringRef - Represent a constant reference to a string, i.e.
The instances of the Type class are immutable: once they are created, they are never changed.
LLVM Value Representation.
void setType(LVElement *Element=nullptr)
LVSubclassID getSubclassID() const
StringRef getString(size_t Index) const
size_t getIndex(StringRef Key)
~LVTypeDefinition()=default
void setUnderlyingType(LVElement *Element) override
bool equals(const LVType *Type) const override
LVTypeDefinition & operator=(const LVTypeDefinition &)=delete
void resolveExtra() override
LVTypeDefinition(const LVTypeDefinition &)=delete
void printExtra(raw_ostream &OS, bool Full=true) const override
LVElement * getUnderlyingType() override
size_t getValueIndex() const override
void setValue(StringRef Value) override
LVTypeEnumerator(const LVTypeEnumerator &)=delete
void printExtra(raw_ostream &OS, bool Full=true) const override
StringRef getValue() const override
~LVTypeEnumerator()=default
LVTypeEnumerator & operator=(const LVTypeEnumerator &)=delete
bool equals(const LVType *Type) const override
LVTypeImport(const LVTypeImport &)=delete
void printExtra(raw_ostream &OS, bool Full=true) const override
LVTypeImport & operator=(const LVTypeImport &)=delete
bool equals(const LVType *Type) const override
LVTypeParam(const LVTypeParam &)=delete
size_t getValueIndex() const override
void setValue(StringRef Value) override
void printExtra(raw_ostream &OS, bool Full=true) const override
void encodeTemplateArgument(std::string &Name) const override
bool equals(const LVType *Type) const override
LVTypeParam & operator=(const LVTypeParam &)=delete
StringRef getValue() const override
~LVTypeSubrange()=default
LVTypeSubrange & operator=(const LVTypeSubrange &)=delete
void resolveExtra() override
LVTypeSubrange(const LVTypeSubrange &)=delete
void setLowerBound(int64_t Value) override
void setUpperBound(int64_t Value) override
void setBounds(unsigned Lower, unsigned Upper) override
std::pair< unsigned, unsigned > getBounds() const override
int64_t getUpperBound() const override
void printExtra(raw_ostream &OS, bool Full=true) const override
void setCount(int64_t Value) override
int64_t getCount() const override
bool equals(const LVType *Type) const override
int64_t getLowerBound() const override
void resolveReferences() override
KIND(LVTypeKind, IsRvalueReference)
KIND(LVTypeKind, IsTemplateParam)
KIND_1(LVTypeKind, IsImportModule, IsImport)
KIND(LVTypeKind, IsEnumerator)
virtual ~LVType()=default
virtual bool equals(const LVType *Type) const
void report(LVComparePass Pass) override
KIND(LVTypeKind, IsUnspecified)
KIND(LVTypeKind, IsRestrict)
KIND(LVTypeKind, IsConst)
LVType(const LVType &)=delete
KIND(LVTypeKind, IsTypedef)
void printExtra(raw_ostream &OS, bool Full=true) const override
KIND(LVTypeKind, IsReference)
static bool parametersMatch(const LVTypes *References, const LVTypes *Targets)
static LVTypeDispatch & getDispatch()
KIND(LVTypeKind, IsPointer)
KIND_1(LVTypeKind, IsImportDeclaration, IsImport)
StringRef resolveReferencesChain()
PROPERTY(Property, IsSubrangeCount)
KIND(LVTypeKind, IsVolatile)
LVType & operator=(const LVType &)=delete
void resolveName() override
bool isBase() const override
KIND(LVTypeKind, IsModifier)
void dump() const override
KIND(LVTypeKind, IsImport)
virtual void encodeTemplateArgument(std::string &Name) const
const char * kind() const override
static void getParameters(const LVTypes *Types, LVTypes *TypesParam, LVScopes *ScopesParam)
virtual void setUnderlyingType(LVElement *Element)
KIND_1(LVTypeKind, IsTemplateTemplateParam, IsTemplateParam)
virtual LVElement * getUnderlyingType()
KIND(LVTypeKind, IsPointerMember)
KIND(LVTypeKind, IsUnaligned)
void print(raw_ostream &OS, bool Full=true) const override
bool isTemplateParam() const override
static void markMissingParents(const LVTypes *References, const LVTypes *Targets)
static bool classof(const LVElement *Element)
KIND(LVTypeKind, IsSubrange)
KIND_1(LVTypeKind, IsTemplateValueParam, IsTemplateParam)
KIND_1(LVTypeKind, IsTemplateTypeParam, IsTemplateParam)
This class implements an extremely fast bulk output stream that can only output to a stream.
LVStringPool & getStringPool()
std::set< LVTypeKind > LVTypeKindSelection
@ IsTemplateTemplateParam
std::map< LVTypeKind, LVTypeGetFunction > LVTypeDispatch
std::vector< LVTypeGetFunction > LVTypeRequest
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.