https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71614
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The fix would then put a barrier to force GCC not to do contracting. Something like: v = a*d; w = b*c; asm("":"+f"(v)); asm("":"+f"(w)); tau += v + w; /* Add in other second-order terms. */