1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 11:33:24 +02:00

An stdcall function calling a non-stdcall function

cannot use tailcall.  PR 8461.

llvm-svn: 117322
This commit is contained in:
Dale Johannesen 2010-10-25 22:17:05 +00:00
parent ef977ab6b6
commit 2566d39d07
2 changed files with 18 additions and 0 deletions

View File

@ -2532,6 +2532,11 @@ X86TargetLowering::IsEligibleForTailCallOptimization(SDValue Callee,
}
}
// An stdcall caller is expected to clean up its arguments; the callee
// isn't going to do that. PR 8461.
if (!CCMatch && CallerCC==CallingConv::X86_StdCall)
return false;
return true;
}

View File

@ -0,0 +1,13 @@
; RUN: llc -mtriple=i386-apple-darwin11 -O2 < %s | FileCheck %s
%struct.I = type { i32 (...)** }
define x86_stdcallcc void @bar(%struct.I* nocapture %this) ssp align 2 {
; CHECK: bar:
; CHECK-NOT: jmp
; CHECK: ret $4
entry:
tail call void @foo()
ret void
}
declare void @foo()