[LLVMdev] Load from abs address generated bad code on LLVM 2.4

Óscar Fuentes ofv at wanadoo.es
Mon Jan 19 08:40:16 PST 2009


Andrew Haley <aph at redhat.com> writes:

> This is x86_64.  I have a problem where an absolute memory load
>
> define i32 @foo() {
> entry:
>         %0 = load i32* inttoptr (i64 12704196 to i32*)          ; <i32> [#uses=1]
>         ret i32 %0
> }
>
> generates incorrect code on LLVM 2.4:
>
> 0x7ffff6d54010:	mov    0xc1d9c4(%rip),%eax        # 0x7ffff79719da
> 0x7ffff6d54016:	retq

IIRC, one workaround is to use a GlobalValue instead of a IntToPtr on a
Constant.

-- 
Oscar




More information about the llvm-dev mailing list