summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/2009-06-15-not-a-tail-call.ll
diff options
context:
space:
mode:
authorArnold Schwaighofer <arnold.schwaighofer@gmail.com>2009-06-15 14:43:36 +0000
committerArnold Schwaighofer <arnold.schwaighofer@gmail.com>2009-06-15 14:43:36 +0000
commitcb9046cfc8b324a665c0d22eb2879a19ad470fa1 (patch)
tree827f1aeef7f963f377386dd0c383be73e37ce367 /llvm/test/CodeGen/X86/2009-06-15-not-a-tail-call.ll
parenta2937bc3cbf91e74e8824c5cf1107422fc3e79db (diff)
downloadbcm5719-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.ll14
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)
OpenPOWER on IntegriCloud