[llvm-dev] Constants propagation into printf format string

Dávid Bolvanský via llvm-dev llvm-dev at lists.llvm.org
Thu May 17 16:19:28 PDT 2018


Thanks, I will look at it.

2018-05-18 1:04 GMT+02:00 Davide Italiano <davide at freebsd.org>:

> On Thu, May 17, 2018 at 3:53 PM, Dávid Bolvanský via llvm-dev
> <llvm-dev at lists.llvm.org> wrote:
> > Hello,
> >
> > I was thinking about a new possible simplification in InstCombine which
> > would transform code like this:
> >
> > const char * NAME = "Prog";
> >
> > void printer(char **arr, int len) {
> >   for (int i = 0; i < len; ++i) {
> >     printf("%s: %s", NAME, arr[i]);
> >   }
> > }
> >
> > into
> >
> > void printer(char **arr, int len) {
> >   for (int i = 0; i < len; ++i) {
> >     printf("Prog: %s", arr[i]);
> >   }
> > }
> >
> > This transformation would take constant strings/integers/chars and put
> them
> > to the format string.
> >
>
> This is not a peephole optimization, therefore it doesn't belong to
> instcombine.
> If you want to try to implement something like this, I'd recommend
> taking a look at ConstantFolding or SCCP (and try to understand why
> the value doesn't get propagated).
>
> Thanks,
>
> --
> Davide
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180518/8f827c45/attachment.html>


More information about the llvm-dev mailing list