http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50281
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-09-03 01:38:44 UTC --- Oh the real issue is that the : "r" (a_u4), "r" (b_u4) Those two arguments could be in r0 or r1. Also the generated asm does not correspond to the source you gave as there is an extra push/pop r10.