llvm-6502/test/CodeGen/X86/call-imm.ll
Chris Lattner ff81ebf758 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
2009-03-18 00:43:52 +00:00

16 lines
416 B
LLVM

; 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
define i32 @main() nounwind {
entry:
%0 = call i32 inttoptr (i32 12345678 to i32 (i32)*)(i32 0) nounwind ; <i32> [#uses=1]
ret i32 %0
}