SHUCAI YAO via llvm-dev
2016-Sep-03 22:01 UTC
[llvm-dev] How to insert instructions before each function calls?
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 -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160903/7a2f1c87/attachment.html>
Ryan Taylor via llvm-dev
2016-Sep-03 22:04 UTC
[llvm-dev] How to insert instructions before each function calls?
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/82f1ef1c/attachment.html>
Ryan Taylor via llvm-dev
2016-Sep-04 01:18 UTC
[llvm-dev] How to insert instructions before each function calls?
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>
Reasonably Related Threads
- How to insert instructions before each function calls?
- How to insert instructions before each function calls?
- How to insert instructions before each function calls?
- How to insert instructions before each function calls?
- How to insert instructions before each function calls?