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.