------- Comment #1 from hutchinsonandy at gcc dot gnu dot org 2009-11-26 17:12 ------- R1 and R0 are used at assembler level outside of compiler scope. R1 is always expected to contain as a zero value - to avoid using a register to load this common value. R1 maybe used in assembler for other purposes - but must be restored to zero.
R0 is used as a temporary - to get around awkward situation created by compiler like a = *a; Thus any ISR will always save these values - and clear r1. Gcc cannot "see" either r1 or r0 or otherwise track usage. While we may debate the merits of this approach. It has been this way from day one and will not change. :-( -- hutchinsonandy at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |WONTFIX http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41077