Bugs in gcc 5.3.0, 5.4.0 with force_align_arg_pointer
Daniel Santos
daniel.santos at pobox.com
Fri Aug 26 23:25:00 CDT 2016
Just to let you guys know, there's a bug in gcc 5.3 & 5.4 that causes
wine's 64 bit code to be generated as if the incoming stack boundary was
8 bytes. This makes the pro/epilogues all bloaty with unaligned movups
for SSE saves/restores. This can be avoided by actually *not* using
force_align_arg_pointer or -mstackrealign. Note however that when using
either of those, we should supply -mincoming-stack-boundary=4 so that
gcc knows what alignment to force the arg pointer to... except that that
is also expertly broken.
I'm not aware of this actually causing any crashes or UB, just producing
slower, bloaty code. There was also PR69140 that caused build breakage
when the stack pointer wasn't properly aligned, but I guess this is a
flaw that got exposed once force_align_arg_pointer started breaking
alignment on x64 abi.
Daniel
More information about the wine-devel
mailing list