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