This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

optimization/5968: flow.c ICE compiling 254.gap on ia64 with -O2 -funroll-loops



>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;
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]