aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2016-05-02 09:40:09 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2016-05-02 09:40:09 +0000
commit697e0b28cca9e5f3e1ee59131c048ef93014fb2f (patch)
tree8813b12d24cde53b2b940740605d9108aa099d28 /gcc/expr.c
parent8de73453a42758af02bb23ed58f4b1e78ad11bc7 (diff)
downloadgcc-697e0b28cca9e5f3e1ee59131c048ef93014fb2f.zip
gcc-697e0b28cca9e5f3e1ee59131c048ef93014fb2f.tar.gz
gcc-697e0b28cca9e5f3e1ee59131c048ef93014fb2f.tar.bz2
Add a wi::to_wide helper function
As Richard says, we ought to have a convenient way of converting an INTEGER_CST to a wide_int of a particular precision without having to extract the sign of the INTEGER_CST's type each time. This patch adds a wi::to_wide helper for that, alongside the existing wi::to_offset and wi::to_widest. Tested on x86_64-linux-gnu and aarch64-linux-gnu. gcc/ * tree.h (wi::to_wide): New function. * expr.c (expand_expr_real_1): Use wi::to_wide. * fold-const.c (int_const_binop_1): Likewise. (extract_muldiv_1): Likewise. gcc/c-family/ * c-common.c (shorten_compare): Use wi::to_wide. From-SVN: r235721
Diffstat (limited to 'gcc/expr.c')
-rw-r--r--gcc/expr.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/expr.c b/gcc/expr.c
index 8870a0c..812c544 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -9729,10 +9729,9 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode,
GET_MODE_PRECISION (TYPE_MODE (type)), we need to extend from
the former to the latter according to the signedness of the
type. */
- temp = immed_wide_int_const (wide_int::from
+ temp = immed_wide_int_const (wi::to_wide
(exp,
- GET_MODE_PRECISION (TYPE_MODE (type)),
- TYPE_SIGN (type)),
+ GET_MODE_PRECISION (TYPE_MODE (type))),
TYPE_MODE (type));
return temp;