https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111107
--- Comment #2 from Zebediah Figura <zfigura at codeweavers dot com> --- (In reply to Andrew Pinski from comment #1) > This on purpose, it is only callbacks (from libc) and main that needs the > realignment here. I don't understand what you mean? It's not just libc and main that needs this. As mentioned, this is *the* 32-bit x86 ABI on Windows. Win32 programs compiled with MSVC don't assume 16-byte alignment (if they do now, they didn't historically, and we do regularly run across programs in Wine that do not keep the stack aligned to 16 bytes). And again, gcc does not, as a blanket statement, assume 16-byte stack alignment for i386. If we think that gcc *should* assume 16-byte stack alignment, then we should also get rid of the existing code in gcc that assumes 4-byte stack alignment. I think this is a bad idea, for the reasons I've been describing, but if that's the decision then let's please at least be consistent and clear about it. I'm sure this is something of a canned response since, as you say, this issue has been reported before (although I couldn't actually find any such reports, just from searching the gcc Bugzilla?). I wouldn't report this as a bug per se if gcc wasn't currently being *inconsistent* about what it assumes the stack alignment is.