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.

llvm-svn: 34584
This commit is contained in:
Chris Lattner 2007-02-25 08:24:27 +00:00
parent 26ef86b6fe
commit 387f464121
1 changed files with 6 additions and 0 deletions

View File

@ -1351,6 +1351,12 @@ SDOperand SelectionDAG::getNode(unsigned Opcode, MVT::ValueType VT,
// Fold operations. // Fold operations.
switch (Opcode) { 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: case ISD::AND:
// (X & 0) -> 0. This commonly occurs when legalizing i64 values, so it's // (X & 0) -> 0. This commonly occurs when legalizing i64 values, so it's
// worth handling here. // worth handling here.