[Bug target/35135] unable to find a register to spill in class ÂGENERAL_REGSÂ with global registers
rob1weld at aol dot com
gcc-bugzilla@gcc.gnu.org
Sun Feb 1 00:50:00 GMT 2009
------- Comment #9 from rob1weld at aol dot com 2009-02-01 00:49 -------
It can be compiled with ONE earlier version of gcc but not another - so this is
a regression.
Works on 4.0.2:
# /opt/csw/gcc4/bin/gcc -v
Reading specs from /opt/csw/gcc4/lib/gcc/i386-pc-solaris2.8/4.0.2/specs
Target: i386-pc-solaris2.8
Configured with: ../sources/gcc-4.0.2/configure --prefix=/opt/csw/gcc4
--with-local-prefix=/opt/csw --with-gnu-as --with-as=/opt/csw/bin/gas
--without-gnu-ld --with-ld=/usr/ccs/bin/ld --enable-threads=posix
--enable-shared --enable-multilib --enable-nls --with-included-gettext
--with-libiconv-prefix=/opt/csw --with-x --enable-java-awt=xlib
--with-system-zlib --enable-languages=c,c++,f95,java,objc,ada
Thread model: posix
gcc version 4.0.2
# /opt/csw/gcc4/bin/gcc -I./../arch/386 -I. -Wall -DHAVE_CONFIG_H -DFORCE_LL
-DFORCE_REG
-DDEFAULTPATH='".:/usr/local/lib/gforth/site-forth:/usr/local/share/gforth/site-forth:/usr/local/lib/gforth/0.7.0:/usr/local/share/gforth/0.7.0"'
-O3 -fno-gcse -fomit-frame-pointer -o engine-fast-ll-reg.o -c ./engine.c
# ls -lrtA | tail -1
-rw-r--r-- 1 root root 45848 Jan 31 16:44 engine-fast-ll-reg.o
Broken on 3.4.5:
# /opt/csw/gcc3/bin/gcc -v
Reading specs from /opt/csw/gcc3/lib/gcc/i386-pc-solaris2.8/3.4.5/specs
Configured with: ../sources/gcc-3.4.5/configure --prefix=/opt/csw/gcc3
--with-local-prefix=/opt/csw --with-gnu-as --with-as=/opt/csw/bin/gas
--without-gnu-ld --with-ld=/usr/ccs/bin/ld --enable-threads=posix
--enable-shared --enable-multilib --enable-nls --with-included-gettext
--with-libiconv-prefix=/opt/csw --with-x --enable-java-awt=xlib
--enable-languages=all
Thread model: posix
gcc version 3.4.5
# /opt/csw/gcc3/bin/gcc -I./../arch/386 -I. -Wall -DHAVE_CONFIG_H -DFORCE_LL
-DFORCE_REG
-DDEFAULTPATH='".:/usr/local/lib/gforth/site-forth:/usr/local/share/gforth/site-forth:/usr/local/lib/gforth/0.7.0:/usr/local/share/gforth/0.7.0"'
-O3 -fno-gcse -fomit-frame-pointer -o engine-fast-ll-reg.o -c ./engine.c
./engine.c: In function `gforth_engine':
./engine.c:460: error: unable to find a register to spill in class `DIREG'
./engine.c:460: error: this is the insn:
(insn:HI 10882 25685 10883 883 (parallel [
(set (reg:SI 2 cx [969])
(unspec:SI [
(mem:BLK (reg/v/f:SI 1 dx [orig:964 c_addr2 ] [964]) [0
A8])
(reg:QI 0 ax [973])
(const_int 1 [0x1])
(reg:SI 2 cx [972])
] 20))
(use (reg:SI 19 dirflag))
(clobber (reg/f:SI 1917 [ c_addr2 ]))
(clobber (reg:CC 17 flags))
]) 456 {*strlenqi_1} (insn_list 10878 (insn_list 10880 (insn_list 10881
(nil))))
(expr_list:REG_DEAD (reg:SI 19 dirflag)
(expr_list:REG_DEAD (reg:SI 2 cx [972])
(expr_list:REG_DEAD (reg:QI 0 ax [973])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(expr_list:REG_UNUSED (reg/f:SI 1917 [ c_addr2 ])
(nil)))))))
./engine.c:460: confused by earlier errors, bailing out
Rob
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35135
More information about the Gcc-bugs
mailing list