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
Created attachment 10252 [details] Preprocessed file that produces ICE This is the preprocessed output of the file causing the ICE.
I think this is related to PR 19636.
PR 19636 fails only when compiled with -Os, while this one fails only when compiled with -O2 or -O3.
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 ***
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