Following test program causes an internal compiler error, $ cat y.c double func ( double a, double b, double c) { double x0, x1, y0, y1; int type = 0; double ar;
if(b==0.0){ x0 = -c/a; return( x0 > 1.0? 1.0 : ( x0 < 0.0 ? 0.0: x0)); } if(a==0.0) { y0 = -c/b; return( y0 > 1.0? 1.0 : ( y0 < 0.0 ? 0.0: y0)); } x0 = -c/a; y0 = -c/b; type = ((y0>=1.0)&&(y1>=1.0) ? 16 : type); switch(type){ case 3: ar = (0.5*(y0+y1)); break; } return ar; } $ /opt/mline-20050802/bin/gcc -c -ffast-math -O2 y.c $ y.c: In function âfuncâ: y.c:2: error: control flow in the middle of basic block 0 y.c:2: internal compiler error: verify_flow_info failed Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. This test case works with gcc_cvs code till 20050801. This is also a reason to fail eon benchmark. -- Summary: ICE in verify_flow_info() Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: uttamp at us dot ibm dot com CC: gcc-bugs at gcc dot gnu dot org GCC build triplet: powerpc-linux GCC host triplet: powerpc-linux GCC target triplet: powerpc-linu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23234