http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56442
Bug #: 56442 Summary: Could not identify that register is clobbered already Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: major Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: pitchuman...@atmel.com Wrong code is generated for avr target when gcc-4.7.2 is used. Test case: dejagnu test gcc.dg/var-expand2.c command line options: -O2 -funroll-loops -ffast-math -mmcu=atxmega128b1 (snip of assembly) ldi r24,lo8(array+4) ldi r25,hi8(array+4) sub r14,r24 sbc r15,r25 lsr r15 ror r14 lsr r15 ror r14 ldi r25,3 ;; r25 is overwritten and r14,r25 clr r15 lds r18,array lds r19,array+1 lds r20,array+2 lds r21,array+3 movw r28,r24 ;; register pair r24/r25 is used (snip of assembly) conversation on mailing list: http://gcc.gnu.org/ml/gcc/2013-02/msg00264.html