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" } } */