LLVM 20.0.0git
|
#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 (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 |
Init * | getNameInit () const |
std::string | getNameInitAsString () const |
void | setName (Init *Name) |
ArrayRef< SMLoc > | getLoc () const |
void | appendLoc (SMLoc Loc) |
ArrayRef< SMLoc > | getForwardDeclarationLocs () const |
void | appendReferenceLoc (SMRange Loc) |
Add a reference to this record value. | |
ArrayRef< SMRange > | getReferenceLocs () const |
Return the references of this record value. | |
void | updateClassLoc (SMLoc Loc) |
RecordRecTy * | getType () |
DefInit * | getDefInit () |
get the corresponding DefInit. | |
bool | isClass () const |
bool | isMultiClass () const |
bool | isAnonymous () const |
ArrayRef< Init * > | getTemplateArgs () const |
ArrayRef< RecordVal > | getValues () const |
ArrayRef< AssertionInfo > | getAssertions () const |
ArrayRef< DumpInfo > | getDumps () const |
ArrayRef< std::pair< Record *, SMRange > > | getSuperClasses () const |
bool | hasDirectSuperClass (const Record *SuperClass) const |
Determine whether this record has the specified direct superclass. | |
void | getDirectSuperClasses (SmallVectorImpl< Record * > &Classes) const |
Append the direct superclasses of this record to Classes. | |
bool | isTemplateArg (Init *Name) const |
const RecordVal * | getValue (const Init *Name) const |
const RecordVal * | getValue (StringRef Name) const |
RecordVal * | getValue (const Init *Name) |
RecordVal * | getValue (StringRef Name) |
void | addTemplateArg (Init *Name) |
void | addValue (const RecordVal &RV) |
void | removeValue (Init *Name) |
void | removeValue (StringRef Name) |
void | addAssertion (SMLoc Loc, Init *Condition, Init *Message) |
void | addDump (SMLoc Loc, 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 (Record *R, SMRange Range) |
void | resolveReferences (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. | |
RecordKeeper & | getRecords () const |
void | dump () const |
SMLoc | getFieldLoc (StringRef FieldName) const |
Return the source location for the named field. | |
Init * | getValueInit (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< StringRef > | 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. | |
BitsInit * | 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. | |
ListInit * | 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. | |
std::vector< 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< StringRef > | 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. | |
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. | |
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. | |
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. | |
DagInit * | 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. | |
Static Public Member Functions | |
static unsigned | getNewUID (RecordKeeper &RK) |
|
inlineexplicit |
|
inlineexplicit |
Definition at line 1815 of file Record.h.
References llvm::SmallVectorTemplateBase< T, bool >::push_back().
Definition at line 1819 of file Record.h.
References llvm::SmallVectorTemplateBase< T, bool >::push_back().
Definition at line 1852 of file Record.h.
References assert(), isSubClassOf(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and Range.
|
inline |
Definition at line 1792 of file Record.h.
References assert(), and isTemplateArg().
Definition at line 1797 of file Record.h.
References assert(), llvm::RecordVal::getNameInit(), getValue(), and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Definition at line 1823 of file Record.h.
References llvm::SmallVectorImpl< T >::append().
Definition at line 1827 of file Record.h.
References llvm::SmallVectorImpl< T >::append().
|
inline |
Definition at line 1724 of file Record.h.
References llvm::SmallVectorTemplateBase< T, bool >::push_back().
|
inline |
Add a reference to this record value.
Definition at line 1731 of file Record.h.
References llvm::SmallVectorTemplateBase< T, bool >::push_back().
void Record::checkRecordAssertions | ( | ) |
Definition at line 3125 of file Record.cpp.
References llvm::CheckAssert(), getAssertions(), and llvm::Init::resolveReferences().
void Record::checkUnusedTemplateArgs | ( | ) |
Definition at line 3147 of file Record.cpp.
References llvm::RecordVal::getLoc(), llvm::RecordVal::getName(), getTemplateArgs(), getValue(), llvm::RecordVal::isUsed(), and llvm::PrintWarning().
LLVM_DUMP_METHOD void Record::dump | ( | ) | const |
Definition at line 2890 of file Record.cpp.
References llvm::errs().
Referenced by llvm::MultiClass::dump().
void Record::emitRecordDumps | ( | ) |
Definition at line 3136 of file Record.cpp.
References llvm::dumpMessage(), and getDumps().
|
inline |
Definition at line 1757 of file Record.h.
Referenced by checkRecordAssertions().
DefInit * Record::getDefInit | ( | ) |
get the corresponding DefInit.
Definition at line 2782 of file Record.cpp.
References llvm::detail::RecordKeeperImpl::Allocator, and llvm::RecordKeeper::getImpl().
void Record::getDirectSuperClasses | ( | SmallVectorImpl< Record * > & | Classes | ) | const |
Append the direct superclasses of this record to Classes.
Definition at line 2828 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().
Definition at line 1758 of file Record.h.
Referenced by emitRecordDumps().
Return the source location for the named field.
Definition at line 2929 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
Definition at line 1723 of file Record.h.
Referenced by llvm::BinOpInit::Fold(), llvm::TernOpInit::Fold(), llvm::CondOpInit::Fold(), llvm::FieldInit::Fold(), llvm::UnOpInit::Fold(), getFieldLoc(), getValueAsBit(), getValueAsBitOrUnset(), getValueAsBitsInit(), getValueAsDag(), getValueAsDef(), getValueAsInt(), getValueAsListInit(), getValueAsListOfDefs(), getValueAsListOfInts(), getValueAsListOfStrings(), getValueAsOptionalDef(), getValueAsOptionalString(), getValueAsString(), getValueInit(), llvm::PrintError(), llvm::PrintFatalError(), llvm::PrintFatalNote(), and resolveReferences().
|
inline |
Definition at line 1711 of file Record.h.
Referenced by llvm::DefInit::getAsString(), getFieldLoc(), llvm::pdb::NativeTypeEnum::getName(), llvm::BaseRecord::getRecordName(), llvm::logicalview::getRecordName(), getValueAsBit(), getValueAsBitOrUnset(), getValueAsBitsInit(), getValueAsDag(), getValueAsDef(), getValueAsInt(), getValueAsListInit(), getValueAsListOfDefs(), getValueAsListOfInts(), getValueAsListOfStrings(), getValueAsOptionalDef(), getValueAsOptionalString(), getValueAsString(), getValueInit(), llvm::LessRecord::operator()(), and llvm::LessRecordRegister::operator()().
|
inline |
Definition at line 1713 of file Record.h.
Referenced by llvm::UnOpInit::Fold(), llvm::ExistsOpInit::Fold(), getNameInitAsString(), QualifyName(), removeValue(), and resolveReferences().
|
inline |
Definition at line 1717 of file Record.h.
References llvm::Init::getAsUnquotedString(), and getNameInit().
Referenced by llvm::CondOpInit::Fold(), and llvm::VarDefInit::getAsString().
|
static |
Definition at line 2790 of file Record.cpp.
References llvm::RecordKeeper::getImpl(), and llvm::detail::RecordKeeperImpl::LastRecordID.
|
inline |
Definition at line 1873 of file Record.h.
Referenced by getValue(), QualifiedNameOfImplicitName(), QualifyName(), and removeValue().
Definition at line 1760 of file Record.h.
Referenced by getDirectSuperClasses(), and hasDirectSuperClass().
Definition at line 1751 of file Record.h.
Referenced by checkUnusedTemplateArgs().
RecordRecTy * Record::getType | ( | ) |
Definition at line 2776 of file Record.cpp.
References llvm::RecordRecTy::get(), and getDirectSuperClasses().
Referenced by llvm::ExistsOpInit::Fold().
Definition at line 1784 of file Record.h.
References getValue().
Definition at line 1774 of file Record.h.
Referenced by addValue(), checkUnusedTemplateArgs(), getFieldLoc(), llvm::DefInit::getFieldType(), getValue(), getValueAsBit(), getValueAsBitOrUnset(), getValueAsBitsInit(), getValueAsDag(), getValueAsDef(), getValueAsInt(), getValueAsListInit(), getValueAsOptionalDef(), getValueAsOptionalString(), getValueInit(), and llvm::TGVarScope::getVar().
Definition at line 1788 of file Record.h.
References getValue().
Definition at line 1780 of file Record.h.
References llvm::StringInit::get(), getRecords(), and getValue().
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 3080 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
Referenced by llvm::DirectiveLanguage::hasEnableBitmaskEnumInNamespace(), llvm::DirectiveLanguage::hasMakeEnumAvailableInNamespace(), and llvm::BaseRecord::isDefault().
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 3092 of file Record.cpp.
References getLoc(), getName(), getValue(), llvm::PrintFatalError(), and llvm::StringRef::str().
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 2969 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
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 3109 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
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 3053 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
Referenced by llvm::Directive::getAssociation(), and llvm::Directive::getCategory().
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 3007 of file Record.cpp.
References getLoc(), getName(), getValue(), II, and llvm::PrintFatalError().
Referenced by llvm::LessRecordRegister::operator()().
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 2981 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
Referenced by getValueAsListOfDefs(), getValueAsListOfInts(), and getValueAsListOfStrings().
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 2994 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().
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 3022 of file Record.cpp.
References getLoc(), getName(), getValueAsListInit(), I, II, llvm::List, and llvm::PrintFatalError().
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 3038 of file Record.cpp.
References getLoc(), getName(), getValueAsListInit(), I, llvm::List, and llvm::PrintFatalError().
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 3065 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
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 2954 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
Referenced by getValueAsString().
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.
Definition at line 2945 of file Record.cpp.
References getLoc(), getName(), getValueAsOptionalString(), and llvm::PrintFatalError().
Referenced by llvm::BaseRecord::getAlternativeName(), llvm::Clause::getClangClass(), llvm::DirectiveLanguage::getClauseEnumSetClass(), llvm::DirectiveLanguage::getClausePrefix(), llvm::DirectiveLanguage::getCppNamespace(), llvm::DirectiveLanguage::getDirectivePrefix(), llvm::Clause::getFlangClass(), llvm::DirectiveLanguage::getFlangClauseBaseClass(), llvm::BaseRecord::getFormattedName(), llvm::Clause::getFormattedParserClassName(), llvm::DirectiveLanguage::getName(), llvm::BaseRecord::getName(), and llvm::LessRecordFieldName::operator()().
Return the initializer for a value with the specified name, or throw an exception if the field does not exist.
Definition at line 2937 of file Record.cpp.
References getLoc(), getName(), getValue(), and llvm::PrintFatalError().
Referenced by isValueUnset().
Determine whether this record has the specified direct superclass.
Definition at line 2815 of file Record.cpp.
References getSuperClasses(), I, and llvm::ArrayRef< T >::size().
|
inline |
Definition at line 1749 of file Record.h.
References RK_AnonymousDef.
|
inline |
Definition at line 1745 of file Record.h.
References RK_Class.
Referenced by llvm::TGVarScope::getVar().
|
inline |
Definition at line 1833 of file Record.h.
Referenced by addSuperClass(), and llvm::RecordRecTy::isSubClassOf().
Definition at line 1770 of file Record.h.
References llvm::is_contained().
Referenced by addTemplateArg(), and llvm::TGVarScope::getVar().
Return true if the named field is unset.
Definition at line 1891 of file Record.h.
References getValueInit().
|
inline |
Definition at line 1802 of file Record.h.
References llvm::SmallVectorTemplateCommon< T, typename >::begin(), llvm::SmallVectorImpl< T >::erase(), getNameInit(), llvm_unreachable, and llvm::SmallVectorBase< Size_T >::size().
Referenced by removeValue().
|
inline |
Definition at line 1811 of file Record.h.
References llvm::StringInit::get(), getRecords(), and removeValue().
void Record::resolveReferences | ( | 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 2882 of file Record.cpp.
References resolveReferences().
Referenced by resolveReferences().
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 2838 of file Record.cpp.
References llvm::Init::getAsUnquotedString(), getLoc(), getNameInit(), llvm::Value::getType(), llvm::PrintFatalError(), llvm::Init::resolveReferences(), and setName().
void Record::setName | ( | Init * | Name | ) |
Definition at line 2794 of file Record.cpp.
Referenced by resolveReferences().
void Record::updateClassLoc | ( | SMLoc | Loc | ) |
Definition at line 2760 of file Record.cpp.
References assert().