Commit f8b906a2 by Uros Bizjak Committed by Uros Bizjak

re PR target/89261 (ix86_data_alignment has wrong argument type)

	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:

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

From-SVN: r270623
parent 23ab6350
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> 2019-04-27 Martin Liska <mliska@suse.cz>
PR middle-end/90258 PR middle-end/90258
......
...@@ -207,7 +207,7 @@ extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int); ...@@ -207,7 +207,7 @@ extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
#endif /* RTX_CODE */ #endif /* RTX_CODE */
#ifdef TREE_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, extern unsigned int ix86_local_alignment (tree, machine_mode,
unsigned int); unsigned int);
extern unsigned int ix86_minimum_alignment (tree, machine_mode, extern unsigned int ix86_minimum_alignment (tree, machine_mode,
......
...@@ -29802,7 +29802,7 @@ iamcu_alignment (tree type, int align) ...@@ -29802,7 +29802,7 @@ iamcu_alignment (tree type, int align)
instead of that alignment to align the object. */ instead of that alignment to align the object. */
int 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 /* GCC 4.8 and earlier used to incorrectly assume this alignment even
for symbols from other compilation units or symbols that don't need for symbols from other compilation units or symbols that don't need
...@@ -29810,14 +29810,14 @@ ix86_data_alignment (tree type, int align, bool opt) ...@@ -29810,14 +29810,14 @@ ix86_data_alignment (tree type, int align, bool opt)
those compilers, ensure we don't decrease alignment from what we those compilers, ensure we don't decrease alignment from what we
used to assume. */ 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 /* 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 (64 bytes in the Pentium 4 and other recent Intel processors, including
processors based on Intel Core microarchitecture) should be aligned processors based on Intel Core microarchitecture) should be aligned
so that its base address is a multiple of a cache line size. */ 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); = MIN ((unsigned) ix86_tune_cost->prefetch_block * 8, MAX_OFILE_ALIGNMENT);
if (max_align < BITS_PER_WORD) 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> 2019-04-27 Martin Liska <mliska@suse.cz>
PR middle-end/90258 PR middle-end/90258
......
/* 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" } } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment