http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56441
--- Comment #7 from gnugcc at emblocks dot org 2013-02-26 09:05:36 UTC --- I was looking completely wrong, the arm_addsi3 is acting wrong. The "add%?\\t%0, %1, %2" for "=l,%0,Py" is set at a length of 2. (first entry in the list) However the "ADD r6,r6, #65" is a thumb2 instruction which is 4 bytes and not 2. An "ADDS r6,r6,#65" will go right because this is a thumb instruction of 2 bytes. Same for the first "SUB" in the same list. So I end up with a miscalculation of 2bytes. Perhaps it's better to make it conservative and always use length of 4. I guess that this isn't the right way but I have put un-predicables in front of the predicable counter parts with the right length of 4.