This bug is seen using the avr-gcc that gets built by the script that comes with FemtoOS 0.88.
reg...@john-home:~/volatile/tmp140$ avr-gcc -O1 small.c small.c: In function 'uint32func': small.c:22: error: unable to find a register to spill in class 'POINTER_REGS' small.c:22: error: this is the insn: (insn 61 59 141 4 small.c:20 (set (reg:SI 24 r24 [55]) (ashiftrt:SI (subreg:SI (reg/v:DI 46 [ p_48 ]) 0) (const_int 31 [0x1f]))) 60 {ashrsi3} (nil)) small.c:22: confused by earlier errors, bailing out reg...@john-home:~/volatile/tmp140$ avr-gcc -v Using built-in specs. Target: avr Configured with: ../gcc-4.3.3/configure --prefix=/home/regehr/avr-gcc-test --target=avr --with-gnu-ld --with-gnu-as --enable-languages=c,c++ --disable-nls --disable-libssp --with-dwarf2 Thread model: single gcc version 4.3.3 (GCC) reg...@john-home:~/volatile/tmp140$ cat small.c typedef int uint64_t __attribute__ ((__mode__ (__DI__))); static long int safe_mod_func_int32_t_s_s (long int _si1, long int _si2) { return -1 ? _si1 : 1; } uint64_t safe_sub_func_uint64_t_u_u (uint64_t _ui1, uint64_t _ui2) { return 0; } int foo (int,int,int); int bar (int); long int g_14; int uint32func (uint64_t p_48) { return foo (safe_mod_func_int32_t_s_s (p_48, 0) == safe_sub_func_uint64_t_u_u (g_14, 1), bar (g_14 == 1), 1); } -- Summary: ice for AVR target: unable to find a register to spill in class 'POINTER_REGS' Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: regehr at cs dot utah dot edu GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: avr http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39212