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: [email protected]
ReportedBy: [email protected]
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