Changes in directory llvm/utils/TableGen:

DAGISelEmitter.cpp updated: 1.243 -> 1.244
---
Log message:

The generated runloop shouldn't require Select to update 'Result'.  In fact
we'd like to remove result entirely.


---
Diffs of the changes:  (+6 -3)

 DAGISelEmitter.cpp |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)


Index: llvm/utils/TableGen/DAGISelEmitter.cpp
diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.243 
llvm/utils/TableGen/DAGISelEmitter.cpp:1.244
--- llvm/utils/TableGen/DAGISelEmitter.cpp:1.243        Tue Aug 15 18:27:50 2006
+++ llvm/utils/TableGen/DAGISelEmitter.cpp      Tue Aug 15 18:42:26 2006
@@ -3646,8 +3646,11 @@
   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 << "  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);



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to