Bug 24894

Summary: ICE building newlib/libc/misc/init.c
Product: gcc Reporter: Joel Sherrill <joel>
Component: targetAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED DUPLICATE    
Severity: normal CC: eric.weddington, gcc-bugs, j.w.r.degoede, joel.sherrill, joel
Priority: P3 Keywords: ice-on-valid-code
Version: 4.1.0   
Target Milestone: ---   
Host: Target: avr-rtems4.7
Build: Known to work:
Known to fail: Last reconfirmed:
Bug Depends on: 19636    
Bug Blocks:    
Attachments: Preprocessed file that produces ICE

Description Joel Sherrill 2005-11-16 15:29:12 UTC
GCC head as of 16 Nov with newlib 1.13.0.  Configured as follows:

../gcc-head-test/configure --target=avr-rtems4.7 --enable-threads=rtems --prefix=/home/joel/gcc-41-test/ --with-gnu-as --with-gnu-ld --with-newlib --verbose --with-system-zlib --disable-nls --enable-version-specific-runtime-libs --enable-languages=c

Fails with this:

home/joel/gcc-work/head/b-avr-rtems4.7/./gcc/xgcc -B/home/joel/gcc-work/head/b-avr-rtems4.7/./gcc/ -nostdinc -B/home/joel/gcc-work/head/b-avr-rtems4.7/avr-rtems4.7/avr3/newlib/ -isystem /home/joel/gcc-work/head/b-avr-rtems4.7/avr-rtems4.7/avr3/newlib/targ-include -isystem /home/joel/gcc-work/head/gcc-head-test/newlib/libc/include -B/home/joel/gcc-41-test//avr-rtems4.7/bin/ -B/home/joel/gcc-41-test//avr-rtems4.7/lib/ -isystem /home/joel/gcc-41-test//avr-rtems4.7/include -isystem /home/joel/gcc-41-test//avr-rtems4.7/sys-include  -mmcu=avr3 -DPACKAGE=\"newlib\" -DVERSION=\"1.13.0\"  -I. -I../../../../../../gcc-head-test/newlib/libc/misc  -Os -DPREFER_SIZE_OVER_SPEED -mcall-prologues -DHAVE_GETTIMEOFDAY -DMALLOC_PROVIDED -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_OPENDIR -DNO_EXEC -DHAVE_FCNTL -fno-builtin      -O2 -g -O2   -mmcu=avr3 -c ../../../../../../gcc-head-test/newlib/libc/misc/init.c
../../../../../../gcc-head-test/newlib/libc/misc/init.c: In function '__libc_fini_array':   ../../../../../../gcc-head-test/newlib/libc/misc/init.c:59: error: unable to find a register to spill in class 'BASE_POINTER_REGS'
../../../../../../gcc-head-test/newlib/libc/misc/init.c:59: error: this is the insn:
(insn 64 31 32 2 ../../../../../../gcc-head-test/newlib/libc/misc/init.c:56 (set (mem/c:HI (plus:HI (reg/f:HI 28 r28)
                (const_int 1 [0x1])) [5 S2 A8])
        (reg:HI 24 r24)) 12 {*movhi} (nil)
    (nil))
../../../../../../gcc-head-test/newlib/libc/misc/init.c:59: internal compiler error: in spill_failure, at reload1.c:1890

Preprocessed output attached
Comment 1 Joel Sherrill 2005-11-16 15:30:19 UTC
Created attachment 10252 [details]
Preprocessed file that produces ICE

This is the preprocessed output of the file causing the ICE.
Comment 2 Andrew Pinski 2005-11-16 15:36:58 UTC
I think this is related to PR 19636.
Comment 3 berndtrog 2005-12-08 17:14:14 UTC
PR 19636 fails only when compiled with -Os, while
this one fails only when compiled with -O2 or -O3.
Comment 4 Eric Weddington 2007-06-10 16:43:44 UTC
This looks like a duplicate of bug #31786. Closing this bug as #31786 has more analysis in the comments and is confirmed.

*** This bug has been marked as a duplicate of 31786 ***
Comment 5 aesok 2008-09-14 12:51:48 UTC
Subject: Bug 24894

Author: aesok
Date: Sun Sep 14 12:50:10 2008
New Revision: 140360

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140360
Log:
	PR target/19636
	PR target/24894
	PR target/31644
	PR target/31786
	* config/avr/avr.c (legitimate_address_p): Fix problem where subreg
	is not recognized as a valid register usage. Allow REG_X to be used
	as a base pointer.
	* config/avr/avr.h (LEGITIMIZE_RELOAD_ADDRESS): Remove code that
	forces a reload when using a base register.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/avr/avr.c
    trunk/gcc/config/avr/avr.h