http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58372
Kai Tietz <ktietz at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW CC| |ktietz at gcc dot gnu.org --- Comment #8 from Kai Tietz <ktietz at gcc dot gnu.org> --- So assert trigger here is: 'gcc_assert (preferred_alignment <= stack_alignment_needed);' Caused because because (gdb) print preferred_alignment $1 = 16 (gdb) print stack_alignment_needed $2 = 4 So hacky variant to fix that would be to enforce that preferred and stack-alignment_needed are set identical Index: i386.c =================================================================== --- i386.c (Revision 205860) +++ i386.c (Arbeitskopie) @@ -9362,6 +9362,14 @@ ix86_compute_frame_layout (struct ix86_frame *fram crtl->stack_alignment_needed = 128; } + /* If preferred_alignment is bigger then stack_alignment_needed + make both sizes equal. */ + if (preferred_alignment > stack_alignment_needed) + { + stack_alignment_needed = preferred_alignment; + crtl->stack_alignment_needed = crtl->preferred_stack_boundary; + } + gcc_assert (!size || stack_alignment_needed); gcc_assert (preferred_alignment >= STACK_BOUNDARY / BITS_PER_UNIT); gcc_assert (preferred_alignment <= stack_alignment_needed);