/* { dg-do compile } */ /* { dg-options "-Os" } */ /* { dg-options "-Os -msoft-float" { target { { i?86-* x86_64-* } && ilp32 } } } */
extern void bar (void); void foo (unsigned int x, unsigned int y, unsigned int z) { unsigned int a, b, d, e; unsigned int f = (8 << 12) + 0.000122 * 4096; b = (x << 12) + 0.000122 * 4096; e = (100 << 12) + 0.000122 * 4096; b = (unsigned long long) (((b << 13) / e) + 1) / 2; a = (y / 8); e = (a << 12) + 0.000122 * 4096; d = (unsigned long long) (b * e + 2048) >> 12; d = (unsigned long long) (d * f + 2048) >> 12; if (z >= d) bar (); } ICEs on i?86-linux (and x86_64-linux -m32) with -Os -msoft-float since r142892, with -fno-ira it worked until that option has been removed. -- Summary: [4.4/4.5 Regression] IRA ICE with -msoft-float Product: gcc Version: 4.4.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: rtl-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jakub at gcc dot gnu dot org GCC target triplet: i?86-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39762