This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug optimization/15127] New: spill_failure (class DIREG) in gcc.c-torture/execute/20010915-1.c
- From: "mseigneurin at tiscali dot fr" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Apr 2004 11:15:16 -0000
- Subject: [Bug optimization/15127] New: spill_failure (class DIREG) in gcc.c-torture/execute/20010915-1.c
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
check-gcc reports failure on execute/20010915-1.c with optimizer settings:
-O3 -fomit-frame-pointer -funroll-loops
or
-O3 -fomit-frame-pointer -funroll-all-loops -finline-functions
Reproduceable also with
-O3 -funroll-all-loops
No failure with
-O3 -funroll-loops
-------------------
Command and output:
-------------------
cvs $ cvs-gcc -v -save-temps -O3 -funroll-all-loops
/opt/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20010915-1.c
Reading specs from /opt/gcc/inst/lib/gcc/x86_64-unknown-linux-gnu/3.5.0/specs
Configured with: ../gcc/configure --prefix=/opt/gcc/inst --program-prefix=cvs-
--enable-languges=c,c++ --disable-multilib
Thread model: posix
gcc version 3.5.0 20040424 (experimental)
/opt/gcc/inst/libexec/gcc/x86_64-unknown-linux-gnu/3.5.0/cc1 -E -quiet -v
/opt/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20010915-1.c -mtune=k8
-funroll-all-loops -O3 -o 20010915-1.i
ignoring nonexistent directory
"/opt/gcc/inst/lib/gcc/x86_64-unknown-linux-gnu/3.5.0/../../../../x86_64-unknown-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/opt/gcc/inst/include
/opt/gcc/inst/lib/gcc/x86_64-unknown-linux-gnu/3.5.0/include
/usr/include
End of search list.
/opt/gcc/inst/libexec/gcc/x86_64-unknown-linux-gnu/3.5.0/cc1 -fpreprocessed
20010915-1.i -quiet -dumpbase 20010915-1.c -mtune=k8 -auxbase 20010915-1 -O3
-version -funroll-all-loops -o 20010915-1.s
GNU C version 3.5.0 20040424 (experimental) (x86_64-unknown-linux-gnu)
compiled by GNU C version 3.5.0 20040424 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
/opt/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20010915-1.c: In function `x':
/opt/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20010915-1.c:50: error: unable
to find a register to spill in class `DIREG'
/opt/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20010915-1.c:50: error: this is
the insn:
(insn:HI 49 48 50 2 (parallel [
(set (reg:CC 17 flags)
(compare:CC (mem:BLK (reg/f:DI 38 r9 [73]) [0 A8])
(mem/s/u:BLK (reg/f:DI 41 r12 [163]) [4 S2 A8])))
(use (reg:DI 6 bp [84]))
(use (const_int 1 [0x1]))
(use (reg:SI 19 dirflag))
(clobber (reg/f:DI 4 si [orig:82 v ] [82]))
(clobber (reg/f:DI 0 ax [83]))
(clobber (reg:DI 2 cx [206]))
]) 639 {*cmpstrqi_nz_rex_1} (insn_list 46 (insn_list 47 (insn_list 48
(nil))))
(expr_list:REG_UNUSED (reg:DI 2 cx [206])
(expr_list:REG_UNUSED (reg/f:DI 0 ax [83])
(expr_list:REG_UNUSED (reg/f:DI 4 si [orig:82 v ] [82])
(expr_list:REG_DEAD (reg:SI 19 dirflag)
(expr_list:REG_UNUSED (reg:DI 2 cx [206])
(expr_list:REG_UNUSED (reg/f:DI 0 ax [83])
(expr_list:REG_UNUSED (reg/f:DI 4 si [orig:82 v ] [82])
(expr_list:REG_EQUAL (compare:CC (mem:BLK
(reg/f:DI 38 r9 [73]) [0 A8])
(mem/s/u:BLK (symbol_ref/f:DI ("*.LC0")
[flags 0x2] <string_cst 0x2a9597f900>) [4 S2 A8]))
(nil))))))))))
/opt/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20010915-1.c:50: internal
compiler error: in spill_failure, at reload1.c:1887
--------------------
Additional info
--------------------
- same snapshot works fine on standard a "normal" i386 (P4)
- this testcase compiles fine with the following gcc:
gcc -v
Reading specs from /usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.3/specs
Configured with: /var/tmp/portage/gcc-3.3.3/work/gcc-3.3.3/configure
--prefix=/usr --bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/3.3
--includedir=/usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.3/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/3.3
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/3.3/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/3.3/info --enable-shared
--host=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu --with-system-zlib
--enable-languages=c,c++,f77,objc --enable-threads=posix --enable-long-long
--disable-checking --enable-cstdio=stdio --enable-clocale=generic
--enable-__cxa_atexit --enable-version-specific-runtime-libs
--with-gxx-include-dir=/usr/lib/gcc-lib/x86_64-pc-linux-gnu/3.3.3/include/g++-v3
--with-local-prefix=/usr/local --enable-shared --enable-nls
--without-included-gettext --disable-multilib
Thread model: posix
gcc version 3.3.3 20040217 (Gentoo Linux 3.3.3, propolice-3.3-7)
------------------
System info
------------------
Athon64 CPU, VIA based MB
Kernel 2.6.6
glibc 2.3.3 20040207
--
Summary: spill_failure (class DIREG) in gcc.c-
torture/execute/20010915-1.c
Product: gcc
Version: 3.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mseigneurin at tiscali dot fr
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: x86_64-pc-linux-gnu
GCC host triplet: x86_64-pc-linux-gnu
GCC target triplet: x86_64-pc-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15127