https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95237
--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> --- ICEs are "fixed" by the first hunk, the testcase in Comment #0 by the second: --cut here-- diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 060e2df62ea..cd7abaf7e04 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -16752,6 +16752,7 @@ ix86_local_alignment (tree exp, machine_mode mode, decl = NULL; } +#if 0 /* Don't do dynamic stack realignment for long long objects with -mpreferred-stack-boundary=2. */ if (!TARGET_64BIT @@ -16761,6 +16762,7 @@ ix86_local_alignment (tree exp, machine_mode mode, && (!type || !TYPE_USER_ALIGN (type)) && (!decl || !DECL_USER_ALIGN (decl))) align = 32; +#endif /* If TYPE is NULL, we are allocating a stack slot for caller-save register in MODE. We will return the largest alignment of XF @@ -16868,6 +16870,7 @@ ix86_minimum_alignment (tree exp, machine_mode mode, if (TARGET_64BIT || align != 64 || ix86_preferred_stack_boundary >= 64) return align; +#if 0 /* Don't do dynamic stack realignment for long long objects with -mpreferred-stack-boundary=2. */ if ((mode == DImode || (type && TYPE_MODE (type) == DImode)) @@ -16877,6 +16880,7 @@ ix86_minimum_alignment (tree exp, machine_mode mode, gcc_checking_assert (!TARGET_STV); return 32; } +#endif return align; } --cut here--