This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
optimization/5968: flow.c ICE compiling 254.gap on ia64 with -O2 -funroll-loops
- From: janis187 at us dot ibm dot com
- To: gcc-gnats at gcc dot gnu dot org
- Date: 14 Mar 2002 22:22:41 -0000
- Subject: optimization/5968: flow.c ICE compiling 254.gap on ia64 with -O2 -funroll-loops
- Reply-to: janis187 at us dot ibm dot com
>Number: 5968
>Category: optimization
>Synopsis: flow.c ICE compiling 254.gap on ia64 with -O2 -funroll-loops
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Thu Mar 14 14:26:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: Janis Johnson
>Release: gcc version 3.1 20020314 (prerelease)
>Organization:
>Environment:
Itanium, Red Hat Linux release 7.1.94 (Roswell)
>Description:
GCC 3.1 prerelease gets an ICE compiling 254.gap from SPEC
CPU2000 with "-O2 -funroll-loops" on ia64-unknown-linux-gnu.
Compiler output is:
bug.c: In function `f':
bug.c:49: Attempt to delete prologue/epilogue insn:
(insn 553 551 555 (set (reg:DI 333 ar.lc)
(reg:DI 34 r35)) -1 (nil)
(nil))
bug.c:49: Internal compiler error in propagate_one_insn, at flow.c:1573
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
This is a regression from GCC 3.0.4.
>How-To-Repeat:
Compile the test case on ia64 with -O2 -funroll-loops.
>Fix:
Unknown
>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/plain; name="bug.c"
Content-Disposition: inline; filename="bug.c"
/* This test case is extracted from file costab.c in 254.gap in SPEC
CPU2000. It's been cut down significantly and the names have been
changed. The ICE seen when compiling the original file is the same
with this version. That ICE occurs with gcc version 3.1 20020314
(prerelease) on ia64-unknown-linux-gnu.
From the original file: */
/***************************************************************************
**
*A costab.c GAP source Martin Schoenert
*A & Volkmar Felsch
**
*Y Copyright 1990-1992, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany
**
****************************************************************************
*/
struct S {int i;};
typedef struct S * T;
extern T Error (const char *);
static long lenw;
T
f (T hdCall)
{
T * p1;
T * p2;
T * p3;
long n = 10;
long leng;
long i, j, k = 3;
long gen = 0;
if ((long)p3[0] != lenw)
return Error( "message 1");
if ((long)p3[k] < 0)
for ( i = k; i <= leng; i++)
p3[i] = (T)(-(long)p3[i]);
for (i = 1; i <= n; i++)
if ((long)p1[i] <= -i || (long)p1[i] >= i
|| (long)p2[i] <= -i || (long)p2[i] >= i )
return Error ("message 2");
return (T)gen;
}