diff options
author | Arnold Schwaighofer <arnold.schwaighofer@gmail.com> | 2009-06-15 14:43:36 +0000 |
---|---|---|
committer | Arnold Schwaighofer <arnold.schwaighofer@gmail.com> | 2009-06-15 14:43:36 +0000 |
commit | cb9046cfc8b324a665c0d22eb2879a19ad470fa1 (patch) | |
tree | 827f1aeef7f963f377386dd0c383be73e37ce367 /llvm/test/CodeGen/X86/2009-06-15-not-a-tail-call.ll | |
parent | a2937bc3cbf91e74e8824c5cf1107422fc3e79db (diff) | |
download | bcm5719-llvm-cb9046cfc8b324a665c0d22eb2879a19ad470fa1.tar.gz bcm5719-llvm-cb9046cfc8b324a665c0d22eb2879a19ad470fa1.zip |
CheckTailCallReturnConstraints is missing a check on the
incomming chain of the RETURN node. The incomming chain must
be the outgoing chain of the CALL node. This causes the
backend to identify tail calls that are not tail calls. This
patch fixes this.
llvm-svn: 73387
Diffstat (limited to 'llvm/test/CodeGen/X86/2009-06-15-not-a-tail-call.ll')
-rw-r--r-- | llvm/test/CodeGen/X86/2009-06-15-not-a-tail-call.ll | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/2009-06-15-not-a-tail-call.ll b/llvm/test/CodeGen/X86/2009-06-15-not-a-tail-call.ll new file mode 100644 index 00000000000..095e6a10362 --- /dev/null +++ b/llvm/test/CodeGen/X86/2009-06-15-not-a-tail-call.ll @@ -0,0 +1,14 @@ +; RUN: llvm-as < %s | llc -march=x86 -tailcallopt | not grep TAILCALL + +; Bug 4396. This tail call can NOT be optimized. + +declare fastcc i8* @_D3gcx2GC12mallocNoSyncMFmkZPv() nounwind + +define fastcc i8* @_D3gcx2GC12callocNoSyncMFmkZPv() nounwind { +entry: + %tmp6 = tail call fastcc i8* @_D3gcx2GC12mallocNoSyncMFmkZPv() ; <i8*> [#uses=2] + %tmp9 = tail call i8* @memset(i8* %tmp6, i32 0, i64 2) ; <i8*> [#uses=0] + ret i8* %tmp6 +} + +declare i8* @memset(i8*, i32, i64) |