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

commit r15-5239-gda29560711b2a66b26738caf46dbf67d3f7cff85
Author: Martin Jambor <mjam...@suse.cz>
Date:   Thu Nov 14 14:42:27 2024 +0100

    ipa-cp: Fix constant dumping
    
    Commit gcc-14-5368-ge0787da2633 removed an overloaded variant of
    function print_ipcp_constant_value for tree constants.  That did not
    break build because the other overloaded variant for polymorphic
    contexts-has a parameter which is constructible from a tree, but it
    prints polymorphic contexts, not tree constants, so we in dumps we got
    things like:
    
      param [0]: VARIABLE
           ctxs: VARIABLE
           Bits: value = 0x0, mask = 0xfffffffffffffffc
           [prange] struct S * [1, +INF] MASK 0xfffffffffffffffc VALUE 0x0
          ref offset 0:     nothing known [scc: 1, from: 1(1.000000)] 
[loc_time: 0, loc_size: 0, prop_time: 0, prop_size: 0]
          ref offset 32:     nothing known [scc: 2, from: 1(1.000000)] 
[loc_time: 0, loc_size: 0, prop_time: 0, prop_size: 0]
          ref offset 64:     nothing known [scc: 3, from: 1(1.000000)] 
[loc_time: 0, loc_size: 0, prop_time: 0, prop_size: 0]
    
    instead of:
    
      param [0]: VARIABLE
           ctxs: VARIABLE
           Bits: value = 0x0, mask = 0xfffffffffffffffc
           [prange] struct S * [1, +INF] MASK 0xfffffffffffffffc VALUE 0x0
          ref offset 0: 1 [scc: 1, from: 1(1.000000)] [loc_time: 0, loc_size: 
0, prop_time: 0, prop_size: 0]
          ref offset 32: 64 [scc: 2, from: 1(1.000000)] [loc_time: 0, loc_size: 
0, prop_time: 0, prop_size: 0]
          ref offset 64: 32 [scc: 3, from: 1(1.000000)] [loc_time: 0, loc_size: 
0, prop_time: 0, prop_size: 0]
    
    This commit re-adds the needed overloaded variant though it uses the
    printing function added in the aforementioned commit instead of
    printing it itself.
    
    gcc/ChangeLog:
    
    2024-11-13  Martin Jambor  <mjam...@suse.cz>
    
            * ipa-prop.h (ipa_print_constant_value): Declare.
            * ipa-prop.cc (ipa_print_constant_value): Make public.
            * ipa-cp.cc (print_ipcp_constant_value): Re-add this overloaded
            function for printing tree constants.
    
    gcc/testsuite/ChangeLog:
    
    2024-11-14  Martin Jambor  <mjam...@suse.cz>
    
            * gcc.dg/ipa/ipcp-agg-1.c: Add a scan dump for a constant value in
            the latice dump.

Diff:
---
 gcc/ipa-cp.cc                         | 12 +++++++++++-
 gcc/ipa-prop.cc                       |  2 +-
 gcc/ipa-prop.h                        |  1 +
 gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c |  1 +
 4 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/gcc/ipa-cp.cc b/gcc/ipa-cp.cc
index 212d9ccbbfe0..fb65ec0c6a62 100644
--- a/gcc/ipa-cp.cc
+++ b/gcc/ipa-cp.cc
@@ -225,7 +225,17 @@ values_equal_for_ipcp_p (tree x, tree y)
     return operand_equal_p (x, y, 0);
 }
 
-/* Print V which is extracted from a value in a lattice to F.  */
+/* Print V which is extracted from a value in a lattice to F.  This overloaded
+   function is used to print tree constants.  */
+
+static void
+print_ipcp_constant_value (FILE * f, tree v)
+{
+  ipa_print_constant_value (f, v);
+}
+
+/* Print V which is extracted from a value in a lattice to F.  This overloaded
+   function is used to print constant polymorphic call contexts.  */
 
 static void
 print_ipcp_constant_value (FILE * f, ipa_polymorphic_call_context v)
diff --git a/gcc/ipa-prop.cc b/gcc/ipa-prop.cc
index 599181d0a943..fd18f847e460 100644
--- a/gcc/ipa-prop.cc
+++ b/gcc/ipa-prop.cc
@@ -413,7 +413,7 @@ ipa_initialize_node_params (struct cgraph_node *node)
 
 /* Print VAL which is extracted from a jump function to F.  */
 
-static void
+void
 ipa_print_constant_value (FILE *f, tree val)
 {
   print_generic_expr (f, val);
diff --git a/gcc/ipa-prop.h b/gcc/ipa-prop.h
index 7a05c169c421..a9ef3fe3aa60 100644
--- a/gcc/ipa-prop.h
+++ b/gcc/ipa-prop.h
@@ -1179,6 +1179,7 @@ ipcp_get_transformation_summary (cgraph_node *node)
 
 /* Function formal parameters related computations.  */
 void ipa_initialize_node_params (struct cgraph_node *node);
+void ipa_print_constant_value (FILE *f, tree val);
 bool ipa_propagate_indirect_call_infos (struct cgraph_edge *cs,
                                        vec<cgraph_edge *> *new_edges);
 
diff --git a/gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c 
b/gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
index 8cfc18799fae..15f6286e54bc 100644
--- a/gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
+++ b/gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
@@ -30,6 +30,7 @@ entry (void)
   foo (&s);
 }
 
+/* { dg-final { scan-ipa-dump "ref offset\[^\n\r\]*: 64\[^\n\r\]*scc:" "cp" } 
} */
 /* { dg-final { scan-ipa-dump "Creating a specialized node of foo.*for all 
known contexts" "cp" } } */
 /* { dg-final { scan-ipa-dump-times "Aggregate replacements:" 2 "cp" } } */
 /* { dg-final { scan-tree-dump-not "->c;" "optimized" } } */

Reply via email to