r252639 - in /branches/range-gen2/gcc: ChangeLo...

aldyh@gcc.gnu.org aldyh@gcc.gnu.org
Wed Sep 13 17:43:00 GMT 2017


Author: aldyh
Date: Wed Sep 13 17:43:27 2017
New Revision: 252639

URL: https://gcc.gnu.org/viewcvs?rev=252639&root=gcc&view=rev
Log:
[4/77] Add FOR_EACH iterators for modes

The new iterators are:

- FOR_EACH_MODE_IN_CLASS: iterate over all the modes in a mode class.

- FOR_EACH_MODE_FROM: iterate over all the modes in a class,
  starting at a given mode.

- FOR_EACH_WIDER_MODE: iterate over all the modes in a class,
  starting at the next widest mode after a given mode.

- FOR_EACH_2XWIDER_MODE: same, but considering only modes that
  are two times wider than the previous mode.

- FOR_EACH_MODE_UNTIL: iterate over all the modes in a class until
  a given mode is reached.

- FOR_EACH_MODE: iterate over all the modes in a class between
  two given modes, inclusive of the first but not the second.

These help with the stronger type checking added by later patches,
since every new mode will be in the same class as the previous one.

2017-08-30  Richard Sandiford  <richard.sandiford@linaro.org>
            Alan Hayward  <alan.hayward@arm.com>
            David Sherwood  <david.sherwood@arm.com>

gcc/
	* machmode.h (mode_traits): New structure.
	(get_narrowest_mode): New function.
	(mode_iterator::start): Likewise.
	(mode_iterator::iterate_p): Likewise.
	(mode_iterator::get_wider): Likewise.
	(mode_iterator::get_known_wider): Likewise.
	(mode_iterator::get_2xwider): Likewise.
	(FOR_EACH_MODE_IN_CLASS): New mode iterator.
	(FOR_EACH_MODE): Likewise.
	(FOR_EACH_MODE_FROM): Likewise.
	(FOR_EACH_MODE_UNTIL): Likewise.
	(FOR_EACH_WIDER_MODE): Likewise.
	(FOR_EACH_2XWIDER_MODE): Likewise.
	* builtins.c (expand_builtin_strlen): Use new mode iterators.
	* combine.c (simplify_comparison): Likewise
	* config/i386/i386.c (type_natural_mode): Likewise.
	* cse.c (cse_insn): Likewise.
	* dse.c (find_shift_sequence): Likewise.
	* emit-rtl.c (init_derived_machine_modes): Likewise.
	(init_emit_once): Likewise.
	* explow.c (hard_function_value): Likewise.
	* expmed.c (extract_fixed_bit_field_1): Likewise.
	(extract_bit_field_1): Likewise.
	(expand_divmod): Likewise.
	(emit_store_flag_1): Likewise.
	* expr.c (init_expr_target): Likewise.
	(convert_move): Likewise.
	(alignment_for_piecewise_move): Likewise.
	(widest_int_mode_for_size): Likewise.
	(emit_block_move_via_movmem): Likewise.
	(copy_blkmode_to_reg): Likewise.
	(set_storage_via_setmem): Likewise.
	(compress_float_constant): Likewise.
	* omp-low.c (omp_clause_aligned_alignment): Likewise.
	* optabs-query.c (get_best_extraction_insn): Likewise.
	* optabs.c (expand_binop): Likewise.
	(expand_twoval_unop): Likewise.
	(expand_twoval_binop): Likewise.
	(widen_leading): Likewise.
	(widen_bswap): Likewise.
	(expand_parity): Likewise.
	(expand_unop): Likewise.
	(prepare_cmp_insn): Likewise.
	(prepare_float_lib_cmp): Likewise.
	(expand_float): Likewise.
	(expand_fix): Likewise.
	(expand_sfix_optab): Likewise.
	* postreload.c (move2add_use_add2_insn): Likewise.
	* reg-stack.c (reg_to_stack): Likewise.
	* reginfo.c (choose_hard_reg_mode): Likewise.
	* rtlanal.c (init_num_sign_bit_copies_in_rep): Likewise.
	* stor-layout.c (mode_for_size): Likewise.
	(smallest_mode_for_size): Likewise.
	(mode_for_vector): Likewise.
	(finish_bitfield_representative): Likewise.
	* tree-ssa-math-opts.c (target_supports_divmod_p): Likewise.
	* tree-vect-generic.c (type_for_widest_vector_mode): Likewise.
	* tree-vect-stmts.c (vectorizable_conversion): Likewise.
	* var-tracking.c (prepare_call_arguments): Likewise.

gcc/ada/
	* gcc-interface/misc.c (fp_prec_to_size): Use new mode iterators.
	(fp_size_to_prec): Likewise.

gcc/c-family/
	* c-common.c (c_common_fixed_point_type_for_size): Use new mode
	iterators.
	* c-cppbuiltin.c (c_cpp_builtins): Likewise.

Modified:
    branches/range-gen2/gcc/ChangeLog
    branches/range-gen2/gcc/ada/ChangeLog
    branches/range-gen2/gcc/ada/gcc-interface/misc.c
    branches/range-gen2/gcc/builtins.c
    branches/range-gen2/gcc/c-family/ChangeLog
    branches/range-gen2/gcc/c-family/c-common.c
    branches/range-gen2/gcc/c-family/c-cppbuiltin.c
    branches/range-gen2/gcc/combine.c
    branches/range-gen2/gcc/config/i386/i386.c
    branches/range-gen2/gcc/cse.c
    branches/range-gen2/gcc/dse.c
    branches/range-gen2/gcc/emit-rtl.c
    branches/range-gen2/gcc/explow.c
    branches/range-gen2/gcc/expmed.c
    branches/range-gen2/gcc/expr.c
    branches/range-gen2/gcc/machmode.h
    branches/range-gen2/gcc/omp-low.c
    branches/range-gen2/gcc/optabs-query.c
    branches/range-gen2/gcc/optabs.c
    branches/range-gen2/gcc/postreload.c
    branches/range-gen2/gcc/reg-stack.c
    branches/range-gen2/gcc/reginfo.c
    branches/range-gen2/gcc/rtlanal.c
    branches/range-gen2/gcc/stor-layout.c
    branches/range-gen2/gcc/tree-ssa-math-opts.c
    branches/range-gen2/gcc/tree-vect-generic.c
    branches/range-gen2/gcc/tree-vect-stmts.c
    branches/range-gen2/gcc/var-tracking.c



More information about the Gcc-cvs mailing list