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

Reply via email to