https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82701
--- Comment #2 from H. Peter Anvin <hpa at zytor dot com> --- (continued) : "+rm,r" (aa.l[0]), "+rm,r" (aa.l[1]) : "ri,m" (bb.l[0]), "ri,m" (bb.l)); a = aa.q; b = bb.q; If this is something that works by intent and not by accident I'm perfectly happy with this solution as it appears to generate good code.