Commit e66e7856 by Richard Henderson Committed by Richard Henderson

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
parent 4b5b9613
2004-06-09 Richard Henderson <rth@redhat.com> 2004-06-09 Richard Henderson <rth@redhat.com>
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 <rth@redhat.com>
PR opt/15108 PR opt/15108
* tree-tailcall.c (find_tail_calls): Don't check early for * tree-tailcall.c (find_tail_calls): Don't check early for
tail_recursion failure. tail_recursion failure.
......
...@@ -4621,10 +4621,8 @@ assign_parms (tree fndecl) ...@@ -4621,10 +4621,8 @@ assign_parms (tree fndecl)
offset_rtx)); offset_rtx));
set_mem_attributes (stack_parm, parm, 1); set_mem_attributes (stack_parm, parm, 1);
if (entry_parm && MEM_ATTRS (stack_parm)->align < PARM_BOUNDARY) set_mem_align (stack_parm,
set_mem_align (stack_parm, PARM_BOUNDARY); FUNCTION_ARG_BOUNDARY (promoted_mode, passed_type));
/* Set also REG_ATTRS if parameter was passed in a register. */
if (entry_parm) if (entry_parm)
set_reg_attrs_for_parm (entry_parm, stack_parm); set_reg_attrs_for_parm (entry_parm, stack_parm);
} }
...@@ -4692,13 +4690,9 @@ assign_parms (tree fndecl) ...@@ -4692,13 +4690,9 @@ assign_parms (tree fndecl)
/* If we can't trust the parm stack slot to be aligned enough /* If we can't trust the parm stack slot to be aligned enough
for its ultimate type, don't use that slot after entry. for its ultimate type, don't use that slot after entry.
We'll make another stack slot, if we need one. */ We'll make another stack slot, if we need one. */
{ if (STRICT_ALIGNMENT && stack_parm
unsigned int thisparm_boundary && GET_MODE_ALIGNMENT (nominal_mode) > MEM_ALIGN (stack_parm))
= FUNCTION_ARG_BOUNDARY (promoted_mode, passed_type);
if (GET_MODE_ALIGNMENT (nominal_mode) > thisparm_boundary)
stack_parm = 0; stack_parm = 0;
}
/* If parm was passed in memory, and we need to convert it on entry, /* If parm was passed in memory, and we need to convert it on entry,
don't store it back in that same slot. */ don't store it back in that same slot. */
......
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