http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56439
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> 2013-02-25 03:53:25 UTC --- (In reply to comment #2) > Any specific sections you can point me to? I'd be interested to hear a > justification for this behavior. Simple answer, an interrupt can happen any time after the access/assignment of the global register variable so it needs to be set to the value and treated as a volatile variable.