https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61189

Kai Tietz <ktietz at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-12-16
     Ever confirmed|0                           |1

--- Comment #2 from Kai Tietz <ktietz at gcc dot gnu.org> ---
Issue is related to the assert at line 9964 in config/i386/i386.c in
ix86_compute_frame_layout: 'gcc_assert (preferred_alignment <=
stack_alignment_needed);'.
The preferred_alignment is 16, but the stack_alignment_needed is just 4.

The preferred_alignment is by default for all x86/x64 targets always
PREFERRED_STACK_BOUNDARY_DEFAULT (means 128 bit=16 bytes).
So crtl->stack_alignment_needed is 32, and crtl->preferred_stack_boundary is
128.

A work-a-round is to use -mpreferred-stack-boundary=2 option. This prevents
that check fails.

So question is: Where stack_alignment_needed is set to something less then
preferred_stack_boundary

Reply via email to