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 <mjambor@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 <mjambor@suse.cz>
* gcc.dg/ipa/ipcp-agg-1.c: Add a scan dump for a constant value in
the latice dump.
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)
/* 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);
/* 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);
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" } } */