diff options
author | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-06-22 20:30:50 +0000 |
---|---|---|
committer | Bruno Cardoso Lopes <bruno.cardoso@gmail.com> | 2010-06-22 20:30:50 +0000 |
commit | dc883cf45a59235d92ef27295196f71bfb11fd15 (patch) | |
tree | d8512b26dcf129082fa55a96c2bceb11bae95a4f /llvm/utils/TableGen/TGParser.cpp | |
parent | 7e35d39fee508aac984366a062f959e229e4457b (diff) | |
download | bcm5719-llvm-dc883cf45a59235d92ef27295196f71bfb11fd15.tar.gz bcm5719-llvm-dc883cf45a59235d92ef27295196f71bfb11fd15.zip |
Fix a subtle multiclass bug: when using class inheritance on
a toplevel 'defm', make sure to properly resolve references.
llvm-svn: 106570
Diffstat (limited to 'llvm/utils/TableGen/TGParser.cpp')
-rw-r--r-- | llvm/utils/TableGen/TGParser.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/utils/TableGen/TGParser.cpp b/llvm/utils/TableGen/TGParser.cpp index 3770848702c..f81aabe79b0 100644 --- a/llvm/utils/TableGen/TGParser.cpp +++ b/llvm/utils/TableGen/TGParser.cpp @@ -2020,7 +2020,6 @@ bool TGParser::ParseDefm(MultiClass *CurMultiClass) { } } else { Records.addDef(CurRec); - CurRec->resolveReferences(); } NewRecDefs.push_back(CurRec); @@ -2064,9 +2063,6 @@ bool TGParser::ParseDefm(MultiClass *CurMultiClass) { 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 @@ bool TGParser::ParseDefm(MultiClass *CurMultiClass) { } } + 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(); |