[llvm-dev] function call replacement

Pierre Gagelin via llvm-dev llvm-dev at lists.llvm.org
Mon Jun 20 04:17:01 PDT 2016


Hi everyone,

I am trying to replace the call of a certain function with a call to
another function. It would for example replace the following:

%call = tail call noalias i8* @func(i64 10)
by
%call = tail call noalias i8* @other_func(i64 10)

I managed to declare other_func correctly but I am having troubles to
understand how I should proceed to do the replacement.

I tried to use ReplaceInstWithInst function as follows:

CallInst *call_to_other_func_inst = IRBuilder.CreateCall(ptr_to_other_func,
args);
ReplaceInstWithInst(call_to_func_inst, newI);

LLVM builds correctly but the instrumentation crashes at optimization time.
I know this isn't the correct way to do it because IRBuilder generates IR
and I just want to have an instance of a CallInst. But I don't see how it
is supposed to be done?

There are methods to create CallInst in the Instruction.h file but those
needs to give an inserting point. Shoud I insert the call to other_func
before the one to func and just remove the call instruction to func?

Thanks for your help,
Pierre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160620/0e8c8bda/attachment.html>


More information about the llvm-dev mailing list