c/4555: Internal compiler error in eliminate_regs, at reload1.c:2571,w/minimal source file

Jim Meyering jim@meyering.net
Fri Oct 12 05:06:00 GMT 2001


>Number:         4555
>Category:       c
>Synopsis:       Internal compiler error in eliminate_regs, at reload1.c:2571
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Fri Oct 12 05:06:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator:     Jim Meyering
>Release:        3.1 20011011 (experimental)
>Organization:
<organization of PR author (multiple lines)>
>Environment:
System: Linux Y 2.4.12 #3 SMP Thu Oct 11 23:11:15 CEST 2001 i686 unknown
Architecture: i686

	<machine, os, target, libraries (multiple lines)>
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: /mirror/d/gcc/configure --disable-nls --prefix=/p/p/gcc-2001-10-12.03h22
>Description:
	Internal compiler error in eliminate_regs, at reload1.c:2571
>How-To-Repeat:

  $ gcc -O2 emacsserver.i
  emacsserver.i: In function `main':
  emacsserver.i:38: Internal compiler error in eliminate_regs, at reload1.c:2571
  Please submit a full bug report,
  with preprocessed source if appropriate.
  See <URL: http://www.gnu.org/software/gcc/bugs.html > for instructions.
  [Exit 1]

Here's emacsserver.i (pared down to the minimum)

--=-=-=
Content-Disposition: attachment; filename=emacsserver.i

typedef long int __fd_mask;
typedef struct
{
  __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
}
fd_set;

int
main ()
{
  fd_set rmask;
  do
    {
      int __d0, __d1;
      __asm__ __volatile__ ("cld; rep; stosl":"=c" (__d0),
			    "=D" (__d1):"a" (0),
			    "0" (sizeof (fd_set) / sizeof (__fd_mask)),
			    "1" (&((&rmask)->__fds_bits)[0]):"memory");
    }
  while (0);

  if (select (1, &rmask, 0, 0, 0) < 0)
    return 1;

  if ((__extension__ (
		       {
			 register char __result;
			 __asm__
			   __volatile__ ("btl %1,%2 ; setcb %b0":"=q" (__result):"r"
					 (((int) (0)) % (8 * sizeof (__fd_mask))),
					 "m" (((&rmask)->
					       __fds_bits)[((0) / (8 * sizeof (__fd_mask)))]):"cc");
			 __result;
		       }
		       )))
    {
    }
}

--=-=-=


FYI, it came from this source:
#include <sys/types.h>
int
main ()
{
  fd_set rmask;
  FD_ZERO (&rmask);
  if (select (1, &rmask, 0, 0, 0) < 0)
    return 1;

  if (FD_ISSET (0, &rmask))
    {
    }
}
-------------------------
  $ gcc -v
  Reading specs from /p/p/gcc-2001-10-12.03h22/lib/gcc-lib/i686-pc-linux-gnu/3.1/specs
  Configured with: /mirror/d/gcc/configure --disable-nls --prefix=/p/p/gcc-2001-10-12.03h22
  Thread model: single
  gcc version 3.1 20011011 (experimental)

--=-=-=--
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
 --=-=-=
 
 I reported this problem 10 days ago, here:
 
   http://gcc.gnu.org/ml/gcc-bugs/2001-09/msg00860.html
 
 but that report included emacsserver.i in its full glory.
 
 In case it helps, I've just confirmed that the bug persists
 in today's sources (at least as of a few hours ago), and
 I've pared down emacsserver.i to a much smaller file that still
 evokes the ICE.
 



More information about the Gcc-prs mailing list