function.c (assign_parms): Demote promoted argument passed by transparent reference.

* function.c (assign_parms): Demote promoted argument passed by
transparent reference.

From-SVN: r49774
This commit is contained in:
Alexandre Oliva 2002-02-14 19:27:21 +00:00 committed by Alexandre Oliva
parent 0b46224d2b
commit 4606272bc4
2 changed files with 14 additions and 7 deletions

View File

@ -1,3 +1,8 @@
2002-02-14 Alexandre Oliva <aoliva@redhat.com>
* function.c (assign_parms): Demote promoted argument passed by
transparent reference.
2001-02-14 Joel Sherrill <joel@OARcorp.com>
* config/arm/rtems-elf.h, config/h8300/rtems.h: Removed redundant

View File

@ -4749,13 +4749,15 @@ assign_parms (fndecl)
/* If we were passed a pointer but the actual value
can safely live in a register, put it in one. */
if (passed_pointer && TYPE_MODE (TREE_TYPE (parm)) != BLKmode
&& ! ((! optimize
&& ! DECL_REGISTER (parm))
|| TREE_SIDE_EFFECTS (parm)
/* If -ffloat-store specified, don't put explicit
float variables into registers. */
|| (flag_float_store
&& TREE_CODE (TREE_TYPE (parm)) == REAL_TYPE)))
/* If by-reference argument was promoted, demote it. */
&& (TYPE_MODE (TREE_TYPE (parm)) != GET_MODE (DECL_RTL (parm))
|| ! ((! optimize
&& ! DECL_REGISTER (parm))
|| TREE_SIDE_EFFECTS (parm)
/* If -ffloat-store specified, don't put explicit
float variables into registers. */
|| (flag_float_store
&& TREE_CODE (TREE_TYPE (parm)) == REAL_TYPE))))
{
/* We can't use nominal_mode, because it will have been set to
Pmode above. We must use the actual mode of the parm. */