http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53735
Richard Earnshaw <rearnsha at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |WONTFIX --- Comment #5 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- Realistically, we're never going to be able to fix this. You've tied the compilers hands behind it's back and it's then unable to keep its balance when you give it a push. In Thumb1 code, when optimizing for space, you've got just r0-r6 available in general (r7 is used for the frame pointer). Your source code tries to use all 7 of them (a1[r0]-a4[r3], v1[r4], r5 and v3[r6]). That just leaves r7 (the frame pointer) for the compiler to use for everything, so it's no surprise that things then fall apart.