From 8a92a3f3841992f9440236861a20c178f01f7c21 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Wed, 30 Aug 2017 11:18:12 +0000 Subject: [PATCH] [56/77] Use the more specific type when two modes are known to be equal This patch adjusts a couple of cases in which we had established that two modes were equal and happened to be using the one with the more general type instead of the one with the more specific type. 2017-08-30 Richard Sandiford Alan Hayward David Sherwood gcc/ * expr.c (expand_expr_real_2): Use word_mode instead of innermode when the two are known to be equal. Co-Authored-By: Alan Hayward Co-Authored-By: David Sherwood From-SVN: r251508 --- gcc/ChangeLog | 7 +++++++ gcc/expr.c | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7d3d304..15f951f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2,6 +2,13 @@ Alan Hayward David Sherwood + * expr.c (expand_expr_real_2): Use word_mode instead of innermode + when the two are known to be equal. + +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + * simplify-rtx.c (simplify_const_unary_operation): Use is_a instead of checking for a nonzero precision. Forcibly convert op_mode to a scalar_int_mode diff --git a/gcc/expr.c b/gcc/expr.c index 7759ce7..cdebba3 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -8679,7 +8679,7 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, rtx htem, hipart; op0 = expand_normal (treeop0); if (TREE_CODE (treeop1) == INTEGER_CST) - op1 = convert_modes (innermode, mode, + op1 = convert_modes (word_mode, mode, expand_normal (treeop1), TYPE_UNSIGNED (TREE_TYPE (treeop1))); else @@ -8690,8 +8690,8 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, goto widen_mult_const; temp = expand_binop (mode, other_optab, op0, op1, target, unsignedp, OPTAB_LIB_WIDEN); - hipart = gen_highpart (innermode, temp); - htem = expand_mult_highpart_adjust (innermode, hipart, + hipart = gen_highpart (word_mode, temp); + htem = expand_mult_highpart_adjust (word_mode, hipart, op0, op1, hipart, zextend_p); if (htem != hipart) -- 2.7.4