http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39585 --- Comment #3 from Petteri Aimonen <jpa at gcc dot mail.kapsi.fi> 2011-04-04 13:46:13 UTC --- A workaround for this bug: #define __irq__ __attribute__((interrupt("IRQ"), optimize("O2")))