gcc.c-torture/compile/20020604-1.c ICEs if compiled with
-O3 -fomit-frame-pointer -mcpu=5485.
Here is a reduced testcase min.c.
unsigned int
foo (unsigned int n)
{
float c[8192];
unsigned int i;
unsigned int d = 0;
union {
float r;
unsigned int i;
} e;
for (i = 0; i < n; i++)
{
e.r = c[i];
d = e.i;
}
return d;
}
I get:
$ ./cc1 -quiet -O3 -fomit-frame-pointer -mcpu=5485 min.c
min.c: In function 'foo':
min.c:17: error: insn does not satisfy its constraints:
(insn 42 73 43 5 min.c:13 (set (mem/s/c:SF (plus:SI (reg/f:SI 15 %sp)
(reg:SI 2 %d2)) [0 e.r+0 S4 A16])
(mem/s:SF (post_inc:SI (reg:SI 8 %a0 [orig:55 ivtmp.30 ] [55])) [3 c S4
A16])) 46 {movsf_cf_hard} (expr_list:REG_INC (reg:SI 8 %a0 [orig:55 ivtmp.30 ]
[55])
(nil)))
min.c:17: internal compiler error: in reload_cse_simplify_operands, at
postreload.c:396
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
A quick analysis shows that the following appears in min.c.172r.greg.
(insn 42 73 43 5 min.c:13 (set (mem/s/c:SF (plus:SI (reg/f:SI 15 %sp)
(reg:SI 2 %d2)) [0 e.r+0 S4 A16])
(mem/s:SF (post_inc:SI (reg:SI 8 %a0 [orig:55 ivtmp.30 ] [55])) [3 c S4
A16])) 46 {movsf_cf_hard} (expr_list:REG_INC (reg:SI 8 %a0 [orig:55 ivtmp.30 ]
[55])
(nil)))
Notice that SET_SRC has an address of the form SP + D2, which is
invalid on ColdFire.
--
Summary: gcc.c-torture/compile/20020604-1.c ICEs
Product: gcc
Version: 4.3.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: kazu at gcc dot gnu dot org
GCC target triplet: m68k-elf
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32423