https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107661
--- Comment #12 from Sergei Trofimovich <slyfox at gcc dot gnu.org> ---
Testing the following:
--- a/gcc/ipa-cp.cc
+++ b/gcc/ipa-cp.cc
@@ -5869,37 +5869,37 @@ cgraph_edge_brings_all_scalars_for_node (struct
cgraph_edge *cs,
/* Determine whether CS also brings all aggregate values that NODE is
specialized for. */
static bool
cgraph_edge_brings_all_agg_vals_for_node (struct cgraph_edge *cs,
struct cgraph_node *node)
{
ipcp_transformation *ts = ipcp_get_transformation_summary (node);
if (!ts || vec_safe_is_empty (ts->m_agg_values))
return true;
const ipa_argagg_value_list existing (ts->m_agg_values);
auto_vec<ipa_argagg_value, 32> edge_values;
ipa_node_params *dest_info = ipa_node_params_sum->get (node);
gcc_checking_assert (dest_info->ipcp_orig_node);
dest_info = ipa_node_params_sum->get (dest_info->ipcp_orig_node);
push_agg_values_from_edge (cs, dest_info, &edge_values, &existing);
const ipa_argagg_value_list avl (&edge_values);
- return avl.superset_of_p (existing);
+ return existing.superset_of_p (avl);
}