https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88778
--- Comment #7 from 刘袋鼠 <crazylht at gmail dot com> --- Simple testcase below related to read_complex_part/write_complex_part cat complex.c _Complex float foo (_Complex float a, _Complex float b) { _Complex float c,d; c = a + b; return c; } cat complex.s .file "complex.c" .text .p2align 4 .globl foo .type foo, @function foo: .LFB0: .cfi_startproc movq %xmm0, %rax movq %xmm1, %rdx vaddss %xmm1, %xmm0, %xmm0 shrq $32, %rax shrq $32, %rdx vmovd %eax, %xmm3 vmovd %edx, %xmm4 vaddss %xmm4, %xmm3, %xmm2 vmovd %xmm0, %edx vmovd %xmm2, %eax salq $32, %rax orq %rdx, %rax movq %rax, %xmm0 ret .cfi_endproc .LFE0: .size foo, .-foo .ident "GCC: (GNU) 9.0.0 20190110 (experimental)" .section .note.GNU-stack,"",@progbits