diff options
author | Chris Lattner <sabre@nondot.org> | 2005-11-16 23:14:54 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2005-11-16 23:14:54 +0000 |
commit | 12cf9090a495e5427ab8bbfa568e4db88951f65b (patch) | |
tree | daab09bf0a1fa0d1bc737b27d382f676af54c482 | |
parent | 7a125378439bb51a57e552915c261ce5ede282f8 (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.cpp | 8 |
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 |