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

Andi Kleen <andi-gcc at firstfloor dot org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Target|                            |x86_64-linux
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #1 from Andi Kleen <andi-gcc at firstfloor dot org> ---
Don't have a small reproducer, but on a large LTO build where a few files are
built with

-mpreferred-stack-boundary=4

with the others using the default

I hit the following ICE in ix86_minimum_alignment

29610   /* Don't do dynamic stack realignment for long long objects with
29611      -mpreferred-stack-boundary=2.  */
29612   if ((mode == DImode || (type && TYPE_MODE (type) == DImode))
29613       && (!type || !TYPE_USER_ALIGN (type))
29614       && (!decl || !DECL_USER_ALIGN (decl)))
29615     {
29616       gcc_checking_assert (!TARGET_STV);
29617       return 32;
29618     }


I suspect the right fix is to just remove the assert?


Adding Jakub who added it originally in:

commit 1f1475a7e758328a59db17aef5d1ccd81232ea95
Author: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Thu Feb 4 09:02:01 2016 +0000

            PR target/69454
            * config/i386/i386.c (convert_scalars_to_vector): Remove
            stack alignment fixes.
            (ix86_option_override_internal): Disable TARGET_STV if stack
            might not be aligned enough.
            (ix86_minimum_alignment): Assert that TARGET_STV is false.

            * gcc.target/i386/pr69454-1.c: New test.
            * gcc.target/i386/pr69454-2.c: New test.

Reply via email to