Hi,

r272115 introduced IPA-CP hook to ignore some edges in order to break
useless SCCs, but the condition in the new hook was a bit too lenient.

If we want to break SCCs in which contains some nodes has IPA-CP
disabled, we must do it at the incoming edges, not at the outgoing, at
least without making sure that we propagate that these calls have to
mark callee's lattices as containing variable stuff.

But breaking SCCs only at the edges which are easier to handle
is... well.. easier, and so the following patch does that.  The patch
has restored LTO bootstrap with Ada, C and C++, I am now running LTO
bootstrap and testing with all languages, OK if it passes?

Thanks,

Martin


2019-06-17  Martin Jambor  <mjam...@suse.cz>

        PR ipa/90889
        * ipa-cp.c (ignore_edge_p): Do not ignore edges when only the
        caller does not have flag_ipa_cp set.
---
 gcc/ipa-cp.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index a0f6f23829b..d3a88756a91 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -817,7 +817,6 @@ 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, flag_ipa_cp)
          || !opt_for_fn (ultimate_target->decl, flag_ipa_cp));
 }
 
-- 
2.21.0

Reply via email to