diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2016-05-02 09:40:09 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2016-05-02 09:40:09 +0000 |
commit | 697e0b28cca9e5f3e1ee59131c048ef93014fb2f (patch) | |
tree | 8813b12d24cde53b2b940740605d9108aa099d28 /gcc/expr.c | |
parent | 8de73453a42758af02bb23ed58f4b1e78ad11bc7 (diff) | |
download | gcc-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.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -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; |