[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
    Chris Lattner 
    sabre at nondot.org
       
    Sun Feb 25 00:24:44 PST 2007
    
    
  
Changes in directory llvm/lib/CodeGen/SelectionDAG:
SelectionDAG.cpp updated: 1.390 -> 1.391
---
Log message:
fold trivial token factor nodes.  This allows us to compile 
test/CodeGen/X86/fp-stack-ret.ll into:
        movl 4(%esp), %eax
        fldl (%eax)
        ret
instead of:
        subl $12, %esp
        movl 16(%esp), %eax
        movsd (%eax), %xmm0
        movsd %xmm0, (%esp)
        fldl (%esp)
        addl $12, %esp
        ret
by eliminating a token factor that blocked a check.
---
Diffs of the changes:  (+6 -0)
 SelectionDAG.cpp |    6 ++++++
 1 files changed, 6 insertions(+)
Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.390 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.391
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.390	Wed Feb 21 16:53:45 2007
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp	Sun Feb 25 02:24:27 2007
@@ -1351,6 +1351,12 @@
 
   // Fold operations.
   switch (Opcode) {
+  case ISD::TokenFactor:
+    // Fold trivial token factors.
+    if (N1.getOpcode() == ISD::EntryToken) return N2;
+    if (N2.getOpcode() == ISD::EntryToken) return N1;
+    break;
+      
   case ISD::AND:
     // (X & 0) -> 0.  This commonly occurs when legalizing i64 values, so it's
     // worth handling here.
    
    
More information about the llvm-commits
mailing list