LLVM 20.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::Record Class Reference

#include "llvm/TableGen/Record.h"

Classes

struct  AssertionInfo
 
struct  DumpInfo
 

Public Types

enum  RecordKind { RK_Def , RK_AnonymousDef , RK_Class , RK_MultiClass }
 

Public Member Functions

 Record (const Init *N, ArrayRef< SMLoc > locs, RecordKeeper &records, RecordKind Kind=RK_Def)
 
 Record (StringRef N, ArrayRef< SMLoc > locs, RecordKeeper &records, RecordKind Kind=RK_Def)
 
 Record (const Record &O)
 
unsigned getID () const
 
StringRef getName () const
 
const InitgetNameInit () const
 
std::string getNameInitAsString () const
 
void setName (const Init *Name)
 
ArrayRef< SMLocgetLoc () const
 
void appendLoc (SMLoc Loc)
 
ArrayRef< SMLocgetForwardDeclarationLocs () const
 
void appendReferenceLoc (SMRange Loc) const
 Add a reference to this record value.
 
ArrayRef< SMRangegetReferenceLocs () const
 Return the references of this record value.
 
void updateClassLoc (SMLoc Loc)
 
const RecordRecTygetType () const
 
DefInitgetDefInit () const
 get the corresponding DefInit.
 
bool isClass () const
 
bool isMultiClass () const
 
bool isAnonymous () const
 
ArrayRef< const Init * > getTemplateArgs () const
 
ArrayRef< RecordValgetValues () const
 
ArrayRef< AssertionInfogetAssertions () const
 
ArrayRef< DumpInfogetDumps () const
 
ArrayRef< std::pair< const Record *, SMRange > > getSuperClasses () const
 
bool hasDirectSuperClass (const Record *SuperClass) const
 Determine whether this record has the specified direct superclass.
 
void getDirectSuperClasses (SmallVectorImpl< const Record * > &Classes) const
 Append the direct superclasses of this record to Classes.
 
bool isTemplateArg (const Init *Name) const
 
const RecordValgetValue (const Init *Name) const
 
const RecordValgetValue (StringRef Name) const
 
RecordValgetValue (const Init *Name)
 
RecordValgetValue (StringRef Name)
 
void addTemplateArg (const Init *Name)
 
void addValue (const RecordVal &RV)
 
void removeValue (const Init *Name)
 
void removeValue (StringRef Name)
 
void addAssertion (SMLoc Loc, const Init *Condition, const Init *Message)
 
void addDump (SMLoc Loc, const Init *Message)
 
void appendAssertions (const Record *Rec)
 
void appendDumps (const Record *Rec)
 
void checkRecordAssertions ()
 
void emitRecordDumps ()
 
void checkUnusedTemplateArgs ()
 
bool isSubClassOf (const Record *R) const
 
bool isSubClassOf (StringRef Name) const
 
void addSuperClass (const Record *R, SMRange Range)
 
void resolveReferences (const Init *NewName=nullptr)
 If there are any field references that refer to fields that have been filled in, we can propagate the values now.
 
void resolveReferences (Resolver &R, const RecordVal *SkipVal=nullptr)
 Apply the resolver to the name of the record as well as to the initializers of all fields of the record except SkipVal.
 
RecordKeepergetRecords () const
 
void dump () const
 
SMLoc getFieldLoc (StringRef FieldName) const
 Return the source location for the named field.
 
const InitgetValueInit (StringRef FieldName) const
 Return the initializer for a value with the specified name, or throw an exception if the field does not exist.
 
bool isValueUnset (StringRef FieldName) const
 Return true if the named field is unset.
 
StringRef getValueAsString (StringRef FieldName) const
 This method looks up the specified field and returns its value as a string, throwing an exception if the field does not exist or if the value is not a string.
 
std::optional< StringRefgetValueAsOptionalString (StringRef FieldName) const
 This method looks up the specified field and returns its value as a string, throwing an exception if the value is not a string and std::nullopt if the field does not exist.
 
