Fix calls that need to store values in stack slots, to not copy the stack
authorChris Lattner <sabre@nondot.org>
Wed, 11 Jan 2006 19:55:07 +0000 (19:55 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 11 Jan 2006 19:55:07 +0000 (19:55 +0000)
pointer.  This allows us to emit stuff like this:

        li r10, 0
        stw r10, 56(r1)
        or r3, r10, r10
        or r4, r10, r10
        or r5, r10, r10
        or r6, r10, r10
        or r7, r10, r10
        or r8, r10, r10
        or r9, r10, r10
        bl L_bar$stub

instead of this:

        or r2, r1, r1     ;; Extraneous copy.
        li r10, 0
        stw r10, 56(r2)
        or r3, r10, r10
        or r4, r10, r10
        or r5, r10, r10
        or r6, r10, r10
        or r7, r10, r10
        or r8, r10, r10
        or r9, r10, r10
        bl L_bar$stub

wowness.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25221 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCISelLowering.cpp

index 976f80fafa95f88e455db4adba0ee5cff664ff32..9674432deef6070a9ca94f7268387963a167c417 100644 (file)
@@ -657,8 +657,7 @@ PPCTargetLowering::LowerCallTo(SDOperand Chain,
     // Set up a copy of the stack pointer for use loading and storing any
     // arguments that may not fit in the registers available for argument
     // passing.
-    SDOperand StackPtr = DAG.getCopyFromReg(DAG.getEntryNode(),
-                                            PPC::R1, MVT::i32);
+    SDOperand StackPtr = DAG.getRegister(PPC::R1, MVT::i32);
     
     // Figure out which arguments are going to go in registers, and which in
     // memory.  Also, if this is a vararg function, floating point operations