diff options
author | Chris Lattner <sabre@nondot.org> | 2006-08-15 23:42:26 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-08-15 23:42:26 +0000 |
commit | dfb8607397cba373ad75c9491a7d35e130299e63 (patch) | |
tree | 713b61f1a4c49a6f72a33a0d5ec8aa0acd015822 | |
parent | 5298de51b81ac44992f3aa4357267c05ea916231 (diff) |
The generated runloop shouldn't require Select to update 'Result'. In fact
we'd like to remove result entirely.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29713 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | utils/TableGen/DAGISelEmitter.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/utils/TableGen/DAGISelEmitter.cpp b/utils/TableGen/DAGISelEmitter.cpp index 3b58817cf4..191672f6bb 100644 --- a/utils/TableGen/DAGISelEmitter.cpp +++ b/utils/TableGen/DAGISelEmitter.cpp @@ -3646,8 +3646,11 @@ OS << " unsigned NumKilled = ISelKilled.size();\n"; OS << " memset(ISelQueued, 0, NumBytes);\n"; OS << " memset(ISelSelected, 0, NumBytes);\n"; OS << "\n"; - OS << " SDOperand ResNode;\n"; - OS << " Select(ResNode, Root);\n"; + OS << " // Create a dummy node (which is not added to allnodes), that adds\n" + << " // a reference to the root node, preventing it from being deleted,\n" + << " // and tracking any changes of the root.\n" + << " HandleSDNode Dummy(CurDAG->getRoot());\n" + << " ISelQueue.push_back(CurDAG->getRoot().Val);\n"; OS << " while (!ISelQueue.empty()) {\n"; OS << " SDOperand Tmp;\n"; OS << " SDNode *Node = ISelQueue.front();\n"; @@ -3663,7 +3666,7 @@ OS << " unsigned NumKilled = ISelKilled.size();\n"; OS << " ISelQueued = NULL;\n"; OS << " delete[] ISelSelected;\n"; OS << " ISelSelected = NULL;\n"; - OS << " return ResNode;\n"; + OS << " return Dummy.getValue();\n"; OS << "}\n"; Intrinsics = LoadIntrinsics(Records); |