http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50281
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-09-03 01:13:00 UTC --- I think your inline-asm is broken. You have: : "=&r" (answer) : "r" (a_u4), "r" (b_u4) : "r2","r3","r4","r5","r6","r7","r20" But you modify %1 and %2 which causes what you are seeing and GCC thinks your inline-asm does not modify those registers.