On Thursday 10 April 2008 06:54, Weddington, Eric wrote:

> > /* avr-gcc 4.4-20080404 + binutils 2.18 produce incorrect code: the
> > foo4()
> >    function stores 0 value to 'vp' variable.
> >    Options: -W -Wall -Os -mmcu=atmega2560
> >  */
> >
> > The code generated by 4.3.0 + Andy's combine patch shows that
> > the foo4()
> > function does NOT store 0 value to 'vp' variable. At least that's my
> > interpretation. As to the validity of what it is storing, I don't know
> > about that.
>
> On further reflection, let me add to the above.
>
> Dmitry, did you mean that this code:
>       ldi r24,lo8(gs(foo4))
>       ldi r25,hi8(gs(foo4))
>       sts (vp)+1,r25
>       sts vp,r24
> Stores an effective 0 value to 'vp'? That lo8(gs(foo4)) and hi(gs(foo4))
> evaluate to zero? I was interpreting what you wrote as it stored an
> immediate value of zero to 'vp'. I do not have a FSF GCC stock 4.3.0
> (unpatched) on which to reproduce here. Could you perhaps show the
> assembly that it produces?

Hi.

Yes, I have obtain the same result of compilation.

Incorrect is result of linking (avr-objdump -d):
     ldi  r24, 0
     ldi  r25, 0
in case of foo4() only.

The trampoline stub for foo4() was created correctly.

Regards,
Dmitry.



_______________________________________________
AVR-libc-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/avr-libc-dev

Reply via email to