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

Reply via email to