[LLVMdev] direct calls to inttoptr constants

Tobias ubub at gmx.net
Wed Feb 11 05:30:29 PST 2009


Hello Mark,

I've followed your advice and changed the IR to:
%0 = call i32 inttoptr (i32 12345678 to i32 (i32)*)(i32 0) nounwind
the call is still indirect.

IMHO llc does not call it directly because the address is neither
a globalvalue (JIT) nor a external symbol.
That's why it uses a fallback mechanism to call it indirectly
assuming the address is not constant and is calculated at runtime.

tobias

Mark wrote:
> I'm doing something similar (I use LLVM as part of my JIT compiler) and
> if I remember correctly, LLVM does the correct thing.
> 
> I think you need to try changing the i64 value to an i32 value.
> If that doesn't work you could also try replacing the tail call with a 
> normal call.
> 
> 
> Mark.




More information about the llvm-dev mailing list