const BitsInitgetValueAsBitsInit (StringRef FieldName) const
 This method looks up the specified field and returns its value as a BitsInit, throwing an exception if the field does not exist or if the value is not the right type.
 
const ListInitgetValueAsListInit (StringRef FieldName) const
 This method looks up the specified field and returns its value as a ListInit, throwing an exception if the field does not exist or if the value is not the right type.
 
std::vector< const Record * > getValueAsListOfDefs (StringRef FieldName) const
 This method looks up the specified field and returns its value as a vector of records, throwing an exception if the field does not exist or if the value is not the right type.
 
std::vector< int64_t > getValueAsListOfInts (StringRef FieldName) const
 This method looks up the specified field and returns its value as a vector of integers, throwing an exception if the field does not exist or if the value is not the right type.
 
std::vector< StringRefgetValueAsListOfStrings (StringRef FieldName) const
 This method looks up the specified field and returns its value as a vector of strings, throwing an exception if the field does not exist or if the value is not the right type.
 
const RecordgetValueAsDef (StringRef FieldName) const
 This method looks up the specified field and returns its value as a Record, throwing an exception if the field does not exist or if the value is not the right type.
 
const RecordgetValueAsOptionalDef (StringRef FieldName) const
 This method looks up the specified field and returns its value as a Record, returning null if the field exists but is "uninitialized" (i.e.
 
bool getValueAsBit (StringRef FieldName) const
 This method looks up the specified field and returns its value as a bit, throwing an exception if the field does not exist or if the value is not the right type.
 
bool getValueAsBitOrUnset (StringRef FieldName, bool &Unset) const
 This method looks up the specified field and returns its value as a bit.
 
int64_t getValueAsInt (StringRef FieldName) const
 This method looks up the specified field and returns its value as an int64_t, throwing an exception if the field does not exist or if the value is not the right type.
 
const DagInitgetValueAsDag (StringRef FieldName) const
 This method looks up the specified field and returns its value as an Dag, throwing an exception if the field does not exist or if the value is not the right type.
 

Static Public Member Functions

static unsigned getNewUID (RecordKeeper &RK)
 

Detailed Description

Definition at line 1650 of file Record.h.

Member Enumeration Documentation

◆ RecordKind

Enumerator
RK_Def 
RK_AnonymousDef 
RK_Class 
RK_MultiClass 

Definition at line 1672 of file Record.h.

Constructor & Destructor Documentation

◆ Record() [1/3]

llvm::Record::Record ( const Init N,
ArrayRef< SMLoc locs,
RecordKeeper records,
RecordKind  Kind = RK_Def 
)
inlineexplicit

Definition at line 1706 of file Record.h.

◆ Record() [2/3]

llvm::Record::Record ( StringRef  N,
ArrayRef< SMLoc locs,
RecordKeeper records,
RecordKind  Kind = RK_Def 
)
inlineexplicit

Definition at line 1713 of file Record.h.

◆ Record() [3/3]

llvm::Record::Record ( const Record O)
inline

Definition at line 1720 of file Record.h.

Member Function Documentation

◆ addAssertion()

void llvm::Record::addAssertion ( SMLoc  Loc,
const Init Condition,
const Init Message 
)
inline

Definition at line 1832 of file Record.h.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

◆ addDump()

void llvm::Record::addDump ( SMLoc  Loc,
const Init Message 
)
inline

Definition at line 1836 of file Record.h.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

◆ addSuperClass()

void llvm::Record::addSuperClass ( const Record R,
SMRange  Range 
)
inline

◆ addTemplateArg()

void llvm::Record::addTemplateArg ( const Init Name)
inline

Definition at line 1809 of file Record.h.

References assert(), and isTemplateArg().

◆ addValue()

void llvm::Record::addValue ( const RecordVal RV)
inline

◆ appendAssertions()

void llvm::Record::appendAssertions ( const Record Rec)
inline

Definition at line 1840 of file Record.h.

References llvm::SmallVectorImpl< T >::append().

◆ appendDumps()

void llvm::Record::appendDumps ( const Record Rec)
inline

Definition at line 1844 of file Record.h.

References llvm::SmallVectorImpl< T >::append().

◆ appendLoc()

void llvm::Record::appendLoc ( SMLoc  Loc)
inline

Definition at line 1741 of file Record.h.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

◆ appendReferenceLoc()

void llvm::Record::appendReferenceLoc ( SMRange  Loc) const
inline

Add a reference to this record value.

Definition at line 1748 of file Record.h.

References llvm::SmallVectorTemplateBase< T, bool >::push_back().

◆ checkRecordAssertions()

void Record::checkRecordAssertions ( )

◆ checkUnusedTemplateArgs()

void Record::checkUnusedTemplateArgs ( )

◆ dump()

LLVM_DUMP_METHOD void Record::dump ( ) const

Definition at line 2990 of file Record.cpp.

References llvm::errs().

Referenced by llvm::MultiClass::dump().

◆ emitRecordDumps()

void Record::emitRecordDumps ( )

Definition at line 3244 of file Record.cpp.

References llvm::dumpMessage(), and getDumps().

◆ getAssertions()

ArrayRef< AssertionInfo > llvm::Record::getAssertions ( ) const
inline

Definition at line 1772 of file Record.h.

Referenced by checkRecordAssertions().

◆ getDefInit()

DefInit * Record::getDefInit ( ) const

get the corresponding DefInit.

Definition at line 2881 of file Record.cpp.

References llvm::detail::RecordKeeperImpl::Allocator, and llvm::RecordKeeper::getImpl().

Referenced by llvm::TernOpInit::Fold().

◆ getDirectSuperClasses()

void Record::getDirectSuperClasses ( SmallVectorImpl< const Record * > &  Classes) const

Append the direct superclasses of this record to Classes.

Definition at line 2927 of file Record.cpp.

References llvm::ArrayRef< T >::back(), llvm::ArrayRef< T >::drop_back(), llvm::ArrayRef< T >::empty(), getSuperClasses(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().

Referenced by getType().

◆ getDumps()

ArrayRef< DumpInfo > llvm::Record::getDumps ( ) const
inline

Definition at line 1773 of file Record.h.

Referenced by emitRecordDumps().

◆ getFieldLoc()

SMLoc Record::getFieldLoc ( StringRef  FieldName) const

Return the source location for the named field.

Definition at line 3029 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

◆ getForwardDeclarationLocs()

ArrayRef< SMLoc > llvm::Record::getForwardDeclarationLocs ( ) const
inline

Definition at line 1743 of file Record.h.

◆ getID()

unsigned llvm::Record::getID ( ) const
inline

Definition at line 1728 of file Record.h.

◆ getLoc()

ArrayRef< SMLoc > llvm::Record::getLoc ( ) const
inline

◆ getName()

StringRef llvm::Record::getName ( ) const
inline

◆ getNameInit()

const Init * llvm::Record::getNameInit ( ) const
inline

◆ getNameInitAsString()

std::string llvm::Record::getNameInitAsString ( ) const
inline

◆ getNewUID()

unsigned Record::getNewUID ( RecordKeeper RK)
static

◆ getRecords()

RecordKeeper & llvm::Record::getRecords ( ) const
inline

Definition at line 1890 of file Record.h.

Referenced by getValue(), QualifiedNameOfImplicitName(), QualifyName(), and removeValue().

◆ getReferenceLocs()

ArrayRef< SMRange > llvm::Record::getReferenceLocs ( ) const
inline

Return the references of this record value.

Definition at line 1751 of file Record.h.

◆ getSuperClasses()

ArrayRef< std::pair< const Record *, SMRange > > llvm::Record::getSuperClasses ( ) const
inline

Definition at line 1775 of file Record.h.

Referenced by getDirectSuperClasses(), and hasDirectSuperClass().

◆ getTemplateArgs()

ArrayRef< const Init * > llvm::Record::getTemplateArgs ( ) const
inline

Definition at line 1768 of file Record.h.

Referenced by checkUnusedTemplateArgs().

◆ getType()

const RecordRecTy * Record::getType ( ) const

Definition at line 2875 of file Record.cpp.

References llvm::RecordRecTy::get(), and getDirectSuperClasses().

Referenced by llvm::ExistsOpInit::Fold().

◆ getValue() [1/4]

RecordVal * llvm::Record::getValue ( const Init Name)
inline

Definition at line 1799 of file Record.h.

References getValue().

◆ getValue() [2/4]

const RecordVal * llvm::Record::getValue ( const Init Name) const
inline

◆ getValue() [3/4]

RecordVal * llvm::Record::getValue ( StringRef  Name)
inline

Definition at line 1804 of file Record.h.

References getValue().

◆ getValue() [4/4]

const RecordVal * llvm::Record::getValue ( StringRef  Name) const
inline

Definition at line 1795 of file Record.h.

References llvm::StringInit::get(), getRecords(), and getValue().

◆ getValueAsBit()

bool Record::getValueAsBit ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a bit, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3180 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

Referenced by llvm::DirectiveLanguage::hasEnableBitmaskEnumInNamespace(), llvm::DirectiveLanguage::hasMakeEnumAvailableInNamespace(), and llvm::BaseRecord::isDefault().

◆ getValueAsBitOrUnset()

bool Record::getValueAsBitOrUnset ( StringRef  FieldName,
bool Unset 
) const

This method looks up the specified field and returns its value as a bit.

If the field is unset, sets Unset to true and returns false.

Definition at line 3192 of file Record.cpp.

References getLoc(), getName(), getValue(), llvm::PrintFatalError(), and llvm::StringRef::str().

◆ getValueAsBitsInit()

const BitsInit * Record::getValueAsBitsInit ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a BitsInit, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3069 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

◆ getValueAsDag()

const DagInit * Record::getValueAsDag ( StringRef  FieldName) const

This method looks up the specified field and returns its value as an Dag, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3209 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

◆ getValueAsDef()

const Record * Record::getValueAsDef ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a Record, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3154 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

Referenced by llvm::Directive::getAssociation(), and llvm::Directive::getCategory().

◆ getValueAsInt()

int64_t Record::getValueAsInt ( StringRef  FieldName) const

This method looks up the specified field and returns its value as an int64_t, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3108 of file Record.cpp.

References getLoc(), getName(), getValue(), II, and llvm::PrintFatalError().

Referenced by llvm::LessRecordRegister::operator()().

◆ getValueAsListInit()

const ListInit * Record::getValueAsListInit ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a ListInit, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3081 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

Referenced by getValueAsListOfDefs(), getValueAsListOfInts(), and getValueAsListOfStrings().

◆ getValueAsListOfDefs()

std::vector< const Record * > Record::getValueAsListOfDefs ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a vector of records, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3094 of file Record.cpp.

References getLoc(), getName(), getValueAsListInit(), I, llvm::List, and llvm::PrintFatalError().

Referenced by llvm::Directive::getAllowedClauses(), llvm::Directive::getAllowedExclusiveClauses(), llvm::Directive::getAllowedOnceClauses(), llvm::Directive::getLeafConstructs(), and llvm::Directive::getRequiredClauses().

◆ getValueAsListOfInts()

std::vector< int64_t > Record::getValueAsListOfInts ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a vector of integers, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3123 of file Record.cpp.

References getLoc(), getName(), getValueAsListInit(), I, II, llvm::List, and llvm::PrintFatalError().

◆ getValueAsListOfStrings()

std::vector< StringRef > Record::getValueAsListOfStrings ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a vector of strings, throwing an exception if the field does not exist or if the value is not the right type.

Definition at line 3139 of file Record.cpp.

References getLoc(), getName(), getValueAsListInit(), I, llvm::List, and llvm::PrintFatalError().

◆ getValueAsOptionalDef()

const Record * Record::getValueAsOptionalDef ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a Record, returning null if the field exists but is "uninitialized" (i.e.

set to ?), and throwing an exception if the field does not exist or if its value is not the right type.

Definition at line 3166 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

◆ getValueAsOptionalString()

std::optional< StringRef > Record::getValueAsOptionalString ( StringRef  FieldName) const

This method looks up the specified field and returns its value as a string, throwing an exception if the value is not a string and std::nullopt if the field does not exist.

Definition at line 3054 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

Referenced by getValueAsString().

◆ getValueAsString()

StringRef Record::getValueAsString ( StringRef  FieldName) const

◆ getValueInit()

const Init * Record::getValueInit ( StringRef  FieldName) const

Return the initializer for a value with the specified name, or throw an exception if the field does not exist.

Definition at line 3037 of file Record.cpp.

References getLoc(), getName(), getValue(), and llvm::PrintFatalError().

Referenced by isValueUnset().

◆ getValues()

ArrayRef< RecordVal > llvm::Record::getValues ( ) const
inline

Definition at line 1770 of file Record.h.

◆ hasDirectSuperClass()

bool Record::hasDirectSuperClass ( const Record SuperClass) const

Determine whether this record has the specified direct superclass.

Definition at line 2914 of file Record.cpp.

References getSuperClasses(), I, and llvm::ArrayRef< T >::size().

◆ isAnonymous()

bool llvm::Record::isAnonymous ( ) const
inline

Definition at line 1766 of file Record.h.

References RK_AnonymousDef.

◆ isClass()

bool llvm::Record::isClass ( ) const
inline

Definition at line 1762 of file Record.h.

References RK_Class.

Referenced by llvm::TGVarScope::getVar().

◆ isMultiClass()

bool llvm::Record::isMultiClass ( ) const
inline

Definition at line 1764 of file Record.h.

References RK_MultiClass.

Referenced by QualifyName().

◆ isSubClassOf() [1/2]

bool llvm::Record::isSubClassOf ( const Record R) const
inline

Definition at line 1850 of file Record.h.

References _.

Referenced by addSuperClass(), and llvm::RecordRecTy::isSubClassOf().

◆ isSubClassOf() [2/2]

bool llvm::Record::isSubClassOf ( StringRef  Name) const
inline

Definition at line 1857 of file Record.h.

References _.

◆ isTemplateArg()

bool llvm::Record::isTemplateArg ( const Init Name) const
inline

Definition at line 1785 of file Record.h.

References llvm::is_contained().

Referenced by addTemplateArg(), and llvm::TGVarScope::getVar().

◆ isValueUnset()

bool llvm::Record::isValueUnset ( StringRef  FieldName) const
inline

Return true if the named field is unset.

Definition at line 1908 of file Record.h.

References getValueInit().

◆ removeValue() [1/2]

void llvm::Record::removeValue ( const Init Name)
inline

◆ removeValue() [2/2]

void llvm::Record::removeValue ( StringRef  Name)
inline

Definition at line 1828 of file Record.h.

References llvm::StringInit::get(), getRecords(), and removeValue().

◆ resolveReferences() [1/2]

void Record::resolveReferences ( const Init NewName = nullptr)

If there are any field references that refer to fields that have been filled in, we can propagate the values now.

This is a final resolve: any error messages, e.g. due to undefined !cast references, are generated now.

Definition at line 2982 of file Record.cpp.

References resolveReferences().

Referenced by resolveReferences().

◆ resolveReferences() [2/2]

void Record::resolveReferences ( Resolver R,
const RecordVal SkipVal = nullptr 
)

Apply the resolver to the name of the record as well as to the initializers of all fields of the record except SkipVal.

The resolver should not resolve any of the fields itself, to avoid recursion / infinite loops.

Definition at line 2938 of file Record.cpp.

References llvm::Init::getAsUnquotedString(), getLoc(), getNameInit(), llvm::Value::getType(), llvm::PrintFatalError(), llvm::Init::resolveReferences(), and setName().

◆ setName()

void Record::setName ( const Init Name)

Definition at line 2893 of file Record.cpp.

Referenced by resolveReferences().

◆ updateClassLoc()

void Record::updateClassLoc ( SMLoc  Loc)

Definition at line 2859 of file Record.cpp.

References assert().


The documentation for this class was generated from the following files: