[Bug target/95237] LOCAL_DECL_ALIGNMENT shrinks alignment, FAIL gcc.target/i386/pr69454-2.c
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Jun 1 08:38:47 GMT 2020
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--
More information about the Gcc-bugs
mailing list