http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54717
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |hubicka at gcc dot gnu.org --- Comment #14 from Jan Hubicka <hubicka at gcc dot gnu.org> 2012-11-14 20:11:17 UTC --- Hmm, the optimize_edge_for_speed never returns false here. The problem is that patch assumes that interesting successors of block with partial anticipance are blocks with partial anticipance. The anticipance however could be full and it seems that full anticipance do not imply partial one Index: tree-ssa-pre.c =================================================================== *** tree-ssa-pre.c (revision 193503) --- tree-ssa-pre.c (working copy) *************** do_partial_partial_insertion (basic_bloc *** 3525,3531 **** may cause regressions on the speed path. */ FOR_EACH_EDGE (succ, ei, block->succs) { ! if (bitmap_set_contains_value (PA_IN (succ->dest), val)) { if (optimize_edge_for_speed_p (succ)) do_insertion = true; --- 3525,3532 ---- may cause regressions on the speed path. */ FOR_EACH_EDGE (succ, ei, block->succs) { ! if (bitmap_set_contains_value (PA_IN (succ->dest), val) ! || bitmap_set_contains_value (ANTIC_IN (succ->dest), val)) { if (optimize_edge_for_speed_p (succ)) do_insertion = true;