Fix a subtle multiclass bug: when using class inheritance on
a toplevel 'defm', make sure to properly resolve references.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106570 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/TGParser.cpp b/utils/TableGen/TGParser.cpp
index 3770848..f81aabe 100644
--- a/utils/TableGen/TGParser.cpp
+++ b/utils/TableGen/TGParser.cpp
@@ -2020,7 +2020,6 @@
}
} else {
Records.addDef(CurRec);
- CurRec->resolveReferences();
}
NewRecDefs.push_back(CurRec);
@@ -2064,9 +2063,6 @@
if (SetValue(CurRec, LetStack[i][j].Loc, LetStack[i][j].Name,
LetStack[i][j].Bits, LetStack[i][j].Value))
return true;
-
- if (!CurMultiClass)
- CurRec->resolveReferences();
}
if (Lex.getCode() != tgtok::comma) break;
@@ -2075,6 +2071,10 @@
}
}
+ if (!CurMultiClass)
+ for (unsigned i = 0, e = NewRecDefs.size(); i != e; ++i)
+ NewRecDefs[i]->resolveReferences();
+
if (Lex.getCode() != tgtok::semi)
return TokError("expected ';' at end of defm");
Lex.Lex();