I was going to do a --enable-checking=release buil to test some compile time preformance but I ran into an ICE. This does not happen on a ----enable-checking=yes build because the source is different but the testcase is reproduce there.
The last time the reduced testcase (and full source, ifcvt.c) is known to work is rev 110452. I am testing with rev 110522. Any trying to reduce this further causes the ICE to go away as the order of the BBs have change but that seem wrong in general. This is a real blocker as it means when we branch the bootstrap starts to fail. Reduced testcase: extern void fancy_abort (void) __attribute__ ((__noreturn__)); typedef struct edge_def { int dest; int flags; }*edge; typedef struct { int **container; }edge_iterator; static __inline__ unsigned char ei_cond (edge_iterator ei3, edge *p) { if (!ei_end_p (ei3)) return 1; *p = 0; return 0; } int block_fallthru (edge_iterator ei1, edge e) { while (ei_cond ((ei1), &(e))) { if (e->flags & 1) break; edge_iterator ei2 = ei1; if (!(ei2.container)) fancy_abort (); } return (e) ? e->dest : 0; } -- Summary: [4.2 Regression] ICE in df_find_use Product: gcc Version: 4.2.0 Status: UNCONFIRMED Keywords: ice-on-valid-code, build Severity: blocker Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org GCC target triplet: powerpc-darwin http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26087