aboutsummaryrefslogtreecommitdiff
path: root/gcc/ipa-cp.c
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2019-11-12 20:34:35 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2019-11-12 19:34:35 +0000
commite72763e21ef8aca813b4690af878d6fba014ff1a (patch)
treec1adb01b32ff4983e6c9a80c97bc67967cb3bd88 /gcc/ipa-cp.c
parentfde7112d79174947596b4697f254f169f0b11811 (diff)
downloadgcc-e72763e21ef8aca813b4690af878d6fba014ff1a.zip
gcc-e72763e21ef8aca813b4690af878d6fba014ff1a.tar.gz
gcc-e72763e21ef8aca813b4690af878d6fba014ff1a.tar.bz2
ipa-cp.c (ignore_edge_p): Also look for optimize flag.
* ipa-cp.c (ignore_edge_p): Also look for optimize flag. (ipcp_verify_propagated_values): Likewise. (propagate_constants_across_call): Likewise. (propagate_constants_topo): Likewise. (ipcp_propagate_stage): Likewise. From-SVN: r278102
Diffstat (limited to 'gcc/ipa-cp.c')
-rw-r--r--gcc/ipa-cp.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 65ca2fd..54b9724 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -816,6 +816,8 @@ ignore_edge_p (cgraph_edge *e)
= e->callee->function_or_virtual_thunk_symbol (&avail, e->caller);
return (avail <= AVAIL_INTERPOSABLE
+ || !opt_for_fn (e->caller->decl, optimize)
+ || !opt_for_fn (ultimate_target->decl, optimize)
|| !opt_for_fn (e->caller->decl, flag_ipa_cp)
|| !opt_for_fn (ultimate_target->decl, flag_ipa_cp));
}
@@ -1471,7 +1473,8 @@ ipcp_verify_propagated_values (void)
FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node)
{
class ipa_node_params *info = IPA_NODE_REF (node);
- if (!opt_for_fn (node->decl, flag_ipa_cp))
+ if (!opt_for_fn (node->decl, flag_ipa_cp)
+ || !opt_for_fn (node->decl, optimize))
continue;
int i, count = ipa_get_param_count (info);
@@ -2316,7 +2319,9 @@ propagate_constants_across_call (struct cgraph_edge *cs)
parms_count = ipa_get_param_count (callee_info);
if (parms_count == 0)
return false;
- if (!args)
+ if (!args
+ || !opt_for_fn (cs->caller->decl, flag_ipa_cp)
+ || !opt_for_fn (cs->caller->decl, optimize))
{
for (i = 0; i < parms_count; i++)
ret |= set_all_contains_variable (ipa_get_parm_lattices (callee_info,
@@ -3238,7 +3243,8 @@ propagate_constants_topo (class ipa_topo_info *topo)
FOR_EACH_VEC_ELT (cycle_nodes, j, v)
if (v->has_gimple_body_p ())
{
- if (opt_for_fn (v->decl, flag_ipa_cp))
+ if (opt_for_fn (v->decl, flag_ipa_cp)
+ && opt_for_fn (v->decl, optimize))
push_node_to_stack (topo, v);
/* When V is not optimized, we can not push it to stac, but
still we need to set all its callees lattices to bottom. */
@@ -3269,7 +3275,8 @@ propagate_constants_topo (class ipa_topo_info *topo)
their topological sort. */
FOR_EACH_VEC_ELT (cycle_nodes, j, v)
if (v->has_gimple_body_p ()
- && opt_for_fn (v->decl, flag_ipa_cp))
+ && opt_for_fn (v->decl, flag_ipa_cp)
+ && opt_for_fn (v->decl, optimize))
{
struct cgraph_edge *cs;
@@ -3348,7 +3355,9 @@ ipcp_propagate_stage (class ipa_topo_info *topo)
FOR_EACH_DEFINED_FUNCTION (node)
{
- if (node->has_gimple_body_p () && opt_for_fn (node->decl, flag_ipa_cp))
+ if (node->has_gimple_body_p ()
+ && opt_for_fn (node->decl, flag_ipa_cp)
+ && opt_for_fn (node->decl, optimize))
{
class ipa_node_params *info = IPA_NODE_REF (node);
determine_versionability (node, info);