This is blocking the GCC in SPEC2000 from building on SUSE's AMD64 test boxes. =================================================== extern int foo (unsigned short *x); static int __attribute__((noinline)) foo2 (x, sc) unsigned short *x; int sc; { return foo (x); } void euifrac (unsigned short *x, unsigned int *i, unsigned short *frac) { unsigned int ll; unsigned short xi[(6 +3)]; int j, k; foo (xi); k = (int) xi[1] - ((0x3fff) - 1); if (k > 32) { *i = ~(0L); foo (xi); } else if (k > 16) { j = k - ((k >> 4) << 4); foo2 (xi, j); ll = xi[2]; k -= j; do { int i; register unsigned short *p; register unsigned short *x = xi; p = x + 2; x += 2 + 1; for (i = 2; i < (6 +3) - 1; i++) *p++ = *x++; *p = 0; ll = (ll << 16) | xi[2]; } while ((k -= 16) > 0); *i = ll; } foo (xi); foo2 (xi, *frac); } =================================================== $ ./cc1 -O3 -ftree-loop-linear t.c foo2 euifrac Analyzing compilation unitPerforming intraprocedural optimizations Assembling functions: foo2 euifrac t.c: In function 'euifrac': t.c:13: internal compiler error: in base_addr_differ_p, at tree-data-ref.c:430 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. $ ./cc1 --version GNU C version 4.1.0 20050810 (experimental) (x86_64-unknown-linux-gnu) compiled by GNU C version 3.3.4 (pre 3.3.5 20040809). GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 $
-- Summary: ICE in in base_addr_differ_p, at tree-data-ref.c:430 Product: gcc Version: 4.1.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: steven at gcc dot gnu dot org CC: dberlin at gcc dot gnu dot org,gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23320