https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123458
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to fail| |14.1.0
Known to work| |13.4.0
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This is what is produced for x86_64 for me:
```
salq $32, %rsi
movl %edi, %edi
orq %rsi, %rdi
jmp f
```
This looks correct to me.
>On x86_64-pc-linux-gnu target, at least on linux, `g()` can just be `jmp f`
No, the struct is passed via one register on x86_64 while f is passed via 2 so
it needs the split like this.
Now on the other hand using long instead we get:
```
g:
.cfi_startproc
xchgq %rdi, %rsi
movq %rsi, %rax
movq %rdi, %rsi
movq %rax, %rdi
jmp f
```