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

Przemyslaw Ossowski via llvm-dev llvm-dev at lists.llvm.org
Wed Jun 9 06:00:53 PDT 2021


Thanks,
but when I went into details I'm wondering if using linker in a simple pass
is possible.
Usually passes are executed per module.
Is it possible to use linker and later replace the original module with a
newly linked module in simple pass?
Module is passed by reference to runOnModule, so probably it should be
possible...

Przemek


On Tue, Jun 8, 2021 at 6:01 PM Johannes Doerfert <johannesdoerfert at gmail.com>
wrote:

> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20210609/8b6feca4/attachment.html>


More information about the llvm-dev mailing list