Get rid of idefs for arguments
authorAndrew Lenharth <andrewl@lenharth.org>
Tue, 12 Apr 2005 17:35:16 +0000 (17:35 +0000)
committerAndrew Lenharth <andrewl@lenharth.org>
Tue, 12 Apr 2005 17:35:16 +0000 (17:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21250 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/Alpha/AlphaISelPattern.cpp

index 787edb91897503f65704f04e3279a84e413e5763..9f309e5b3b4983acacd27cc9148becdbfcf07cce 100644 (file)
@@ -170,20 +170,25 @@ AlphaTargetLowering::LowerArguments(Function &F, SelectionDAG &DAG)
     for (int i = 0; i < 6; ++i)
     {
       if (F.isVarArg()) {
-        BuildMI(&BB, Alpha::IDEF, 0, args_int[i]);
-        BuildMI(&BB, Alpha::IDEF, 0, args_float[i]);
+        F->addLiveIn(args_int[i]);
+        F->addLiveIn(args_float[i]);
+//        BuildMI(&BB, Alpha::IDEF, 0, args_int[i]);
+//        BuildMI(&BB, Alpha::IDEF, 0, args_float[i]);
       } else if (I != E)
       {
         if(MVT::isInteger(getValueType(I->getType())))
-          BuildMI(&BB, Alpha::IDEF, 0, args_int[i]);
+          F->addLiveIn(args_int[i]);
+//          BuildMI(&BB, Alpha::IDEF, 0, args_int[i]);
         else
-          BuildMI(&BB, Alpha::IDEF, 0, args_float[i]);
+          F->addLiveIn(args_float[i]);
+//          BuildMI(&BB, Alpha::IDEF, 0, args_float[i]);
         ++I;
       }
     }
   }
 
-  BuildMI(&BB, Alpha::IDEF, 0, Alpha::R29);
+  F->addLiveIn(Alpha::R29);
+//  BuildMI(&BB, Alpha::IDEF, 0, Alpha::R29);
   BuildMI(&BB, Alpha::BIS, 2, GP).addReg(Alpha::R29).addReg(Alpha::R29);
 
   for (Function::arg_iterator I = F.arg_begin(), E = F.arg_end(); I != E; ++I)
@@ -257,6 +262,24 @@ AlphaTargetLowering::LowerArguments(Function &F, SelectionDAG &DAG)
 
   //Set up a token factor with all the stack traffic
   DAG.setRoot(DAG.getNode(ISD::TokenFactor, MVT::Other, LS));
+
+  // Finally, inform the code generator which regs we return values in.
+  switch (getValueType(F.getReturnType())) {
+  default: assert(0 && "Unknown type!");
+  case MVT::isVoid: break;
+  case MVT::i1:
+  case MVT::i8:
+  case MVT::i16:
+  case MVT::i32:
+  case MVT::i64:
+    MF.addLiveOut(Alpha::R0);
+    break;
+  case MVT::f32:
+  case MVT::f64:
+    MF.addLiveOut(Alpha::F0);
+    break;
+  }
+
   //return the arguments
   return ArgValues;
 }