@@ -5243,12 +5243,13 @@ static SDValue EmitTailCallStoreFPAndRetAddr(SelectionDAG &DAG, SDValue Chain,
52435243/// CalculateTailCallArgDest - Remember Argument for later processing. Calculate
52445244/// the position of the argument.
52455245static void CalculateTailCallArgDest(
5246- SelectionDAG &DAG, MachineFunction &MF, EVT VT , SDValue Arg, int SPDiff ,
5247- unsigned ArgOffset,
5246+ SelectionDAG &DAG, MachineFunction &MF, bool IsPPC64 , SDValue Arg,
5247+ int SPDiff, unsigned ArgOffset,
52485248 SmallVectorImpl<TailCallArgumentInfo> &TailCallArguments) {
52495249 int Offset = ArgOffset + SPDiff;
52505250 uint32_t OpSize = (Arg.getValueSizeInBits() + 7) / 8;
52515251 int FI = MF.getFrameInfo().CreateFixedObject(OpSize, Offset, true);
5252+ EVT VT = IsPPC64 ? MVT::i64 : MVT::i32;
52525253 SDValue FIN = DAG.getFrameIndex(FI, VT);
52535254 TailCallArgumentInfo Info;
52545255 Info.Arg = Arg;
@@ -5310,8 +5311,8 @@ static void LowerMemOpCallTo(
53105311 DAG.getStore(Chain, dl, Arg, PtrOff, MachinePointerInfo()));
53115312 // Calculate and remember argument location.
53125313 } else
5313- CalculateTailCallArgDest(DAG, MF, Subtarget.getScalarIntVT() , Arg, SPDiff,
5314- ArgOffset, TailCallArguments);
5314+ CalculateTailCallArgDest(DAG, MF, isPPC64 , Arg, SPDiff, ArgOffset ,
5315+ TailCallArguments);
53155316}
53165317
53175318static void
@@ -6174,7 +6175,7 @@ SDValue PPCTargetLowering::LowerCall_32SVR4(
61746175 DAG.getStore(Chain, dl, Arg, PtrOff, MachinePointerInfo()));
61756176 } else {
61766177 // Calculate and remember argument location.
6177- CalculateTailCallArgDest(DAG, MF, MVT::i32 , Arg, SPDiff, LocMemOffset,
6178+ CalculateTailCallArgDest(DAG, MF, false , Arg, SPDiff, LocMemOffset,
61786179 TailCallArguments);
61796180 }
61806181 }
0 commit comments