------- Additional Comments From eisvogel at seitics dot de 2005-04-22 16:10 ------- This bug is AFAICT not fully resolved in 4.0 HEAD as of today. The test case compiles under 3.4.3, though. The code snippet used to be part of an MD5 transform function but I have stripped it down to the point where it is still valid C code but does not do anything useful any more. In this state removing any of the remaining lines usually prevents the ICE from occurring, most notably the LPM macro (taken from avr-libc HEAD).
$ avr-gcc -Os -mmcu=atmega162 -c test.c test.c: In function 'test': test.c:46: error: unable to find a register to spill in class 'POINTER_REGS' test.c:46: error: this is the insn: (insn 18 115 20 0 (set (reg/v:SI 56 [ a ]) (mem:SI (post_inc:HI (reg/f:HI 22 r22 [orig:59 D.1226 ] [59])) [2 S4 A8])) 14 {*movsi} (insn_list:REG_DEP_TRUE 115 (nil)) (expr_list:REG_INC (reg/f:HI 22 r22 [orig:59 D.1226 ] [59]) (nil))) test.c:46: internal compiler error: in spill_failure, at reload1.c:1897 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. Compiler version: $ avr-gcc -v Using built-in specs. Target: avr Configured with: ../configure --target=avr --prefix=/home/eisvogel/avr --enable-languages=c,c++ --disable-nls Thread model: single gcc version 4.1.0 20050422 (experimental) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18251