[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

Chris Lattner lattner at cs.uiuc.edu
Wed Jan 19 11:11:08 PST 2005



Changes in directory llvm/lib/CodeGen/SelectionDAG:

LegalizeDAG.cpp updated: 1.45 -> 1.46
---
Log message:

Fold single use token factor nodes into other token factor nodes.


---
Diffs of the changes:  (+10 -2)

Index: llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.45 llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.46
--- llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp:1.45	Wed Jan 19 12:02:17 2005
+++ llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp	Wed Jan 19 13:10:54 2005
@@ -264,8 +264,16 @@
     std::vector<SDOperand> Ops;
     bool Changed = false;
     for (unsigned i = 0, e = Node->getNumOperands(); i != e; ++i) {
-      Ops.push_back(LegalizeOp(Node->getOperand(i)));  // Legalize the operands
-      Changed |= Ops[i] != Node->getOperand(i);
+      SDOperand Op = Node->getOperand(i);
+      // Fold single-use TokenFactor nodes into this token factor as we go.
+      if (Op.getOpcode() == ISD::TokenFactor && Op.hasOneUse()) {
+        Changed = true;
+        for (unsigned j = 0, e = Op.getNumOperands(); j != e; ++j)
+          Ops.push_back(LegalizeOp(Op.getOperand(j)));
+      } else {
+        Ops.push_back(LegalizeOp(Op));  // Legalize the operands
+        Changed |= Ops[i] != Op;
+      }
     }
     if (Changed)
       Result = DAG.getNode(ISD::TokenFactor, MVT::Other, Ops);






More information about the llvm-commits mailing list