This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/16643] New: [3.4 Regression] verify_local_live_at_start ICE after crossjumping & cfgcleanup
- From: "rsandifo at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Jul 2004 13:03:11 -0000
- Subject: [Bug rtl-optimization/16643] New: [3.4 Regression] verify_local_live_at_start ICE after crossjumping & cfgcleanup
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Compiling:
void f (int a, int b, int c, int d, int e, int *f)
{
if (a == 0)
if (b == 0)
if (c == 0)
if (d == 0)
{
*f += e;
return;
}
*f += e;
return;
}
with "mips64-elf-gcc -O2" gives:
/tmp/foo.c: In function `f':
/tmp/foo.c:13: internal compiler error: in verify_local_live_at_start, at flow.c:546
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
Same thing for other mips targets, like mips64-linux-gnu. The problem
is really target-independent: cleanup_cfg (CLEANUP_CFGLAYOUT), called
from within bbreorder, is deleting uses of registers and not updating
liveness information. This in turn seems to expose a problem with
try_simplify_condjump() not updating the forwarder block flags.
Testing a couple of fixes now.
--
Summary: [3.4 Regression] verify_local_live_at_start ICE after
crossjumping & cfgcleanup
Product: gcc
Version: 3.4.1
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P2
Component: rtl-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rsandifo at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: mips64-elf
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16643