[llvm-dev] How to insert instructions before each function calls?
Ryan Taylor via llvm-dev
llvm-dev at lists.llvm.org
Sat Sep 3 18:18:11 PDT 2016
So one way might look like this:
IRBuilder<> Builder(&*BB); // BB = Function::iterator OR IRBuilder<>
Builder(CallInst->getParent());
Builder.SetInsertPoint(CallInst);
InstructionClass *YourNewInstruction =
builder.CreateInstructionClass(.....); // InstructionClass = type of
instruction you are inserting
-Ryan
On Sat, Sep 3, 2016 at 6:04 PM, Ryan Taylor <ryta1203 at gmail.com> wrote:
> Take a look at IRBuilder and SetInsertPoint().
>
> On Sep 3, 2016 18:02, "SHUCAI YAO via llvm-dev" <llvm-dev at lists.llvm.org>
> wrote:
>
>> I'm trying to insert some instructions before each function calls (before
>> arguments push):
>> lea %EAX, label ----- new instructions
>> mov [ESP+stacksize], %EAX ----- new instructions
>> push arg1
>> push arg2
>> ...
>> push argn
>> call callee_name
>>
>> I am a newbie to LLVM. I tried to use buildMI() to insert the
>> instructions in the lowercall() function. But I couldn't put these
>> instructions in the right positions. Is there a way to locate the position
>> by using MachineBasicBlock iterator?
>>
>> Any suggestions are appreciated.
>>
>> Thanks!
>> Shucai
>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160903/e20cef85/attachment.html>
More information about the llvm-dev
mailing list