https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48429
--- Comment #2 from Sven <sven.koehler at gmail dot com> --- Even 8 years later, this bug is not fixed (gcc 8.3). I believe clang/llvm has the same problem. Anyhow, that's not the only problem. The moment that a function is called, registers r0 to r3 (and maybe others) have to be saved. Then again, you probably don't call a function in your FIQ since you want it to be fast. With the help of gcc's generated assembly, I write my FIQ handler in assembler. I don't mind, but fixing this would be very convenient.