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.

Reply via email to