summaryrefslogtreecommitdiff
path: root/test/CodeGen/X86/call-imm.ll
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-03-18 00:43:52 +0000
committerChris Lattner <sabre@nondot.org>2009-03-18 00:43:52 +0000
commitff81ebf7586fa7992353ed44a8c9d564130fb734 (patch)
tree27221c42cf2a4d0b823fdb9dec27b2ef3a4acbce /test/CodeGen/X86/call-imm.ll
parentbda0765e0763cd7d9b0980328fc1d718a6773628 (diff)
downloadllvm-ff81ebf7586fa7992353ed44a8c9d564130fb734.tar.gz
llvm-ff81ebf7586fa7992353ed44a8c9d564130fb734.tar.bz2
llvm-ff81ebf7586fa7992353ed44a8c9d564130fb734.tar.xz
Disable the "call to immediate" optimization on x86-64. It is
not safe in general because the immediate could be an arbitrary value that does not fit in a 32-bit pcrel displacement. Conservatively fall back to loading the value into a register and calling through it. We still do the optzn on X86-32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@67142 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/X86/call-imm.ll')
-rw-r--r--test/CodeGen/X86/call-imm.ll10
1 files changed, 7 insertions, 3 deletions
diff --git a/test/CodeGen/X86/call-imm.ll b/test/CodeGen/X86/call-imm.ll
index b99149b687..8233d8698a 100644
--- a/test/CodeGen/X86/call-imm.ll
+++ b/test/CodeGen/X86/call-imm.ll
@@ -1,6 +1,10 @@
-; RUN: llvm-as < %s | llc -march=x86 | grep call | not grep {*}
-; RUN: llvm-as < %s | llc -march=x86 | grep call | grep 12345678
-; RUN: llvm-as < %s | llc -march=x86-64 | grep call | grep 12345678
+; RUN: llvm-as < %s | llc -march=x86 | grep {call.*12345678}
+
+; Call to immediate is not safe on x86-64 unless we *know* that the
+; call will be within 32-bits pcrel from the dest immediate.
+
+; RUN: llvm-as < %s | llc -march=x86-64 | grep {call.*\*%rax}
+
; PR3666
; PR3773