aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/gcc/function.c b/gcc/function.c
index d616f5f..cdfcc4b 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -3013,8 +3013,8 @@ assign_parm_setup_block (struct assign_parm_data_all *all,
to the value directly in mode MODE, otherwise we must
start with the register in word_mode and explicitly
convert it. */
- if (targetm.truly_noop_truncation (size * BITS_PER_UNIT,
- BITS_PER_WORD))
+ if (mode == word_mode
+ || TRULY_NOOP_TRUNCATION_MODES_P (mode, word_mode))
reg = gen_rtx_REG (mode, REGNO (entry_parm));
else
{
@@ -3913,9 +3913,8 @@ gimplify_parameters (gimple_seq *cleanup)
as we'll query that flag during gimplification. */
if (TREE_ADDRESSABLE (parm))
TREE_ADDRESSABLE (local) = 1;
- else if (TREE_CODE (type) == COMPLEX_TYPE
- || TREE_CODE (type) == VECTOR_TYPE)
- DECL_GIMPLE_REG_P (local) = 1;
+ if (DECL_NOT_GIMPLE_REG_P (parm))
+ DECL_NOT_GIMPLE_REG_P (local) = 1;
if (!is_gimple_reg (local)
&& flag_stack_reuse != SR_NONE)