summaryrefslogtreecommitdiffstats
path: root/llvm/utils/TableGen/TGParser.cpp
diff options
context:
space:
mode:
authorBruno Cardoso Lopes <bruno.cardoso@gmail.com>2010-06-22 20:30:50 +0000
committerBruno Cardoso Lopes <bruno.cardoso@gmail.com>2010-06-22 20:30:50 +0000
commitdc883cf45a59235d92ef27295196f71bfb11fd15 (patch)
treed8512b26dcf129082fa55a96c2bceb11bae95a4f /llvm/utils/TableGen/TGParser.cpp
parent7e35d39fee508aac984366a062f959e229e4457b (diff)
downloadbcm5719-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.cpp8
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();
OpenPOWER on IntegriCloud