avr-libc-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-libc-dev] [bugs #4101] setjmp/longjmp destroy changes in global


From: Dmitry K.
Subject: Re: [avr-libc-dev] [bugs #4101] setjmp/longjmp destroy changes in global registers
Date: Fri, 14 Jan 2005 08:58:51 +1000
User-agent: KMail/1.5

On Friday 14 January 2005 08:00, you wrote:
> What is the expected result from the testsuite?  It bails out for me
> at:
>
> -------- Preservation call-saved regs:  at90s2313 -O1
>
> Simulating a at90s2313 device.
>
> WARNING: file avrcore.c: line 1135: Device does not have PORTC.
> *** Simulate: exit with non-zero code

Yes! Test work!

I use avr-gcc 3.3 branch only.
I try 3.4.1: generated code differ !!!

avr-gcc-3.3.4 -Os -S test.c:
~~~~~~~~~~~~~
   foo:
   /* prologue: frame size=0 */
        push r3
        ...
        push r17
        push r28
        push r29
   /* prologue end (size=17) */
        ldi r24,lo8(env)
        ldi r25,hi8(env)
        rcall setjmp
        or r24,r25
        brne .L3
        clr r2
        ldi r22,lo8(1)
        ldi r23,hi8(1)
        ldi r24,lo8(env)
        ldi r25,hi8(env)
        rcall longjmp
   .L3:
        mov r24,r2
        clr r25
   /* epilogue: frame size=0 */
        pop r29
        pop r28
        pop r17
        ...
        pop r3
        ret

avr-gcc-3.4.1 -Os -S test.c:
~~~~~~~~~~~~~
   foo:
   /* prologue: frame size=0 */
   /* prologue end (size=0) */
        ldi r24,lo8(env)
        ldi r25,hi8(env)
        rcall setjmp
        or r24,r25
        brne .L3
        clr r2
        ldi r22,lo8(1)
        ldi r23,hi8(1)
        ldi r24,lo8(env)
        ldi r25,hi8(env)
        rcall longjmp
   .L3:
        mov r24,r2
        clr r25
   /* epilogue: frame size=0 */
        ret

Thanks, I will look, why it is.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]