This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/20409] New: ICE in simplify_subreg with -fprofile-generate
- From: "jakub at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 10 Mar 2005 16:21:34 -0000
- Subject: [Bug target/20409] New: ICE in simplify_subreg with -fprofile-generate
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
/* { dg-do compile } */
/* { dg-options "-O2 -fprofile-generate" } */
struct S
{
int a;
void **b;
};
void
foo (struct S *x, int y)
{
if (!x)
return;
if (y >= x->a)
return;
x->a--;
for (; y < x->a; y++)
x->b[y] = x->b[y + 1];
x->b[x->a] = (void *) 0;
}
ICEs on IA-64 during combine, but the bug is earlier.
CSE2 creates:
(insn 42 41 87 3 (set (reg/v:SI 344 [ y.8 ])
(reg:DI 378)) 4 {*movsi_internal} (nil)
(nil))
which is invalid because the modes don't match.
Before CSE2 there is:
(insn 100 99 101 0 (set (reg:DI 378)
(reg:DI 113 in1)) -1 (nil)
(nil))
...
(insn 103 102 104 0 (set (reg:DI 113 in1)
(reg:DI 378)) -1 (nil)
(nil))
...
(insn 12 11 13 0 (set (reg/v:SI 350 [ y ])
(reg:SI 113 in1 [ y ])) 4 {*movsi_internal} (nil)
(nil))
...
(insn 42 41 87 3 (set (reg/v:SI 344 [ y.8 ])
(reg/v:SI 350 [ y ])) 4 {*movsi_internal} (nil)
(nil))
where insns 100 and 103 and code around it are created by .bp pass.
--
Summary: ICE in simplify_subreg with -fprofile-generate
Product: gcc
Version: 4.0.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: critical
Priority: P2
Component: target
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jakub at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: ia64-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20409