[llvm-dev] LLVM 3.8.0 - Adding new instruction to a basic block

Simona Simona via llvm-dev llvm-dev at lists.llvm.org
Mon Sep 5 09:54:49 PDT 2016


Yes, it worked with insertAfter(). Thank you all.

Regards,
Simona

On Mon, Sep 5, 2016 at 6:00 PM, Daniel Berlin via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> This would work too, assuming the instruction is not linked anywhere
> currently.
>
> It's just doing what i wrote, with insertAfter() instead of insert()
>
>
> On Mon, Sep 5, 2016 at 8:25 AM, don hinton via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
>
>> Why not just use Instruction::insertAfter()?
>>
>> I->insertAfter(new_inst);
>>
>> On Mon, Sep 5, 2016 at 8:13 AM, Ryan Taylor via llvm-dev <
>> llvm-dev at lists.llvm.org> wrote:
>>
>>> Try incrementing the iterator before using.
>>>
>>> On Sep 5, 2016 10:26, "Simona Simona via llvm-dev" <
>>> llvm-dev at lists.llvm.org> wrote:
>>>
>>>> On Mon, Sep 5, 2016 at 3:20 AM, Daniel Berlin <dberlin at dberlin.org>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Sun, Sep 4, 2016 at 1:06 PM, Simona Simona via llvm-dev <
>>>>> llvm-dev at lists.llvm.org> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> I'm trying to add a new instruction after a given instruction in a
>>>>>> basic block.
>>>>>> Until LLVM 3.7, I was using the following code:
>>>>>>
>>>>>>    BB->getInstList().insertAfter(I, new_inst);
>>>>>>    [where both I and new_inst are Instruction*]
>>>>>>
>>>>>> In LLVM 3.8 however, the SymbolTableList was created as a wrapper
>>>>>> over iplist.
>>>>>> Could anyone please tell me how I can do the same type of insertion
>>>>>> in LLVM 3.8?
>>>>>>
>>>>>
>>>>>      auto InsertPt = I->getIterator();
>>>>>      BB->getInstList().insert(InsertPt, new_inst);
>>>>>
>>>>>
>>>> Thanks, Daniel!
>>>>
>>>> In your example, isn't "insert" inserting "new_inst" *before*
>>>> instruction "I"?
>>>> As I would like to insert the "new_inst" instruction after "I",
>>>> shouldn't it be
>>>>          BB->getInstList().insertAfter(InsertPt, new_inst); ?
>>>>
>>>> With insert I currently get the following error:
>>>>          Instruction does not dominate all uses!
>>>>          %0 = getelementptr inbounds i8, i8* getelementptr inbounds ([8
>>>> x i8], [8 x i8]* @1, i32 0, i32 0)
>>>>          call void @myCall(i8* %0)
>>>>
>>>> Regards,
>>>> Simona
>>>>
>>>> _______________________________________________
>>>> LLVM Developers mailing list
>>>> llvm-dev at lists.llvm.org
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>>
>>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>>
>>>
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>
> _______________________________________________
> 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/20160905/0e78caa8/attachment.html>


More information about the llvm-dev mailing list