From: Richard Henderson Date: Wed, 9 Jun 2004 23:52:13 +0000 (-0700) Subject: re PR middle-end/15228 (useless copies of floating point operands) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e66e7856e8c88873ba3a5b37f8afcd003e0f8df9;p=gcc.git re PR middle-end/15228 (useless copies of floating point operands) PR middle-end/15228 * function.c (assign_parms): Always set_mem_align with the computed FUNCTION_ARG_BOUNDARY. Don't clear stack_parm if !STRICT_ALIGNMENT. From-SVN: r82867 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4eda0b17d6e..526a2b0dc2a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2004-06-09 Richard Henderson + + PR middle-end/15228 + * function.c (assign_parms): Always set_mem_align with the computed + FUNCTION_ARG_BOUNDARY. Don't clear stack_parm if !STRICT_ALIGNMENT. + 2004-06-09 Richard Henderson PR opt/15108 diff --git a/gcc/function.c b/gcc/function.c index 69866f9812d..00c56e322af 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -4621,10 +4621,8 @@ assign_parms (tree fndecl) offset_rtx)); set_mem_attributes (stack_parm, parm, 1); - if (entry_parm && MEM_ATTRS (stack_parm)->align < PARM_BOUNDARY) - set_mem_align (stack_parm, PARM_BOUNDARY); - - /* Set also REG_ATTRS if parameter was passed in a register. */ + set_mem_align (stack_parm, + FUNCTION_ARG_BOUNDARY (promoted_mode, passed_type)); if (entry_parm) set_reg_attrs_for_parm (entry_parm, stack_parm); } @@ -4692,13 +4690,9 @@ assign_parms (tree fndecl) /* If we can't trust the parm stack slot to be aligned enough for its ultimate type, don't use that slot after entry. We'll make another stack slot, if we need one. */ - { - unsigned int thisparm_boundary - = FUNCTION_ARG_BOUNDARY (promoted_mode, passed_type); - - if (GET_MODE_ALIGNMENT (nominal_mode) > thisparm_boundary) - stack_parm = 0; - } + if (STRICT_ALIGNMENT && stack_parm + && GET_MODE_ALIGNMENT (nominal_mode) > MEM_ALIGN (stack_parm)) + stack_parm = 0; /* If parm was passed in memory, and we need to convert it on entry, don't store it back in that same slot. */