In <https://gcc.gnu.org/ml/gcc-patches/2019-05/msg01417.html>...
authorHans-Peter Nilsson <hp@axis.com>
Wed, 22 May 2019 00:30:42 +0000 (00:30 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Wed, 22 May 2019 00:30:42 +0000 (00:30 +0000)
In <https://gcc.gnu.org/ml/gcc-patches/2019-05/msg01417.html>:
...a change introduced in r94104 where BITS_PER_WORD was chosenperhaps because we expect register-sized writes into this area.

See <https://gcc.gnu.org/ml/gcc-patches/2005-01/msg01564.html>
for the r94104 change.

* function.c (assign_parm_setup_block): Raise alignment of
stacked parameter only for STRICT_ALIGNMENT targets.

From-SVN: r271497

gcc/ChangeLog
gcc/function.c

index 592cecd..9c4c215 100644 (file)
@@ -1,3 +1,8 @@
+2019-05-22  Hans-Peter Nilsson  <hp@axis.com>
+
+       * function.c (assign_parm_setup_block): Raise alignment of
+       stacked parameter only for STRICT_ALIGNMENT targets.
+
 2019-05-21  Segher Boessenkool  <segher@kernel.crashing.org>
 
        * config/rs6000/constraints.md (define_register_constraint "wz"):
index c6e862b..e30ee25 100644 (file)
@@ -2912,7 +2912,11 @@ assign_parm_setup_block (struct assign_parm_data_all *all,
   size_stored = CEIL_ROUND (size, UNITS_PER_WORD);
   if (stack_parm == 0)
     {
-      SET_DECL_ALIGN (parm, MAX (DECL_ALIGN (parm), BITS_PER_WORD));
+      HOST_WIDE_INT parm_align
+       = (STRICT_ALIGNMENT
+          ? MAX (DECL_ALIGN (parm), BITS_PER_WORD) : DECL_ALIGN (parm));
+
+      SET_DECL_ALIGN (parm, parm_align);
       if (DECL_ALIGN (parm) > MAX_SUPPORTED_STACK_ALIGNMENT)
        {
          rtx allocsize = gen_int_mode (size_stored, Pmode);