Here is tescase for this ICE, which was first mentioned in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20126#c26 . It still fails on mainline.
------------------------------------------------------------------------------ // compile with -O2 static struct { unsigned int p, f; } s[] ={ { 0x08, 625 }, { 0x09, 1250 }, { 0x0a, 2500 }, { 0x0b, 3030 }, { 0x0c, 5000 } }; unsigned int foo (unsigned int f) { int i, n; n = sizeof (s) / sizeof (s[0]); for (i = 0; i < n; i++) if (f == s[i].f) return 100000000 / s[i].p; return 10000000 / f; } -- Summary: ICE in loop_givs_rescan, at loop.c:5521 Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: belyshev at depni dot sinp dot msu dot ru CC: aoliva at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot org GCC target triplet: x86_64-unknown-linux-gnu OtherBugsDependingO 20126 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22425