aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/TableGen/TGParser.h
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/TableGen/TGParser.h')
-rw-r--r--llvm/lib/TableGen/TGParser.h21
1 files changed, 14 insertions, 7 deletions
diff --git a/llvm/lib/TableGen/TGParser.h b/llvm/lib/TableGen/TGParser.h
index 578a56c9d01c..6e3c5186e4f6 100644
--- a/llvm/lib/TableGen/TGParser.h
+++ b/llvm/lib/TableGen/TGParser.h
@@ -36,17 +36,21 @@ namespace llvm {
}
};
- /// RecordsEntry - Can be either a record or a foreach loop.
+ /// RecordsEntry - Holds exactly one of a Record, ForeachLoop, or
+ /// AssertionInfo.
struct RecordsEntry {
std::unique_ptr<Record> Rec;
std::unique_ptr<ForeachLoop> Loop;
+ std::unique_ptr<Record::AssertionInfo> Assertion;
void dump() const;
RecordsEntry() {}
RecordsEntry(std::unique_ptr<Record> Rec) : Rec(std::move(Rec)) {}
RecordsEntry(std::unique_ptr<ForeachLoop> Loop)
- : Loop(std::move(Loop)) {}
+ : Loop(std::move(Loop)) {}
+ RecordsEntry(std::unique_ptr<Record::AssertionInfo> Assertion)
+ : Assertion(std::move(Assertion)) {}
};
/// ForeachLoop - Record the iteration state associated with a for loop.
@@ -222,7 +226,7 @@ private: // Parser methods.
bool ParseForeach(MultiClass *CurMultiClass);
bool ParseIf(MultiClass *CurMultiClass);
bool ParseIfBody(MultiClass *CurMultiClass, StringRef Kind);
- bool ParseAssert(MultiClass *CurMultiClass, Record *CurRec);
+ bool ParseAssert(MultiClass *CurMultiClass, Record *CurRec = nullptr);
bool ParseTopLevelLet(MultiClass *CurMultiClass);
void ParseLetList(SmallVectorImpl<LetRecord> &Result);
@@ -243,8 +247,10 @@ private: // Parser methods.
IDParseMode Mode = ParseValueMode);
Init *ParseValue(Record *CurRec, RecTy *ItemType = nullptr,
IDParseMode Mode = ParseValueMode);
- void ParseValueList(SmallVectorImpl<llvm::Init*> &Result, Record *CurRec,
- Record *ArgsRec = nullptr, RecTy *EltTy = nullptr);
+ void ParseValueList(SmallVectorImpl<llvm::Init*> &Result,
+ Record *CurRec, RecTy *ItemType = nullptr);
+ bool ParseTemplateArgValueList(SmallVectorImpl<llvm::Init *> &Result,
+ Record *CurRec, Record *ArgsRec);
void ParseDagArgList(
SmallVectorImpl<std::pair<llvm::Init*, StringInit*>> &Result,
Record *CurRec);
@@ -256,6 +262,7 @@ private: // Parser methods.
RecTy *ParseType();
Init *ParseOperation(Record *CurRec, RecTy *ItemType);
Init *ParseOperationSubstr(Record *CurRec, RecTy *ItemType);
+ Init *ParseOperationFind(Record *CurRec, RecTy *ItemType);
Init *ParseOperationForEachFilter(Record *CurRec, RecTy *ItemType);
Init *ParseOperationCond(Record *CurRec, RecTy *ItemType);
RecTy *ParseOperatorType();
@@ -264,8 +271,8 @@ private: // Parser methods.
MultiClass *ParseMultiClassID();
bool ApplyLetStack(Record *CurRec);
bool ApplyLetStack(RecordsEntry &Entry);
- void CheckAssert(SMLoc Loc, Init *Condition, Init *Message);
- void CheckRecordAsserts(Record &Rec);
+ bool CheckTemplateArgValues(SmallVectorImpl<llvm::Init *> &Values,
+ SMLoc Loc, Record *ArgsRec);
};
} // end namespace llvm