aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-11-16 23:14:54 +0000
committerChris Lattner <sabre@nondot.org>2005-11-16 23:14:54 +0000
commit12cf9090a495e5427ab8bbfa568e4db88951f65b (patch)
treedaab09bf0a1fa0d1bc737b27d382f676af54c482
parent7a125378439bb51a57e552915c261ce5ede282f8 (diff)
fix a tblgen bug that Evan ran into, where we would lose the '$src' name
on patterns like "(set R32:$dst, (i32 imm:$src))" git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24383 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--utils/TableGen/DAGISelEmitter.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp
index 5cc1f273af..092fff83a9 100644
--- a/utils/TableGen/DAGISelEmitter.cpp
+++ b/utils/TableGen/DAGISelEmitter.cpp
@@ -631,9 +631,7 @@ TreePatternNode *TreePattern::ParseTreePattern(DagInit *Dag) {
if (R->isSubClassOf("SDNode") || R->isSubClassOf("PatFrag")) {
Dag->setArg(0, new DagInit(R,
std::vector<std::pair<Init*, std::string> >()));
- TreePatternNode *TPN = ParseTreePattern(Dag);
- TPN->setName(Dag->getArgName(0));
- return TPN;
+ return ParseTreePattern(Dag);
}
New = new TreePatternNode(DI);
@@ -651,6 +649,7 @@ TreePatternNode *TreePattern::ParseTreePattern(DagInit *Dag) {
// Apply the type cast.
New->UpdateNodeType(getValueType(Operator), *this);
+ New->setName(Dag->getArgName(0));
return New;
}
@@ -672,7 +671,8 @@ TreePatternNode *TreePattern::ParseTreePattern(DagInit *Dag) {
Init *Arg = Dag->getArg(i);
if (DagInit *DI = dynamic_cast<DagInit*>(Arg)) {
Children.push_back(ParseTreePattern(DI));
- Children.back()->setName(Dag->getArgName(i));
+ if (Children.back()->getName().empty())
+ Children.back()->setName(Dag->getArgName(i));
} else if (DefInit *DefI = dynamic_cast<DefInit*>(Arg)) {
Record *R = DefI->getDef();
// Direct reference to a leaf DagNode or PatFrag? Turn it into a