summaryrefslogtreecommitdiff
path: root/gcc/explow.c
diff options
context:
space:
mode:
authorPaolo Bonzini <bonzini@gnu.org>2009-08-12 16:23:12 +0000
committerPaolo Bonzini <bonzini@gcc.gnu.org>2009-08-12 16:23:12 +0000
commit666e3cebe13c86ea21f84fb5b5d6d9e1dc49a9a5 (patch)
treeb0b3176056066392830be15ad78cfae11a09644e /gcc/explow.c
parent4b462d7786135d389f58ccda0a9dddf9ed4cee73 (diff)
downloadgcc-666e3cebe13c86ea21f84fb5b5d6d9e1dc49a9a5.tar.gz
tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation for for_return == 2.
2009-08-12 Paolo Bonzini <bonzini@gnu.org> * doc/tm.texi (TARGET_PROMOTE_FUNCTION_MODE): Add documentation for for_return == 2. * function.c (assign_parm_setup_reg): Use for_return == 2, improve comments. * calls.c (expand_call): Fix typo. * explow.c (promote_decl_mode): Use for_return == 2 for RESULT_DECL and PARM_DECL. * stmt.c (expand_value_return): Use promote_function_mode to copy out of pseudo. * targhooks.c (default_promote_function_mode): Handle for_return == 2. * config/cris/cris.c (cris_promote_function_mode): Likewise. * config/mmix/mmix.c (mmix_promote_function_mode): Likewise. * config/pa/pa.c (pa_promote_function_mode): Likewise. From-SVN: r150700
Diffstat (limited to 'gcc/explow.c')
-rw-r--r--gcc/explow.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/gcc/explow.c b/gcc/explow.c
index 7388a455b1d..933eac81bb1 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -825,12 +825,10 @@ promote_decl_mode (const_tree decl, int *punsignedp)
enum machine_mode mode = DECL_MODE (decl);
enum machine_mode pmode;
- if (TREE_CODE (decl) == RESULT_DECL)
+ if (TREE_CODE (decl) == RESULT_DECL
+ || TREE_CODE (decl) == PARM_DECL)
pmode = promote_function_mode (type, mode, &unsignedp,
- TREE_TYPE (current_function_decl), 1);
- else if (TREE_CODE (decl) == PARM_DECL)
- pmode = promote_function_mode (type, mode, &unsignedp,
- TREE_TYPE (current_function_decl), 0);
+ TREE_TYPE (current_function_decl), 2);
else
pmode = promote_mode (type, mode, &unsignedp);