diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2017-08-21 14:50:56 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2017-08-21 14:50:56 +0000 |
commit | 2be65d9e98a1335e0d948c2de59946e715afcbe5 (patch) | |
tree | a5f3b1eb5eba6d6c7a010dd6ece0a25d1e89b38a /gcc/expr.c | |
parent | e83fe013941bf8b3129a8ceb19e14ea7d8c51aa2 (diff) | |
download | gcc-2be65d9e98a1335e0d948c2de59946e715afcbe5.zip gcc-2be65d9e98a1335e0d948c2de59946e715afcbe5.tar.gz gcc-2be65d9e98a1335e0d948c2de59946e715afcbe5.tar.bz2 |
Add a type_has_mode_precision_p helper function
...to replace instances of:
TYPE_PRECISION (t) == GET_MODE_PRECISION (TYPE_MODE (t))
These conditions would need to be rewritten with variable-sized
modes anyway.
2017-08-21 Richard Sandiford <richard.sandiford@linaro.org>
gcc/
* tree.h (type_has_mode_precision_p): New function.
* convert.c (convert_to_integer_1): Use it.
* expr.c (expand_expr_real_2): Likewise.
(expand_expr_real_1): Likewise.
* fold-const.c (fold_single_bit_test_into_sign_test): Likewise.
* match.pd: Likewise.
* tree-ssa-forwprop.c (simplify_rotate): Likewise.
* tree-ssa-math-opts.c (convert_mult_to_fma): Likewise.
* tree-tailcall.c (process_assignment): Likewise.
* tree-vect-loop.c (vectorizable_reduction): Likewise.
* tree-vect-patterns.c (vect_recog_vector_vector_shift_pattern)
(vect_recog_mult_pattern, vect_recog_divmod_pattern): Likewise.
* tree-vect-stmts.c (vectorizable_conversion): Likewise.
(vectorizable_assignment): Likewise.
(vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.
* tree-vrp.c (register_edge_assert_for_2): Likewise.
From-SVN: r251231
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 7 |
1 files changed, 3 insertions, 4 deletions
@@ -8244,7 +8244,7 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, result to be reduced to the precision of the bit-field type, which is narrower than that of the type's mode. */ reduce_bit_field = (INTEGRAL_TYPE_P (type) - && GET_MODE_PRECISION (mode) > TYPE_PRECISION (type)); + && !type_has_mode_precision_p (type)); if (reduce_bit_field && modifier == EXPAND_STACK_PARM) target = 0; @@ -9097,8 +9097,7 @@ expand_expr_real_2 (sepops ops, rtx target, machine_mode tmode, case LROTATE_EXPR: case RROTATE_EXPR: gcc_assert (VECTOR_MODE_P (TYPE_MODE (type)) - || (GET_MODE_PRECISION (TYPE_MODE (type)) - == TYPE_PRECISION (type))); + || type_has_mode_precision_p (type)); /* fall through */ case LSHIFT_EXPR: @@ -9671,7 +9670,7 @@ expand_expr_real_1 (tree exp, rtx target, machine_mode tmode, which is narrower than that of the type's mode. */ reduce_bit_field = (!ignore && INTEGRAL_TYPE_P (type) - && GET_MODE_PRECISION (mode) > TYPE_PRECISION (type)); + && !type_has_mode_precision_p (type)); /* If we are going to ignore this result, we need only do something if there is a side-effect somewhere in the expression. If there |