diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2017-08-30 11:11:02 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2017-08-30 11:11:02 +0000 |
commit | b0567726a311d3f2fcec5b62380675231cd610c9 (patch) | |
tree | 7e4249e2fdac3895eaf6915bd78daf01006bc4c0 /gcc/expmed.c | |
parent | b4206259f10455603e0c90825566de1ea777c04a (diff) | |
download | gcc-b0567726a311d3f2fcec5b62380675231cd610c9.zip gcc-b0567726a311d3f2fcec5b62380675231cd610c9.tar.gz gcc-b0567726a311d3f2fcec5b62380675231cd610c9.tar.bz2 |
[21/77] Replace SCALAR_INT_MODE_P checks with is_a <scalar_int_mode>
This patch replaces checks of "SCALAR_INT_MODE_P (...)" with
"is_a <scalar_int_mode> (..., &var)" in cases where it becomes
useful to refer to the mode as a scalar_int_mode. It also
replaces some checks for the two constituent classes (MODE_INT
and MODE_PARTIAL_INT).
The patch also introduces is_a <scalar_int_mode> checks for some
uses of HWI_COMPUTABLE_MODE_P, which is a subcondition of
SCALAR_INT_MODE_P.
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* wide-int.h (int_traits<unsigned char>) New class.
(int_traits<unsigned short>) Likewise.
* cfgexpand.c (expand_debug_expr): Use is_a <scalar_int_mode>.
Use GET_MODE_UNIT_PRECISION and remove redundant test for
SCALAR_INT_MODE_P.
* combine.c (set_nonzero_bits_and_sign_copies): Use
is_a <scalar_int_mode>.
(find_split_point): Likewise.
(combine_simplify_rtx): Likewise.
(simplify_logical): Likewise.
(expand_compound_operation): Likewise.
(expand_field_assignment): Likewise.
(make_compound_operation): Likewise.
(extended_count): Likewise.
(change_zero_ext): Likewise.
(simplify_comparison): Likewise.
* dwarf2out.c (scompare_loc_descriptor): Likewise.
(ucompare_loc_descriptor): Likewise.
(minmax_loc_descriptor): Likewise.
(mem_loc_descriptor): Likewise.
(loc_descriptor): Likewise.
* expmed.c (init_expmed_one_mode): Likewise.
* lra-constraints.c (lra_constraint_offset): Likewise.
* optabs.c (prepare_libcall_arg): Likewise.
* postreload.c (move2add_note_store): Likewise.
* reload.c (operands_match_p): Likewise.
* rtl.h (load_extend_op): Likewise.
* rtlhooks.c (gen_lowpart_general): Likewise.
* simplify-rtx.c (simplify_truncation): Likewise.
(simplify_unary_operation_1): Likewise.
(simplify_binary_operation_1): Likewise.
(simplify_const_binary_operation): Likewise.
(simplify_const_relational_operation): Likewise.
(simplify_subreg): Likewise.
* stor-layout.c (bitwise_mode_for_mode): Likewise.
* var-tracking.c (adjust_mems): Likewise.
(prepare_call_arguments): Likewise.
gcc/ada/
* gcc-interface/decl.c (check_ok_for_atomic_type): Use
is_a <scalar_int_mode>.
* gcc-interface/trans.c (Pragma_to_gnu): Likewise.
* gcc-interface/utils.c (gnat_type_for_mode): Likewise.
gcc/fortran/
* trans-types.c (gfc_type_for_mode): Use is_a <scalar_int_mode>.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251473
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index 815c766..292fed3 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -202,15 +202,16 @@ init_expmed_one_mode (struct init_expmed_rtl *all, speed)); } - if (SCALAR_INT_MODE_P (mode)) + scalar_int_mode int_mode_to; + if (is_a <scalar_int_mode> (mode, &int_mode_to)) { for (mode_from = MIN_MODE_INT; mode_from <= MAX_MODE_INT; mode_from = (machine_mode)(mode_from + 1)) - init_expmed_one_conv (all, mode, mode_from, speed); + init_expmed_one_conv (all, int_mode_to, mode_from, speed); - machine_mode wider_mode; - if (GET_MODE_CLASS (mode) == MODE_INT - && GET_MODE_WIDER_MODE (mode).exists (&wider_mode)) + scalar_int_mode wider_mode; + if (GET_MODE_CLASS (int_mode_to) == MODE_INT + && GET_MODE_WIDER_MODE (int_mode_to).exists (&wider_mode)) { PUT_MODE (all->zext, wider_mode); PUT_MODE (all->wide_mult, wider_mode); @@ -219,8 +220,9 @@ init_expmed_one_mode (struct init_expmed_rtl *all, set_mul_widen_cost (speed, wider_mode, set_src_cost (all->wide_mult, wider_mode, speed)); - set_mul_highpart_cost (speed, mode, - set_src_cost (all->wide_trunc, mode, speed)); + set_mul_highpart_cost (speed, int_mode_to, + set_src_cost (all->wide_trunc, + int_mode_to, speed)); } } } |