[llvm-dev] How to insert instructions before each function calls?
Ryan Taylor via llvm-dev
llvm-dev at lists.llvm.org
Sun Sep 4 04:44:24 PDT 2016
Sorry, I misread his original post.
So something like:
XXXInsrtInfo *XII; // target instruction info
MachineBasicBlock::iterator MI = MachineBasicBlock(YourCallInst);
MachineBasicBlock *MBB = YourCallInst->getParent(); // basic block
location of your call inst
BuildMI(*MBB, MI, DebugLoc(), XII->get(XXX:::INSTRUCTION)......);
The BuildMI params are going to depend on what you want to do with the
instruction being inserted.
On Sun, Sep 4, 2016 at 1:45 AM, Mehdi Amini <mehdi.amini at apple.com> wrote:
> On Sep 3, 2016, at 6:18 PM, Ryan Taylor via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> So one way might look like this:
> IRBuilder<> Builder(&*BB); // BB = Function::iterator OR IRBuilder<>
> InstructionClass *YourNewInstruction = builder.CreateInstructionClass(.....);
> // InstructionClass = type of instruction you are inserting
> I’m not sure how the IRBuilder would work at the MI level, as Shucai was
> 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>
>>> 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?
> Can you describe more precisely what are you trying to achieve?
> I.e. what are these instructions? Why do you want to do that? It may lead
> to a different answer.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev