http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45099
Georg-Johann Lay <gjl at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED CC| |gjl at gcc dot gnu.org Resolution| |FIXED Target Milestone|--- |4.7.0 --- Comment #2 from Georg-Johann Lay <gjl at gcc dot gnu.org> 2011-05-16 14:36:32 UTC --- Closed as resolved+fixed according to the patch above. The patch issues an error and not a warning as indicated in the PR. This is because the code will break at runtime if it reaches the spot, anyway, so the program will always show malfunction. A global register is *global*, so it would be an error to save/restore it in function prologue/epilogue. For that reason, avr-gcc explicitely excludes global registers from prologue/epilogue (otherwise the value of a global reg could never escape a function, as opposed to being global).