This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
optimization/2967: gcc-2.95.4 hits internal error on the Hurd source with -O3
- To: gcc-gnats at gcc dot gnu dot org
- Subject: optimization/2967: gcc-2.95.4 hits internal error on the Hurd source with -O3
- From: marcus at gnu dot org
- Date: 27 May 2001 00:41:07 -0000
- Reply-To: marcus at gnu dot org
>Number: 2967
>Category: optimization
>Synopsis: gcc-2.95.4 hits internal error on the Hurd source with -O3
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: ice-on-legal-code
>Submitter-Id: net
>Arrival-Date: Sat May 26 17:46:00 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: Marcus Brinkmann <marcus@gnu.org>
>Release: gcc version 2.95.4 20010506 (Debian prerelease)
>Organization:
>Environment:
Debian GNU/Linux unstable for i386-linux
cross compilation via a different specs file and a gcc wrapper with i386-gnu as host arch
>Description:
When compiling the Hurd, I get an ice in libdiskfs. The Hurd is compiled with -O3 by default, and makes heavy use of inlining.
i386-gnu-gcc -O -Wall -g -O3 -I. -I../../libdiskfs -I.. -I../.. -I../../include -D_GNU_SOURCE -c -o file-syncfs.o ../../libdiskfs/file-syncfs.c -v -save-temps
Reading specs from /usr/lib/gcc-lib/i386-gnu/2.95.4/specs
gcc version 2.95.4 20010506 (Debian prerelease)
/usr/lib/gcc-lib/i386-gnu/2.95.4/cpp0 -lang-c -nostdinc -v -I. -I../../libdiskfs -I.. -I../.. -I../../include -D__GNUC__=2 -D__GNUC_MINOR__=95 -Di386 -Dunix -DMACH -D__GNU__ -D__i386__ -D__unix__ -D__MACH__ -D__GNU__ -D__i386 -D__unix -D__MACH -Acpu(i386) -Amachine(i386) -Asystem(unix) -Asystem(mach) -Asystem(gnu) -D__OPTIMIZE__ -g -Wall -D_GNU_SOURCE -isystem /usr/lib/gcc-lib/i386-gnu/2.95.4/include -isystem /usr/i386-gnu/include ../../libdiskfs/file-syncfs.c file-syncfs.i
GNU CPP version 2.95.4 20010506 (Debian prerelease) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
.
../../libdiskfs
..
../..
../../include
/usr/lib/gcc-lib/i386-gnu/2.95.4/include
/usr/i386-gnu/include
End of search list.
The following default directories have been omitted from the search path:
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../i386-linux/include
/usr/lib/gcc-lib/i386-linux/2.95.4/include
/usr/include
End of omitted list.
/usr/lib/gcc-lib/i386-gnu/2.95.4/cc1 file-syncfs.i -quiet -dumpbase file-syncfs.c -g -O -O3 -Wall -version -o file-syncfs.s
GNU C version 2.95.4 20010506 (Debian prerelease) (i386-linux) compiled by GNU C version 2.95.4 20010506 (Debian prerelease).
../../libdiskfs/file-syncfs.c: In function `helper':
../../libdiskfs/file-syncfs.c:61: Internal compiler error:
../../libdiskfs/file-syncfs.c:61: internal error--unrecognizable insn:
(insn/i 112 111 113 (parallel[
(set (reg/v:SI 42)
(asm_operands/v ("xchgl %0, %1") ("=&r") 0[
(reg:SI 41)
]
[
(asm_input:SI ("0"))
] ("/usr/i386-gnu/include/machine-lock.h") 53))
(set (mem/v:SI (reg/v:SI 39) 0)
(asm_operands/v ("xchgl %0, %1") ("=m") 1[
(reg:SI 41)
]
[
(asm_input:SI ("0"))
] ("/usr/i386-gnu/include/machine-lock.h") 53))
] ) -1 (insn_list 106 (insn_list 111 (nil)))
(expr_list:REG_DEAD (reg:SI 41)
(nil)))
>How-To-Repeat:
I simply compile the source file.
>Fix:
A work around is available. If compiled with -O2, gcc works fine.
>Release-Note:
>Audit-Trail:
>Unformatted: