[LLVMbugs] [Bug 3666] New: X86 backend converts calls to constant addresses to indirect calls.
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Wed Feb 25 04:53:06 PST 2009
http://llvm.org/bugs/show_bug.cgi?id=3666
Summary: X86 backend converts calls to constant addresses to
indirect calls.
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Backend: X86
AssignedTo: unassignedbugs at nondot.org
ReportedBy: marks at dcs.gla.ac.uk
CC: llvmbugs at cs.uiuc.edu
The following llvm code:
target datalayout =
"e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32"
target triple = "i386-pc-linux-gnu"
define i32 @main() nounwind {
entry:
%0 = call i32 inttoptr (i32 12345678 to i32 (i32)*)(i32 0) nounwind
; <i32> [#uses=1]
ret i32 %0
}
Produces the following assembler (with directives removed)
main:
subl $4, %esp
movl $0, (%esp)
movl $12345678, %eax
call *%eax
addl $4, %esp
ret
Whereas it should produce this code:
main:
subl $4, %esp
movl $0, (%esp)
call *12345678
addl $4, %esp
ret
This is important since all calls in JIT compiled code, will be in the above
form.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list