mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[TableGen] Diagnose undefined fields when generating searchable tables
Summary: Previously TableGen would crash trying to print the undefined value as an integer. Change-Id: I3900071ceaa07c26acafb33bc49966d7d7a02828 Reviewers: nhaehnle Subscribers: llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D74210
This commit is contained in:
parent
e54a43362b
commit
5aafdf1461
@ -1,4 +1,5 @@
|
||||
// RUN: llvm-tblgen -gen-searchable-tables -I %p/../../include %s | FileCheck %s
|
||||
// RUN: not llvm-tblgen -gen-searchable-tables -I %p/../../include -DERROR1 %s 2>&1 | FileCheck --check-prefix=ERROR1 %s
|
||||
// XFAIL: vg_leak
|
||||
|
||||
include "llvm/TableGen/SearchableTable.td"
|
||||
@ -136,3 +137,21 @@ def lookupCEntry : SearchIndex {
|
||||
let Table = CTable;
|
||||
let Key = ["Name", "Kind"];
|
||||
}
|
||||
|
||||
#ifdef ERROR1
|
||||
|
||||
class DEntry<string str, int val1> {
|
||||
string Str = str;
|
||||
bits<8> Val1 = val1;
|
||||
}
|
||||
|
||||
def DFoo : DEntry<"foo", 1>;
|
||||
// ERROR1: [[@LINE+1]]:1: error: Record 'DBar' in table 'DTable' is missing field 'Val1'
|
||||
def DBar : DEntry<"bar", ?>;
|
||||
|
||||
def DTable : GenericTable {
|
||||
let FilterClass = "DEntry";
|
||||
let Fields = ["Str", "Val1"];
|
||||
}
|
||||
|
||||
#endif // ERROR1
|
||||
|
@ -599,7 +599,7 @@ void SearchableTableEmitter::collectTableEntries(
|
||||
for (auto EntryRec : Items) {
|
||||
for (auto &Field : Table.Fields) {
|
||||
auto TI = dyn_cast<TypedInit>(EntryRec->getValueInit(Field.Name));
|
||||
if (!TI) {
|
||||
if (!TI || !TI->isComplete()) {
|
||||
PrintFatalError(EntryRec->getLoc(),
|
||||
Twine("Record '") + EntryRec->getName() +
|
||||
"' in table '" + Table.Name +
|
||||
|
Loading…
x
Reference in New Issue
Block a user