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