Fix a problem duraid pointed out to me compiling kc++ with -enable-x86-fastcc
authorChris Lattner <sabre@nondot.org>
Tue, 27 Dec 2005 03:02:18 +0000 (03:02 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 27 Dec 2005 03:02:18 +0000 (03:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25024 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index b419f31d47abe68d349686d9951270fe3b7b3ba9..a5b261c83741d35530b9542b85f79e419f5ad170 100644 (file)
@@ -591,6 +591,9 @@ X86TargetLowering::LowerFastCCArguments(Function &F, SelectionDAG &DAG) {
                                     X86::R8RegisterClass);
           ArgValue = DAG.getCopyFromReg(DAG.getRoot(), VReg, MVT::i8);
           DAG.setRoot(ArgValue.getValue(1));
+          if (ObjectVT == MVT::i1)
+            // FIXME: Should insert a assertzext here.
+            ArgValue = DAG.getNode(ISD::TRUNCATE, MVT::i1, ArgValue);
         }
         ++NumIntRegs;
         break;
@@ -780,6 +783,8 @@ X86TargetLowering::LowerFastCCCallTo(SDOperand Chain, const Type *RetTy,
     switch (getValueType(Args[i].second)) {
     default: assert(0 && "Unexpected ValueType for argument!");
     case MVT::i1:
+      Args[i].first = DAG.getNode(ISD::ANY_EXTEND, MVT::i8, Args[i].first);
+      // Fall through.
     case MVT::i8:
     case MVT::i16:
     case MVT::i32: