don't try to avoid inserting loads when lowering FORMAL_ARGUMENTS.
authorChris Lattner <sabre@nondot.org>
Wed, 13 Feb 2008 07:35:30 +0000 (07:35 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 13 Feb 2008 07:35:30 +0000 (07:35 +0000)
DAGCombine is now quite good at zapifying them.

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

lib/Target/ARM/ARMISelLowering.cpp
lib/Target/CellSPU/SPUISelLowering.cpp
lib/Target/PowerPC/PPCISelLowering.cpp

index dee71bc3310236bf9a646fec4f5cb06084cca8b8..a6c669dc88ad96e741045db99aed21bf58b4ef65 100644 (file)
@@ -954,22 +954,15 @@ static SDOperand LowerFORMAL_ARGUMENT(SDOperand Op, SelectionDAG &DAG,
   NumGPRs += ObjGPRs;
 
   if (ObjSize) {
-    // If the argument is actually used, emit a load from the right stack
-    // slot.
-    if (!Op.Val->hasNUsesOfValue(0, ArgNo)) {
-      MachineFrameInfo *MFI = MF.getFrameInfo();
-      int FI = MFI->CreateFixedObject(ObjSize, ArgOffset);
-      SDOperand FIN = DAG.getFrameIndex(FI, MVT::i32);
-      if (ObjGPRs == 0)
-        ArgValue = DAG.getLoad(ObjectVT, Root, FIN, NULL, 0);
-      else {
-        SDOperand ArgValue2 = DAG.getLoad(MVT::i32, Root, FIN, NULL, 0);
-        assert(ObjectVT != MVT::i64 && "i64 should already be lowered");
-        ArgValue = DAG.getNode(ARMISD::FMDRR, MVT::f64, ArgValue, ArgValue2);
-      }
-    } else {
-      // Don't emit a dead load.
-      ArgValue = DAG.getNode(ISD::UNDEF, ObjectVT);
+    MachineFrameInfo *MFI = MF.getFrameInfo();
+    int FI = MFI->CreateFixedObject(ObjSize, ArgOffset);
+    SDOperand FIN = DAG.getFrameIndex(FI, MVT::i32);
+    if (ObjGPRs == 0)
+      ArgValue = DAG.getLoad(ObjectVT, Root, FIN, NULL, 0);
+    else {
+      SDOperand ArgValue2 = DAG.getLoad(MVT::i32, Root, FIN, NULL, 0);
+      assert(ObjectVT != MVT::i64 && "i64 should already be lowered");
+      ArgValue = DAG.getNode(ARMISD::FMDRR, MVT::f64, ArgValue, ArgValue2);
     }
 
     ArgOffset += ObjSize;   // Move on to the next argument.
index e060b36b899205f5fd12c5d48b69e6e3c5f37ebe..6fe6e48bc84f283d4306bdc496f54b7d8fb4f463 100644 (file)
@@ -1008,17 +1008,9 @@ LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG, int &VarArgsFrameIndex)
     // We need to load the argument to a virtual register if we determined above
     // that we ran out of physical registers of the appropriate type
     if (needsLoad) {
-      // If the argument is actually used, emit a load from the right stack
-      // slot.
-      if (!Op.Val->hasNUsesOfValue(0, ArgNo)) {
-        int FI = MFI->CreateFixedObject(ObjSize, ArgOffset);
-        SDOperand FIN = DAG.getFrameIndex(FI, PtrVT);
-        ArgVal = DAG.getLoad(ObjectVT, Root, FIN, NULL, 0);
-      } else {
-        // Don't emit a dead load.
-        ArgVal = DAG.getNode(ISD::UNDEF, ObjectVT);
-      }
-
+      int FI = MFI->CreateFixedObject(ObjSize, ArgOffset);
+      SDOperand FIN = DAG.getFrameIndex(FI, PtrVT);
+      ArgVal = DAG.getLoad(ObjectVT, Root, FIN, NULL, 0);
       ArgOffset += StackSlotSize;
     }
     
index 15e3f84e76dfa33b4cc6e863c19040580269d8d7..6c4468c359f51fbc1826ddbedda7497ecbb0af4f 100644 (file)
@@ -1420,19 +1420,12 @@ static SDOperand LowerFORMAL_ARGUMENTS(SDOperand Op, SelectionDAG &DAG,
     }
     
     // We need to load the argument to a virtual register if we determined above
-    // that we ran out of physical registers of the appropriate type
+    // that we ran out of physical registers of the appropriate type.
     if (needsLoad) {
-      // If the argument is actually used, emit a load from the right stack
-      // slot.
-      if (!Op.Val->hasNUsesOfValue(0, ArgNo)) {
-        int FI = MFI->CreateFixedObject(ObjSize,
-                                        CurArgOffset + (ArgSize - ObjSize));
-        SDOperand FIN = DAG.getFrameIndex(FI, PtrVT);
-        ArgVal = DAG.getLoad(ObjectVT, Root, FIN, NULL, 0);
-      } else {
-        // Don't emit a dead load.
-        ArgVal = DAG.getNode(ISD::UNDEF, ObjectVT);
-      }
+      int FI = MFI->CreateFixedObject(ObjSize,
+                                      CurArgOffset + (ArgSize - ObjSize));
+      SDOperand FIN = DAG.getFrameIndex(FI, PtrVT);
+      ArgVal = DAG.getLoad(ObjectVT, Root, FIN, NULL, 0);
     }
     
     ArgValues.push_back(ArgVal);