diff options
author | Richard Sandiford <richard.sandiford@linaro.org> | 2017-08-30 11:10:44 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2017-08-30 11:10:44 +0000 |
commit | f67f4dfffe08b1cea5de407e35e03dd38b64fcd3 (patch) | |
tree | a08f3d32bc93a70f1da4b61931edf7ce88da32b3 /gcc/machmode.h | |
parent | 304b9962830476dce3fe7632713e5f5ce002c050 (diff) | |
download | gcc-f67f4dfffe08b1cea5de407e35e03dd38b64fcd3.zip gcc-f67f4dfffe08b1cea5de407e35e03dd38b64fcd3.tar.gz gcc-f67f4dfffe08b1cea5de407e35e03dd38b64fcd3.tar.bz2 |
[19/77] Add a smallest_int_mode_for_size helper function
This patch adds a wrapper around smallest_mode_for_size
for cases in which the mode class is MODE_INT. Unlike
(int_)mode_for_size, smallest_mode_for_size always returns
a mode of the specified class, asserting if no such mode exists.
smallest_int_mode_for_size therefore returns a scalar_int_mode
rather than an opt_scalar_int_mode.
2017-08-30 Richard Sandiford <richard.sandiford@linaro.org>
Alan Hayward <alan.hayward@arm.com>
David Sherwood <david.sherwood@arm.com>
gcc/
* machmode.h (smallest_mode_for_size): Fix formatting.
(smallest_int_mode_for_size): New function.
* cfgexpand.c (expand_debug_expr): Use smallest_int_mode_for_size
instead of smallest_mode_for_size.
* combine.c (make_extraction): Likewise.
* config/arc/arc.c (arc_expand_movmem): Likewise.
* config/arm/arm.c (arm_expand_divmod_libfunc): Likewise.
* config/i386/i386.c (ix86_get_mask_mode): Likewise.
* config/s390/s390.c (s390_expand_insv): Likewise.
* config/sparc/sparc.c (assign_int_registers): Likewise.
* config/spu/spu.c (spu_function_value): Likewise.
(spu_function_arg): Likewise.
* coverage.c (get_gcov_type): Likewise.
(get_gcov_unsigned_t): Likewise.
* dse.c (find_shift_sequence): Likewise.
* expmed.c (store_bit_field_1): Likewise.
* expr.c (convert_move): Likewise.
(store_field): Likewise.
* internal-fn.c (expand_arith_overflow): Likewise.
* optabs-query.c (get_best_extraction_insn): Likewise.
* optabs.c (expand_twoval_binop_libfunc): Likewise.
* stor-layout.c (layout_type): Likewise.
(initialize_sizetypes): Likewise.
* targhooks.c (default_get_mask_mode): Likewise.
* tree-ssa-loop-manip.c (canonicalize_loop_ivs): Likewise.
Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r251471
Diffstat (limited to 'gcc/machmode.h')
-rw-r--r-- | gcc/machmode.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/gcc/machmode.h b/gcc/machmode.h index 590f100..6fd10b4 100644 --- a/gcc/machmode.h +++ b/gcc/machmode.h @@ -588,9 +588,16 @@ float_mode_for_size (unsigned int size) /* Similar to mode_for_size, but find the smallest mode for a given width. */ -extern machine_mode smallest_mode_for_size (unsigned int, - enum mode_class); +extern machine_mode smallest_mode_for_size (unsigned int, enum mode_class); +/* Find the narrowest integer mode that contains at least SIZE bits. + Such a mode must exist. */ + +inline scalar_int_mode +smallest_int_mode_for_size (unsigned int size) +{ + return as_a <scalar_int_mode> (smallest_mode_for_size (size, MODE_INT)); +} /* Return an integer mode of exactly the same size as the input mode. */ |