[llvm-dev] Constants propagation into printf format string
Davide Italiano via llvm-dev
llvm-dev at lists.llvm.org
Thu May 17 16:04:10 PDT 2018
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
More information about the llvm-dev
mailing list