Fix verify_propagated_use ICE during profiledbootstrap

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Fix verify_propagated_use ICE during profiledbootstrap

Jan Hubicka-2
Hi,
this patch fixes problem with ipa-cp ICEing while building gnatbind
during profiledbootstrap.  The problem is that I was overzelaous about
ignoring callers with optimization disabled.  Nothing useful can be
propagated across them but we still need to process calle after the
caller so we further propagate the info that we know nothing.

Bootstrapped/regtested x86_64-linux, committed.

        * ipa-cp.c (ignore_edge_p): Do not check caller flags.
        (propagate_constants_topo): Fix typo.
Index: ipa-cp.c
===================================================================
--- ipa-cp.c (revision 278155)
+++ ipa-cp.c (working copy)
@@ -816,9 +816,7 @@ 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));
 }
 
@@ -3246,7 +3244,7 @@ propagate_constants_topo (class ipa_topo
     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
+    /* When V is not optimized, we can not push it to stack, but
        still we need to set all its callees lattices to bottom.  */
     else
       {