[i386] : Fix PR89261, ix86_data_alignment has wrong argument type

Message ID CAFULd4btQO6b=f6JYVwm=VtrnaEbqOabsLF0A7tD-fFB6VZAhw@mail.gmail.com
State New
Headers show
Series
  • [i386] : Fix PR89261, ix86_data_alignment has wrong argument type
Related show

Commit Message

Uros Bizjak April 27, 2019, 1:39 p.m.
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.

testsuite/ChangeLog:

2019-04-27  UroŇ° Bizjak  <ubizjak@gmail.com>

    PR target/89261
    * gcc.target/i386/pr89261.c: New test.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Committed to mainline SVN.

Uros.

Patch

Index: config/i386/i386-protos.h
===================================================================
--- config/i386/i386-protos.h	(revision 270607)
+++ config/i386/i386-protos.h	(working copy)
@@ -207,7 +207,7 @@  extern void init_cumulative_args (CUMULATIVE_ARGS
 #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,
Index: config/i386/i386.c
===================================================================
--- config/i386/i386.c	(revision 270607)
+++ config/i386/i386.c	(working copy)
@@ -29802,7 +29802,7 @@  iamcu_alignment (tree type, int align)
    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
@@ -29810,7 +29810,7 @@  int
      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
@@ -29817,7 +29817,7 @@  int
      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)
Index: testsuite/gcc.target/i386/pr89261.c
===================================================================
--- testsuite/gcc.target/i386/pr89261.c	(nonexistent)
+++ testsuite/gcc.target/i386/pr89261.c	(working copy)
@@ -0,0 +1,9 @@ 
+/* 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" } } */