https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66697
--- Comment #9 from Uroš Bizjak <ubizjak at gmail dot com> --- (In reply to Justas L from comment #8) > I applied the first (testing) version of the patch on gcc 5.2.0 release > source (with slight modifications to make it apply). All new features work > as expected, as per the test in comment #2. However, compiling Wine with > either -mstackrealign or -mincoming-stack-boundary=3 fails, throwing this > error: > > --------- > ../../../wine/dlls/dxerr8/dxerr8.c:135:1: internal compiler error: in > ix86_compute_frame_layout, at config/i386/i386.c:10212 > --------- > > which refers to this line in i386.c: > > --------- > gcc_assert (INCOMING_STACK_BOUNDARY >= 128); > --------- > > Commenting out the assert allows Wine to compile normally. (I assume the > correct fix would be to change the number to 64.) And compiling Wine with > -mincoming-stack-boundary=3 does fix the original issue (or at least the one > instance of it that I care about). So the gcc side of the issue is almost > resolved, with just the assert left to address. Thanks, this assert triggered on target I'm not able to test. The correct solution is to emit unaligned moves when INCOMING_STACK_BOUNDARY < 128. This is the same problem as HJ is solving for interrupt handler.