http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49474
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2011.07.11 22:28:28 Summary|[4.7 Regression] ppc ICEs |[4.7 Regression] ppc ICEs |with -O3 (bootstrapping |with -O3 (bootstrapping |with -O3) |with -O3 and | |--disable-checking) Ever Confirmed|0 |1 --- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-07-11 22:28:28 UTC --- reduced testcase: typedef struct gfc_formal_arglist { int next; } gfc_actual_arglist; update_arglist_pass (gfc_actual_arglist* lst, int po, unsigned argpos, const char *name) { ((void)(__builtin_expect(!(argpos > 0), 0) ? __builtin_unreachable(), 0 : 0)); if (argpos == 1) return 0; if (lst) lst->next = update_arglist_pass (lst->next, po, argpos - 1, name); else lst = update_arglist_pass (((void *)0), po, argpos - 1, name); } --- CUT --- Simple fix: Index: cprop.c =================================================================== --- cprop.c (revision 176186) +++ cprop.c (working copy) @@ -1332,7 +1332,7 @@ find_implicit_sets (void) FOR_EACH_BB (bb) { /* Check for more than one successor. */ - if (! EDGE_COUNT (bb->succs) > 1) + if (EDGE_COUNT (bb->succs) <= 1) continue; cond = fis_get_condition (BB_END (bb));