https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123458
--- Comment #3 from Boris Staletic <boris.staletic at protonmail dot com> ---
>>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:
You're right, of course. I apparently pasted the wrong version of the file in
the opening comment. It definitely should have been a `long`.
In my original test case, the struct looked like this:
```
struct span {
int* p;
unsigned long long size;
};
```
But two longs also work.
> aarch64 produces good code for the long case.
Yes, but ARM32 puts the arguments of f() on the stack, just to immediately load
them from the stack.
If wanted/needed, I can open a different bug report for ARM32.