forked from OSchip/llvm-project
Remove code that pad number of bytes to pop for X86_FastCall CC. The code doesn't do the "aligning" for Cygwin, Mingw, and Windows. But aligning it on Darwin and Linux breaks gcc compatibility. That ruled out all the platforms we support!
llvm-svn: 55756
This commit is contained in:
parent
da2d80688b
commit
3152edf474
|
@ -1379,14 +1379,6 @@ X86TargetLowering::LowerFORMAL_ARGUMENTS(SDValue Op, SelectionDAG &DAG) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make sure the instruction takes 8n+4 bytes to make sure the start of the
|
|
||||||
// arguments and the arguments after the retaddr has been pushed are
|
|
||||||
// aligned.
|
|
||||||
if (!Is64Bit && CC == CallingConv::X86_FastCall &&
|
|
||||||
!Subtarget->isTargetCygMing() && !Subtarget->isTargetWindows() &&
|
|
||||||
(StackSize & 7) == 0)
|
|
||||||
StackSize += 4;
|
|
||||||
|
|
||||||
ArgValues.push_back(Root);
|
ArgValues.push_back(Root);
|
||||||
|
|
||||||
// Some CCs need callee pop.
|
// Some CCs need callee pop.
|
||||||
|
@ -1494,13 +1486,6 @@ SDValue X86TargetLowering::LowerCALL(SDValue Op, SelectionDAG &DAG) {
|
||||||
if (CC == CallingConv::Fast)
|
if (CC == CallingConv::Fast)
|
||||||
NumBytes = GetAlignedArgumentStackSize(NumBytes, DAG);
|
NumBytes = GetAlignedArgumentStackSize(NumBytes, DAG);
|
||||||
|
|
||||||
// Make sure the instruction takes 8n+4 bytes to make sure the start of the
|
|
||||||
// arguments and the arguments after the retaddr has been pushed are aligned.
|
|
||||||
if (!Is64Bit && CC == CallingConv::X86_FastCall &&
|
|
||||||
!Subtarget->isTargetCygMing() && !Subtarget->isTargetWindows() &&
|
|
||||||
(NumBytes & 7) == 0)
|
|
||||||
NumBytes += 4;
|
|
||||||
|
|
||||||
int FPDiff = 0;
|
int FPDiff = 0;
|
||||||
if (IsTailCall) {
|
if (IsTailCall) {
|
||||||
// Lower arguments at fp - stackoffset + fpdiff.
|
// Lower arguments at fp - stackoffset + fpdiff.
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
|
|
||||||
; Check that a fastcc function pops its stack variables before returning.
|
; Check that a fastcc function pops its stack variables before returning.
|
||||||
|
|
||||||
define x86_fastcallcc void @func(i64 %X, i64 %Y, float %G, double %Z) {
|
define x86_fastcallcc void @func(i64 %X, i64 %Y, float %G, double %Z) nounwind {
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue