> -----Original Message-----
> From: 
> avr-libc-dev-bounces+eric.weddington=atmel....@nongnu.org 
> [mailto:avr-libc-dev-bounces+eric.weddington=atmel....@nongnu.
> org] On Behalf Of David Brown
> Sent: Monday, November 23, 2009 3:25 AM
> To: avr-libc-dev@nongnu.org
> Subject: [avr-libc-dev] Re: eeprom_read_byte and clr ret_hi
> 
> Weddington, Eric wrote:
> > 
> > 
> >> -----Original Message----- From: 
> >> avr-libc-dev-bounces+eric.weddington=atmel....@nongnu.org 
> >> [mailto:avr-libc-dev-bounces+eric.weddington=atmel....@nongnu. org]
> >> On Behalf Of Dmitry K. Sent: Sunday, November 22, 2009 12:21 AM To:
> >> avr-libc-dev@nongnu.org Subject: Re: [avr-libc-dev]
> >> eeprom_read_byte and clr ret_hi
> >> 
> >>>> eeprom_read_byte returns a uint8_t. Why does it clear r25? 
> >>>> eerd_byte.S: clr     ret_hi
> >>>> 
> >>>> Does the AVR ABI require that r25 be zeroed in a function
> >> returning a
> >>>> single byte? If not, this instruction could be removed.
> >> This is a misty point. Look an example:
> >> 
> >> unsigned char foo1 (unsigned char *p) { return *p; }
> >> 
> >> extern unsigned char ext2 (void); int foo2 (void) { return ext2() +
> >> 1; }
> >> 
> >> Old Avr-gcc (3.3 - 4.2) are clear R25 in both cases: foo1() and
> >> foo2().  The new Avr-gcc (4.3.3 and 4.4.2) are not clear R25 in
> >> foo1().
> >> 
> >> Note, the function return value is present only in expression. So
> >> it is promoted to integer. So it would be better to clear R25 in
> >> foo1() only (at one place).
> > 
> > I agree that that is the way it should be.
> > 
> 
> I'm a little confused by this - I hope this is not implying a 
> return to 
> avr-gcc 4.2 R25 clearing?

No, that wasn't my intention. I was merely commenting that the return type of 
the macro/function should not be made int (16-bit), that it should be a byte 
(uint8_t) as the API name implicates. If it is returned as a byte, then yes it 
is implied and I agree that R25 should not be cleared.

 
> Is this regression is news to you, I can take it up in the 
> main avr-gcc 
> mailing list and/or a missed optimisation bug report.

Please fill out a bug report. That way it won't get lost.


_______________________________________________
AVR-libc-dev mailing list
AVR-libc-dev@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-libc-dev

Reply via email to