The following testcase distilled from tinyfugue-5.0 ICEs with internal compiler error: in find_or_generate_expression, at tree-ssa-pre.c:2255
/* { dg-do compile } */ /* { dg-options "-O2 -fexceptions" } */ extern const unsigned short int **bar (void) __attribute__ ((const)); const char *a; int b; char c; char foo (int *x) { char r; c = '\0'; if (!b) { while (((*bar ())[a[*x]] & 0x2000) != 0) (*x)++; if (a[++(*x)] == '-') { (*x)++; if (a[*x] && !((*bar ())[a[*x]] & 0x2000)) return '?'; } if (!a[*x] || ((*bar ())[a[*x]] & 0x2000)) { while (((*bar ())[a[*x]] & 0x2000)) ++(*x); return '\0'; } } r = a[*x]; b = a[*x] && !((*bar ())[a[*x]] & 0x2000); return r; } -- Summary: [4.3 Regression] ICE in find_or_generate_expression Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34648