Compiling the file from the attachment with -Os or greater -O1 results into the compiler producing this:
# avr-rtems4.7-gcc -mmcu=avr5 -Os -g -Wall -c -o termios.o termios.c termios.c: In function `termios_open': termios.c:97: error: unable to find a register to spill in class `POINTER_REGS' termios.c:97: error: this is the insn: (insn 66 63 120 3 termios.c:91 (parallel [ (set (mem:BLK (reg/v/f:HI 28 r28 [orig:44 tty ] [44]) [0 A8]) (mem:BLK (reg/v/f:HI 45 [ callbacks ]) [0 A8])) (use (reg:QI 24 r24 [55])) (use (const_int 1 [0x1])) (clobber (scratch:HI)) (clobber (scratch:HI)) (clobber (scratch:QI)) ]) 16 {*movstrqi_insn} (insn_list 62 (insn_list 63 (nil))) (expr_list:REG_DEAD (reg:QI 24 r24 [55]) (expr_list:REG_DEAD (reg/v/f:HI 45 [ callbacks ]) (expr_list:REG_UNUSED (scratch:QI) (expr_list:REG_UNUSED (scratch:HI) (expr_list:REG_UNUSED (scratch:HI) (nil))))))) termios.c:97: confused by earlier errors, bailing out avr-rtems* basically is identical to the bare avr, so I'd expect this bug to be reproducable with all avr-* GCC's # avr-rtems4.7-gcc --version avr-rtems4.7-gcc (GCC) 3.4.3 20041027 (prerelease) -- Summary: unable to find a register to spill in class `POINTER_REGS' Product: gcc Version: 3.4.3 Status: UNCONFIRMED Severity: normal Priority: P2 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ralf_corsepius at rtems dot org CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: avr* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18251