]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ipa-cp: Do not consider useless aggregate constants
authorMartin Jambor <mjambor@suse.cz>
Tue, 22 Nov 2022 17:22:03 +0000 (18:22 +0100)
committerMartin Jambor <mjambor@suse.cz>
Tue, 22 Nov 2022 17:29:06 +0000 (18:29 +0100)
When building vectors of known aggregate values, there is no point in
including those for parameters which are not used in any way
whatsoever.  This patch avoids that together with also other kinds of
constants.

gcc/ChangeLog:

2022-11-13  Martin Jambor  <mjambor@suse.cz>

* ipa-cp.cc (push_agg_values_from_edge): Do not consider constants
in unused aggregate parameters.

gcc/ipa-cp.cc

index f0feb4beb8f6931c686c55734796c7cb542b54eb..d5230c7c5e6b150f7ac9e1a1445178239dc67c39 100644 (file)
@@ -5785,7 +5785,8 @@ push_agg_values_from_edge (struct cgraph_edge *cs,
        }
 
       ipcp_param_lattices *plats = ipa_get_parm_lattices (dest_info, index);
-      if (plats->aggs_bottom)
+      if (!ipa_is_param_used (dest_info, index)
+         || plats->aggs_bottom)
        continue;
       push_agg_values_for_index_from_edge (cs, index, res,
                                           optimize_self_recursion ? interim
@@ -6151,6 +6152,9 @@ decide_whether_version_node (struct cgraph_node *node)
 
   for (i = 0; i < count;i++)
     {
+      if (!ipa_is_param_used (info, i))
+       continue;
+
       class ipcp_param_lattices *plats = ipa_get_parm_lattices (info, i);
       ipcp_lattice<tree> *lat = &plats->itself;
       ipcp_lattice<ipa_polymorphic_call_context> *ctxlat = &plats->ctxlat;