> Date: Mon, 11 Feb 2019 07:38:14 +0100
> From: Richard Biener <richard.guent...@gmail.com>

> >+      HOST_WIDE_INT min_parm_align
> >+    = STRICT_ALIGNMENT ? BITS_PER_WORD : PREFERRED_STACK_BOUNDARY;
> 
> Shouldn't it be MIN (...) of BOTH? 

That *does* seem logical...  Take 2 as follows, in testing as
before.

Ok to commit, if testing passes?

gcc:
        * function.c (assign_parm_setup_block): Align the
        parameter to a minimum of PREFERRED_STACK_BOUNDARY and
        BITS_PER_WORD instead of always BITS_PER_WORD.

--- gcc/function.c.orig2        Sat Feb  9 00:53:17 2019
+++ gcc/function.c      Mon Feb 11 09:37:28 2019
@@ -2912,7 +2912,10 @@ assign_parm_setup_block (struct assign_p
   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 min_parm_align
+       = MIN (BITS_PER_WORD, PREFERRED_STACK_BOUNDARY);
+
+      SET_DECL_ALIGN (parm, MAX (DECL_ALIGN (parm), min_parm_align));
       if (DECL_ALIGN (parm) > MAX_SUPPORTED_STACK_ALIGNMENT)
        {
          rtx allocsize = gen_int_mode (size_stored, Pmode);

brgds, H-P

Reply via email to