[v2] gimple-fold: consistent dump of builtin call simplifications
Checks
Commit Message
Changes since v1:
* Added DCO signoff
* Removed tabs from commit message
Comments
On Tue, Jul 16, 2024 at 9:30 PM rubin.gerritsen <rubin_ge@hotmail.com> wrote:
>
> Changes since v1:
> * Added DCO signoff
> * Removed tabs from commit message
>
> --
> Previously only simplifications of the `__st[xrp]cpy_chk`
> were dumped. Now all call replacement simplifications are
> dumped.
>
> Examples of statements with corresponding dumpfile entries:
>
> `printf("mystr\n");`:
> optimized: simplified printf to __builtin_puts
> `printf("%c", 'a');`:
> optimized: simplified printf to __builtin_putchar
> `printf("%s\n", "mystr");`:
> optimized: simplified printf to __builtin_puts
>
> The below test suites passed for this patch
> * The x86 bootstrap test.
> * Manual testing with some small example code manually
> examining dump logs, outputting the lines mentioned above.
OK.
I'll push this for you.
Richard.
> gcc/ChangeLog:
>
> * gimple-fold.cc (dump_transformation): Moved definition.
> (replace_call_with_call_and_fold): Calls dump_transformation.
> (gimple_fold_builtin_stxcpy_chk): Removes call to
> dump_transformation, now in replace_call_with_call_and_fold.
> (gimple_fold_builtin_stxncpy_chk): Removes call to
> dump_transformation, now in replace_call_with_call_and_fold.
>
> Signed-off-by: Rubin Gerritsen <rubin.gerritsen@gmail.com>
> ---
> gcc/gimple-fold.cc | 22 ++++++++++------------
> 1 file changed, 10 insertions(+), 12 deletions(-)
>
> diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc
> index 7c534d56bf1..b20d3a2ff9a 100644
> --- a/gcc/gimple-fold.cc
> +++ b/gcc/gimple-fold.cc
> @@ -802,6 +802,15 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
> gsi_replace_with_seq_vops (si_p, stmts);
> }
>
> +/* Print a message in the dump file recording transformation of FROM to TO. */
> +
> +static void
> +dump_transformation (gcall *from, gcall *to)
> +{
> + if (dump_enabled_p ())
> + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to %T\n",
> + gimple_call_fn (from), gimple_call_fn (to));
> +}
>
> /* Replace the call at *GSI with the gimple value VAL. */
>
> @@ -835,6 +844,7 @@ static void
> replace_call_with_call_and_fold (gimple_stmt_iterator *gsi, gimple *repl)
> {
> gimple *stmt = gsi_stmt (*gsi);
> + dump_transformation (as_a <gcall *> (stmt), as_a <gcall *> (repl));
> gimple_call_set_lhs (repl, gimple_call_lhs (stmt));
> gimple_set_location (repl, gimple_location (stmt));
> gimple_move_vops (repl, stmt);
> @@ -3090,16 +3100,6 @@ gimple_fold_builtin_memory_chk (gimple_stmt_iterator *gsi,
> return true;
> }
>
> -/* Print a message in the dump file recording transformation of FROM to TO. */
> -
> -static void
> -dump_transformation (gcall *from, gcall *to)
> -{
> - if (dump_enabled_p ())
> - dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to %T\n",
> - gimple_call_fn (from), gimple_call_fn (to));
> -}
> -
> /* Fold a call to the __st[rp]cpy_chk builtin.
> DEST, SRC, and SIZE are the arguments to the call.
> IGNORE is true if return value can be ignored. FCODE is the BUILT_IN_*
> @@ -3189,7 +3189,6 @@ gimple_fold_builtin_stxcpy_chk (gimple_stmt_iterator *gsi,
> return false;
>
> gcall *repl = gimple_build_call (fn, 2, dest, src);
> - dump_transformation (stmt, repl);
> replace_call_with_call_and_fold (gsi, repl);
> return true;
> }
> @@ -3235,7 +3234,6 @@ gimple_fold_builtin_stxncpy_chk (gimple_stmt_iterator *gsi,
> return false;
>
> gcall *repl = gimple_build_call (fn, 3, dest, src, len);
> - dump_transformation (stmt, repl);
> replace_call_with_call_and_fold (gsi, repl);
> return true;
> }
> --
> 2.34.1
>
On Wed, Jul 17, 2024 at 12:47 PM Richard Biener
<richard.guenther@gmail.com> wrote:
>
> On Tue, Jul 16, 2024 at 9:30 PM rubin.gerritsen <rubin_ge@hotmail.com> wrote:
> >
> > Changes since v1:
> > * Added DCO signoff
> > * Removed tabs from commit message
> >
> > --
> > Previously only simplifications of the `__st[xrp]cpy_chk`
> > were dumped. Now all call replacement simplifications are
> > dumped.
> >
> > Examples of statements with corresponding dumpfile entries:
> >
> > `printf("mystr\n");`:
> > optimized: simplified printf to __builtin_puts
> > `printf("%c", 'a');`:
> > optimized: simplified printf to __builtin_putchar
> > `printf("%s\n", "mystr");`:
> > optimized: simplified printf to __builtin_puts
> >
> > The below test suites passed for this patch
> > * The x86 bootstrap test.
> > * Manual testing with some small example code manually
> > examining dump logs, outputting the lines mentioned above.
>
> OK.
>
> I'll push this for you.
Can you please post the patch as generated by
git format-patch and attach it? I have problems with your
mailer wrapping lines and even with that fixed the patch
not applying with git am.
Richard.
> Richard.
>
> > gcc/ChangeLog:
> >
> > * gimple-fold.cc (dump_transformation): Moved definition.
> > (replace_call_with_call_and_fold): Calls dump_transformation.
> > (gimple_fold_builtin_stxcpy_chk): Removes call to
> > dump_transformation, now in replace_call_with_call_and_fold.
> > (gimple_fold_builtin_stxncpy_chk): Removes call to
> > dump_transformation, now in replace_call_with_call_and_fold.
> >
> > Signed-off-by: Rubin Gerritsen <rubin.gerritsen@gmail.com>
> > ---
> > gcc/gimple-fold.cc | 22 ++++++++++------------
> > 1 file changed, 10 insertions(+), 12 deletions(-)
> >
> > diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc
> > index 7c534d56bf1..b20d3a2ff9a 100644
> > --- a/gcc/gimple-fold.cc
> > +++ b/gcc/gimple-fold.cc
> > @@ -802,6 +802,15 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
> > gsi_replace_with_seq_vops (si_p, stmts);
> > }
> >
> > +/* Print a message in the dump file recording transformation of FROM to TO. */
> > +
> > +static void
> > +dump_transformation (gcall *from, gcall *to)
> > +{
> > + if (dump_enabled_p ())
> > + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to %T\n",
> > + gimple_call_fn (from), gimple_call_fn (to));
> > +}
> >
> > /* Replace the call at *GSI with the gimple value VAL. */
> >
> > @@ -835,6 +844,7 @@ static void
> > replace_call_with_call_and_fold (gimple_stmt_iterator *gsi, gimple *repl)
> > {
> > gimple *stmt = gsi_stmt (*gsi);
> > + dump_transformation (as_a <gcall *> (stmt), as_a <gcall *> (repl));
> > gimple_call_set_lhs (repl, gimple_call_lhs (stmt));
> > gimple_set_location (repl, gimple_location (stmt));
> > gimple_move_vops (repl, stmt);
> > @@ -3090,16 +3100,6 @@ gimple_fold_builtin_memory_chk (gimple_stmt_iterator *gsi,
> > return true;
> > }
> >
> > -/* Print a message in the dump file recording transformation of FROM to TO. */
> > -
> > -static void
> > -dump_transformation (gcall *from, gcall *to)
> > -{
> > - if (dump_enabled_p ())
> > - dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to %T\n",
> > - gimple_call_fn (from), gimple_call_fn (to));
> > -}
> > -
> > /* Fold a call to the __st[rp]cpy_chk builtin.
> > DEST, SRC, and SIZE are the arguments to the call.
> > IGNORE is true if return value can be ignored. FCODE is the BUILT_IN_*
> > @@ -3189,7 +3189,6 @@ gimple_fold_builtin_stxcpy_chk (gimple_stmt_iterator *gsi,
> > return false;
> >
> > gcall *repl = gimple_build_call (fn, 2, dest, src);
> > - dump_transformation (stmt, repl);
> > replace_call_with_call_and_fold (gsi, repl);
> > return true;
> > }
> > @@ -3235,7 +3234,6 @@ gimple_fold_builtin_stxncpy_chk (gimple_stmt_iterator *gsi,
> > return false;
> >
> > gcall *repl = gimple_build_call (fn, 3, dest, src, len);
> > - dump_transformation (stmt, repl);
> > replace_call_with_call_and_fold (gsi, repl);
> > return true;
> > }
> > --
> > 2.34.1
> >
Sorry for the inconvenience, here the patch is attached as an attachment.
Rubin
________________________________
From: Richard Biener <richard.guenther@gmail.com>
Sent: 17 July 2024 1:01 PM
To: rubin.gerritsen <rubin_ge@hotmail.com>
Cc: gcc-patches@gcc.gnu.org <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH v2] gimple-fold: consistent dump of builtin call simplifications
On Wed, Jul 17, 2024 at 12:47 PM Richard Biener
<richard.guenther@gmail.com> wrote:
>
> On Tue, Jul 16, 2024 at 9:30 PM rubin.gerritsen <rubin_ge@hotmail.com> wrote:
> >
> > Changes since v1:
> > * Added DCO signoff
> > * Removed tabs from commit message
> >
> > --
> > Previously only simplifications of the `__st[xrp]cpy_chk`
> > were dumped. Now all call replacement simplifications are
> > dumped.
> >
> > Examples of statements with corresponding dumpfile entries:
> >
> > `printf("mystr\n");`:
> > optimized: simplified printf to __builtin_puts
> > `printf("%c", 'a');`:
> > optimized: simplified printf to __builtin_putchar
> > `printf("%s\n", "mystr");`:
> > optimized: simplified printf to __builtin_puts
> >
> > The below test suites passed for this patch
> > * The x86 bootstrap test.
> > * Manual testing with some small example code manually
> > examining dump logs, outputting the lines mentioned above.
>
> OK.
>
> I'll push this for you.
Can you please post the patch as generated by
git format-patch and attach it? I have problems with your
mailer wrapping lines and even with that fixed the patch
not applying with git am.
Richard.
> Richard.
>
> > gcc/ChangeLog:
> >
> > * gimple-fold.cc (dump_transformation): Moved definition.
> > (replace_call_with_call_and_fold): Calls dump_transformation.
> > (gimple_fold_builtin_stxcpy_chk): Removes call to
> > dump_transformation, now in replace_call_with_call_and_fold.
> > (gimple_fold_builtin_stxncpy_chk): Removes call to
> > dump_transformation, now in replace_call_with_call_and_fold.
> >
> > Signed-off-by: Rubin Gerritsen <rubin.gerritsen@gmail.com>
> > ---
> > gcc/gimple-fold.cc | 22 ++++++++++------------
> > 1 file changed, 10 insertions(+), 12 deletions(-)
> >
> > diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc
> > index 7c534d56bf1..b20d3a2ff9a 100644
> > --- a/gcc/gimple-fold.cc
> > +++ b/gcc/gimple-fold.cc
> > @@ -802,6 +802,15 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
> > gsi_replace_with_seq_vops (si_p, stmts);
> > }
> >
> > +/* Print a message in the dump file recording transformation of FROM to TO. */
> > +
> > +static void
> > +dump_transformation (gcall *from, gcall *to)
> > +{
> > + if (dump_enabled_p ())
> > + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to %T\n",
> > + gimple_call_fn (from), gimple_call_fn (to));
> > +}
> >
> > /* Replace the call at *GSI with the gimple value VAL. */
> >
> > @@ -835,6 +844,7 @@ static void
> > replace_call_with_call_and_fold (gimple_stmt_iterator *gsi, gimple *repl)
> > {
> > gimple *stmt = gsi_stmt (*gsi);
> > + dump_transformation (as_a <gcall *> (stmt), as_a <gcall *> (repl));
> > gimple_call_set_lhs (repl, gimple_call_lhs (stmt));
> > gimple_set_location (repl, gimple_location (stmt));
> > gimple_move_vops (repl, stmt);
> > @@ -3090,16 +3100,6 @@ gimple_fold_builtin_memory_chk (gimple_stmt_iterator *gsi,
> > return true;
> > }
> >
> > -/* Print a message in the dump file recording transformation of FROM to TO. */
> > -
> > -static void
> > -dump_transformation (gcall *from, gcall *to)
> > -{
> > - if (dump_enabled_p ())
> > - dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to %T\n",
> > - gimple_call_fn (from), gimple_call_fn (to));
> > -}
> > -
> > /* Fold a call to the __st[rp]cpy_chk builtin.
> > DEST, SRC, and SIZE are the arguments to the call.
> > IGNORE is true if return value can be ignored. FCODE is the BUILT_IN_*
> > @@ -3189,7 +3189,6 @@ gimple_fold_builtin_stxcpy_chk (gimple_stmt_iterator *gsi,
> > return false;
> >
> > gcall *repl = gimple_build_call (fn, 2, dest, src);
> > - dump_transformation (stmt, repl);
> > replace_call_with_call_and_fold (gsi, repl);
> > return true;
> > }
> > @@ -3235,7 +3234,6 @@ gimple_fold_builtin_stxncpy_chk (gimple_stmt_iterator *gsi,
> > return false;
> >
> > gcall *repl = gimple_build_call (fn, 3, dest, src, len);
> > - dump_transformation (stmt, repl);
> > replace_call_with_call_and_fold (gsi, repl);
> > return true;
> > }
> > --
> > 2.34.1
> >
On Wed, Jul 17, 2024 at 9:07 PM Rubin Gerritsen <rubin_ge@hotmail.com> wrote:
>
> Sorry for the inconvenience, here the patch is attached as an attachment.
Pushed as r15-2134-gcee56fe0ba757c
> Rubin
> ________________________________
> From: Richard Biener <richard.guenther@gmail.com>
> Sent: 17 July 2024 1:01 PM
> To: rubin.gerritsen <rubin_ge@hotmail.com>
> Cc: gcc-patches@gcc.gnu.org <gcc-patches@gcc.gnu.org>
> Subject: Re: [PATCH v2] gimple-fold: consistent dump of builtin call simplifications
>
> On Wed, Jul 17, 2024 at 12:47 PM Richard Biener
> <richard.guenther@gmail.com> wrote:
> >
> > On Tue, Jul 16, 2024 at 9:30 PM rubin.gerritsen <rubin_ge@hotmail.com> wrote:
> > >
> > > Changes since v1:
> > > * Added DCO signoff
> > > * Removed tabs from commit message
> > >
> > > --
> > > Previously only simplifications of the `__st[xrp]cpy_chk`
> > > were dumped. Now all call replacement simplifications are
> > > dumped.
> > >
> > > Examples of statements with corresponding dumpfile entries:
> > >
> > > `printf("mystr\n");`:
> > > optimized: simplified printf to __builtin_puts
> > > `printf("%c", 'a');`:
> > > optimized: simplified printf to __builtin_putchar
> > > `printf("%s\n", "mystr");`:
> > > optimized: simplified printf to __builtin_puts
> > >
> > > The below test suites passed for this patch
> > > * The x86 bootstrap test.
> > > * Manual testing with some small example code manually
> > > examining dump logs, outputting the lines mentioned above.
> >
> > OK.
> >
> > I'll push this for you.
>
> Can you please post the patch as generated by
> git format-patch and attach it? I have problems with your
> mailer wrapping lines and even with that fixed the patch
> not applying with git am.
>
> Richard.
>
> > Richard.
> >
> > > gcc/ChangeLog:
> > >
> > > * gimple-fold.cc (dump_transformation): Moved definition.
> > > (replace_call_with_call_and_fold): Calls dump_transformation.
> > > (gimple_fold_builtin_stxcpy_chk): Removes call to
> > > dump_transformation, now in replace_call_with_call_and_fold.
> > > (gimple_fold_builtin_stxncpy_chk): Removes call to
> > > dump_transformation, now in replace_call_with_call_and_fold.
> > >
> > > Signed-off-by: Rubin Gerritsen <rubin.gerritsen@gmail.com>
> > > ---
> > > gcc/gimple-fold.cc | 22 ++++++++++------------
> > > 1 file changed, 10 insertions(+), 12 deletions(-)
> > >
> > > diff --git a/gcc/gimple-fold.cc b/gcc/gimple-fold.cc
> > > index 7c534d56bf1..b20d3a2ff9a 100644
> > > --- a/gcc/gimple-fold.cc
> > > +++ b/gcc/gimple-fold.cc
> > > @@ -802,6 +802,15 @@ gimplify_and_update_call_from_tree (gimple_stmt_iterator *si_p, tree expr)
> > > gsi_replace_with_seq_vops (si_p, stmts);
> > > }
> > >
> > > +/* Print a message in the dump file recording transformation of FROM to TO. */
> > > +
> > > +static void
> > > +dump_transformation (gcall *from, gcall *to)
> > > +{
> > > + if (dump_enabled_p ())
> > > + dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to %T\n",
> > > + gimple_call_fn (from), gimple_call_fn (to));
> > > +}
> > >
> > > /* Replace the call at *GSI with the gimple value VAL. */
> > >
> > > @@ -835,6 +844,7 @@ static void
> > > replace_call_with_call_and_fold (gimple_stmt_iterator *gsi, gimple *repl)
> > > {
> > > gimple *stmt = gsi_stmt (*gsi);
> > > + dump_transformation (as_a <gcall *> (stmt), as_a <gcall *> (repl));
> > > gimple_call_set_lhs (repl, gimple_call_lhs (stmt));
> > > gimple_set_location (repl, gimple_location (stmt));
> > > gimple_move_vops (repl, stmt);
> > > @@ -3090,16 +3100,6 @@ gimple_fold_builtin_memory_chk (gimple_stmt_iterator *gsi,
> > > return true;
> > > }
> > >
> > > -/* Print a message in the dump file recording transformation of FROM to TO. */
> > > -
> > > -static void
> > > -dump_transformation (gcall *from, gcall *to)
> > > -{
> > > - if (dump_enabled_p ())
> > > - dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to %T\n",
> > > - gimple_call_fn (from), gimple_call_fn (to));
> > > -}
> > > -
> > > /* Fold a call to the __st[rp]cpy_chk builtin.
> > > DEST, SRC, and SIZE are the arguments to the call.
> > > IGNORE is true if return value can be ignored. FCODE is the BUILT_IN_*
> > > @@ -3189,7 +3189,6 @@ gimple_fold_builtin_stxcpy_chk (gimple_stmt_iterator *gsi,
> > > return false;
> > >
> > > gcall *repl = gimple_build_call (fn, 2, dest, src);
> > > - dump_transformation (stmt, repl);
> > > replace_call_with_call_and_fold (gsi, repl);
> > > return true;
> > > }
> > > @@ -3235,7 +3234,6 @@ gimple_fold_builtin_stxncpy_chk (gimple_stmt_iterator *gsi,
> > > return false;
> > >
> > > gcall *repl = gimple_build_call (fn, 3, dest, src, len);
> > > - dump_transformation (stmt, repl);
> > > replace_call_with_call_and_fold (gsi, repl);
> > > return true;
> > > }
> > > --
> > > 2.34.1
> > >
@@ -802,6 +802,15 @@ gimplify_and_update_call_from_tree
(gimple_stmt_iterator *si_p, tree expr)
gsi_replace_with_seq_vops (si_p, stmts);
}
+/* Print a message in the dump file recording transformation of FROM to
TO. */
+
+static void
+dump_transformation (gcall *from, gcall *to)
+{
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, from, "simplified %T to
%T\n",
+ gimple_call_fn (from), gimple_call_fn (to));
+}