[llvm-dev] Way to guarantee generated indirect call is via memory?

Eugene Rozenfeld via llvm-dev llvm-dev at lists.llvm.org
Mon Aug 17 16:41:15 PDT 2015

I'd like to generate an indirect call instruction that will end up as a call via memory and not register.
The address of the target is a constant.

For example, something like

%25 = load i64, i64* @get_Now
%26 = inttoptr i64 %25 to i64 ()*
%27 = call i64 %26()

may end up as

mov      rsi,qword ptr [00007FF658381070]
call        rsi

or as

call  qword ptr [00007FF658381070]

If I want to guarantee that the second form is always used, how would I go about that?

One possibility is to use patchpoints (http://llvm.org/docs/StackMaps.html#id9). Are there any other alternatives?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150817/09ead439/attachment-0001.html>

More information about the llvm-dev mailing list