https://gcc.gnu.org/g:cee56fe0ba757cae17dcc4be216cea88be76e740

commit r15-2134-gcee56fe0ba757cae17dcc4be216cea88be76e740
Author: Rubin Gerritsen <rubin.gerrit...@gmail.com>
Date:   Tue Jul 16 21:11:24 2024 +0200

    gimple-fold: consistent dump of builtin call simplifications
    
    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.
    
    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.gerrit...@gmail.com>

Diff:
---
 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 ed9508e4c912..c20102f73f59 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;
 }

Reply via email to