+2019-04-27 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/89261
+ * config/i386/i386-protos.h (ix86_data_alignment): Change
+ the second argument type to unsigned int.
+ * config/i386/i386.c (ix86_data_alignment): Change "align"
+ argument type to unsigned int.
+
2019-04-27 Martin Liska <mliska@suse.cz>
PR middle-end/90258
#endif /* RTX_CODE */
#ifdef TREE_CODE
-extern int ix86_data_alignment (tree, int, bool);
+extern int ix86_data_alignment (tree, unsigned int, bool);
extern unsigned int ix86_local_alignment (tree, machine_mode,
unsigned int);
extern unsigned int ix86_minimum_alignment (tree, machine_mode,
instead of that alignment to align the object. */
int
-ix86_data_alignment (tree type, int align, bool opt)
+ix86_data_alignment (tree type, unsigned int align, bool opt)
{
/* GCC 4.8 and earlier used to incorrectly assume this alignment even
for symbols from other compilation units or symbols that don't need
those compilers, ensure we don't decrease alignment from what we
used to assume. */
- int max_align_compat = MIN (256, MAX_OFILE_ALIGNMENT);
+ unsigned int max_align_compat = MIN (256, MAX_OFILE_ALIGNMENT);
/* A data structure, equal or greater than the size of a cache line
(64 bytes in the Pentium 4 and other recent Intel processors, including
processors based on Intel Core microarchitecture) should be aligned
so that its base address is a multiple of a cache line size. */
- int max_align
+ unsigned int max_align
= MIN ((unsigned) ix86_tune_cost->prefetch_block * 8, MAX_OFILE_ALIGNMENT);
if (max_align < BITS_PER_WORD)
+2019-04-27 Uroš Bizjak <ubizjak@gmail.com>
+
+ PR target/89261
+ * gcc.target/i386/pr89261.c: New test.
+
2019-04-27 Martin Liska <mliska@suse.cz>
PR middle-end/90258
--- /dev/null
+/* PR target/89261 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+typedef double __v2df __attribute__ ((vector_size (16), aligned (1 << 28)));
+
+__v2df foo = { 1.0, 2.0 };
+
+/* { dg-final { scan-assembler "\.align\[ \t]+268435456" } } */