[llvm-dev] Adding instructions in pass directly from string containing IR

Johannes Doerfert via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 8 09:01:31 PDT 2021


If you insert a call prior to the inliner and mark it with the
`alwaysinline` attribute, it will be inlined for sure.

Reduces your problem to insert a call to a function :)

~ Johannes


On 6/7/21 10:51 AM, Przemyslaw Ossowski wrote:
> Thank you Johannes for your suggestion.
>
> In case a call to the function which would contain the code I would like to
> paste is inserted into another function, then is it still possible to
> simply inline the code?
> I would like to avoid calling the function with the "pasted" code. I assume
> there is a pass which inlines functions which should be executed later.
>
> Thanks,
> Przemek
>
>
> On Wed, Jun 2, 2021 at 4:13 AM Johannes Doerfert <johannesdoerfert at gmail.com>
> wrote:
>
>> Hi Przemek,
>>
>> I doubt that such functionality exists right now. The main
>> problem I see is the name matching to embed it with other code.
>> If the new code is not connected, I'd recommend the pass to
>> read in an IR file with a function in it, link it into the module,
>> and insert a call wherever you want to "paste" the instructions.
>>
>> Much cleaner than dealing with strings, IMHO.
>>
>> ~ Johannes
>>
>>
>> On 6/1/21 12:16 PM, Przemyslaw Ossowski via llvm-dev wrote:
>>> Hello,
>>>
>>>
>>>
>>> I would like to add a pass which modifies IR by insertion set of IR
>>> instructions somewhere in the middle of the basicblock,
>>>
>>> like example below:
>>>
>>>
>>>
>>>     %address = call i32* @llvm.target_intrinsic.getaddress()
>>>
>>>     %value = load i32, i32* %address
>>>
>>>     %addvalue = add nsw i32 %value, 10
>>>
>>>     store i32 %addvalue, i32* %address
>>>
>>>
>>>
>>> Is there any function available which would allow for parsing the string
>>> (containing set of instructions) and generating instructions
>> automatically
>>> instead of manually calling functions creating instructions from
>> IRBuilder?
>>> ...at least for simple set of basic instructions
>>>
>>>
>>> Regards,
>>>
>>> Przemek
>>>
>>>
>>> _______________________________________________
>>> LLVM Developers mailing list
>>> llvm-dev at lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev


More information about the llvm-dev mailing list