Package: gcc-4.0
Version: 4.0.0-12
Severity: important

Compiling tin 1.7.10+20050727 on m68k fails.

gcc -DHAVE_CONFIG_H -I. -I../include -I/usr/include  
-DLOCALEDIR=\"/usr/share/locale\" -I../include  -DUSE_CANLOCK  -D_GNU_SOURCE -g 
-O2  -c ./save.c
./save.c: In function 'uudecode_line':
./save.c:1053: error: unable to find a register to spill in class 'ADDR_REGS'
./save.c:1053: error: this is the insn:
(insn 22 21 23 0 ./save.c:1031 (set (reg/v:SI 12 %a4 [orig:40 n.152 ] [40])
        (plus:SI (subreg:SI (mem:QI (reg/v/f:SI 10 %a2 [orig:46 buf ] [46]) [0 
S1 A8]) 0)
            (const_int 32 [0x20]))) 95 {*addsi3_internal} 
(insn_list:REG_DEP_TRUE 13 (nil))
    (nil))
./save.c:1053: confused by earlier errors, bailing out
make: *** [save.o] Error 1


How to reproduce:

$ apt-get unpack tin
$ ./debian/rules configure
$ cd build-tree/tin-1.7.10/src/
$ make save.o

Using -O1 fixes it, and if I move uudecode_line() alone to a new file
I cannot reproduce the bug (so I cannot provide a simple test case).

I do not think that this function has changed in the last few years, so
it's probably a gcc 4.0 regression.

-- 
ciao,
Marco

Attachment: signature.asc
Description: Digital signature

Reply via email to