[Bug c++/58372] internal compiler error: ix86_compute_frame_layout
ktietz at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Dec 10 19:06:00 GMT 2013
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);
More information about the Gcc-bugs
mailing list