https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113133
--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> --- Another testcase: --cut here-- void foo1 (double *d, float f) { register float x __asm ("xmm16") = f; asm volatile ("" : "+v" (x)); *d = x; } void foo2 (float *f, double d) { register double x __asm ("xmm16") = d; asm volatile ("" : "+v" (x)); *f = x; } --cut here--