+2014-08-28 Bin Cheng <bin.cheng@arm.com>
+
+ * tree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter
+ important_candidates. Consider all important candidates if
+ IVS doesn't give any result. Remove check on ivs->upto.
+ (try_add_cand_for): Call iv_ca_add_use only once.
+
+2014-08-28 Alexander Ivchenko <alexander.ivchenko@intel.com>
+ Maxim Kuznetsov <maxim.kuznetsov@intel.com>
+ Anna Tikhonova <anna.tikhonova@intel.com>
+ Ilya Tocar <ilya.tocar@intel.com>
+ Andrey Turetskiy <andrey.turetskiy@intel.com>
+ Ilya Verbin <ilya.verbin@intel.com>
+ Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ (define_mode_iterator VI12_AVX2): Add V64QI and V32HI modes.
+ (define_expand "<sse2_avx2>_<plusminus_insn><mode>3<mask_name>"): Add
+ masking.
+ (define_insn "*<sse2_avx2>_<plusminus_insn><mode>3<mask_name>"): Ditto.
+ (define_expand "<sse2_avx2>_uavg<mode>3<mask_name>"): Ditto.
+ (define_insn "*<sse2_avx2>_uavg<mode>3<mask_name>"): Ditto.
+ (define_insn "*mul<mode>3"): Add EVEX version.
+
+2014-08-28 Alexander Ivchenko <alexander.ivchenko@intel.com>
+ Maxim Kuznetsov <maxim.kuznetsov@intel.com>
+ Anna Tikhonova <anna.tikhonova@intel.com>
+ Ilya Tocar <ilya.tocar@intel.com>
+ Andrey Turetskiy <andrey.turetskiy@intel.com>
+ Ilya Verbin <ilya.verbin@intel.com>
+ Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * config/i386/sse.md
+ (define_insn "avx512bw_interleave_highv64qi<mask_name>"): New.
+ (define_insn "avx2_interleave_highv32qi<mask_name>"): Add masking.
+ (define_insn "vec_interleave_highv16qi<mask_name>"): Ditto.
+ (define_insn "avx2_interleave_lowv32qi<mask_name>"): Ditto.
+ (define_insn "vec_interleave_lowv16qi<mask_name>"): Ditto.
+ (define_insn "avx2_interleave_highv16hi<mask_name>"): Ditto.
+ (define_insn "vec_interleave_highv8hi<mask_name>"): Ditto.
+ (define_insn "avx2_interleave_lowv16hi<mask_name>"): Ditto.
+ (define_insn "vec_interleave_lowv8hi<mask_name>"): Ditto.
+ (define_insn "avx2_interleave_highv8si<mask_name>"): Ditto.
+ (define_insn "vec_interleave_highv4si<mask_name>"): Ditto.
+ (define_insn "avx2_interleave_lowv8si<mask_name>"): Ditto.
+ (define_insn "vec_interleave_lowv4si<mask_name>"): Ditto.
+ (define_insn "vec_interleave_highv16qi<mask_name>"): New.
+ (define_insn "avx512bw_interleave_highv32hi<mask_name>"): Ditto.
+ (define_insn "<mask_codefor>avx512bw_interleave_lowv32hi<mask_name>"): Ditto.
+
+2014-08-28 Alexander Ivchenko <alexander.ivchenko@intel.com>
+ Maxim Kuznetsov <maxim.kuznetsov@intel.com>
+ Anna Tikhonova <anna.tikhonova@intel.com>
+ Ilya Tocar <ilya.tocar@intel.com>
+ Andrey Turetskiy <andrey.turetskiy@intel.com>
+ Ilya Verbin <ilya.verbin@intel.com>
+ Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * config/i386/sse.md
+ (define_mode_iterator VIMAX_AVX2): Add V4TI mode.
+ (define_insn "<sse2_avx2>_ashl<mode>3"): Add EVEX version.
+ (define_insn "<sse2_avx2>_lshr<mode>3"): Ditto.
+
+2014-08-28 Alexander Ivchenko <alexander.ivchenko@intel.com>
+ Maxim Kuznetsov <maxim.kuznetsov@intel.com>
+ Anna Tikhonova <anna.tikhonova@intel.com>
+ Ilya Tocar <ilya.tocar@intel.com>
+ Andrey Turetskiy <andrey.turetskiy@intel.com>
+ Ilya Verbin <ilya.verbin@intel.com>
+ Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * config/i386/sse.md
+ (define_mode_iterator VI128_256): New.
+ (define_insn "<mask_codefor><code><mode>3<mask_name>"): Ditto.
+
+2014-08-28 Alexander Ivchenko <alexander.ivchenko@intel.com>
+ Maxim Kuznetsov <maxim.kuznetsov@intel.com>
+ Anna Tikhonova <anna.tikhonova@intel.com>
+ Ilya Tocar <ilya.tocar@intel.com>
+ Andrey Turetskiy <andrey.turetskiy@intel.com>
+ Ilya Verbin <ilya.verbin@intel.com>
+ Kirill Yukhin <kirill.yukhin@intel.com>
+ Michael Zolotukhin <michael.v.zolotukhin@intel.com>
+
+ * config/i386/sse.md
+ (define_mode_iterator VI8_256_512): New.
+ (define_insn "<mask_codefor>avx512dq_cvtps2qq<mode><mask_name><round_name>"):
+ Ditto.
+ (define_insn "<mask_codefor>avx512dq_cvtps2qqv2di<mask_name>"): Ditto.
+ (define_insn "<mask_codefor>avx512dq_cvtps2uqq<mode><mask_name><round_name>"):
+ Ditto.
+ (define_insn "<mask_codefor>avx512dq_cvtps2uqqv2di<mask_name>"): Ditto.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * varasm.c (compute_reloc_for_rtx_1): Take a const_rtx. Remove the
+ pointer to the cumulative reloc value and return the value for
+ this reloc instead.
+ (compute_reloc_for_rtx): Take a const_rtx. Call
+ compute_reloc_for_rtx_1 directly for SYMBOL_REF and LABEL_REF,
+ avoiding any recursion. Use FOR_EACH_SUBRTX rather than
+ for_each_rtx for the CONST case.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * varasm.c (mark_constant): Replace this for_each_rtx callback with...
+ (mark_constants_in_pattern): ...this new function to iterate over
+ all the subrtxes.
+ (mark_constants): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * varasm.c: Include rtl-iter.h.
+ (const_rtx_hash_1): Take a const_rtx rather than an rtx *.
+ Remove the pointer to the cumulative hashval_t and just return
+ the hash for this rtx instead. Remove recursive CONST_VECTOR case.
+ (const_rtx_hash): Use FOR_EACH_SUBRTX instead of for_each_rtx.
+ Accumulate the hashval_ts here instead of const_rtx_hash_1.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * var-tracking.c (add_uses): Take an rtx rather than an rtx *.
+ Give real type of data parameter. Remove return value.
+ (add_uses_1): Use FOR_EACH_SUBRTX_VAR rather than for_each_rtx
+ to iterate over subrtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * var-tracking.c (use_narrower_mode_test): Turn from being a
+ for_each_rtx callback to being a function that examines each
+ subrtx itself.
+ (adjust_mems): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * var-tracking.c (non_suitable_const): Turn from being a for_each_rtx
+ callback to being a function that examines each subrtx itself.
+ Remove handling of null rtxes.
+ (add_uses): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * var-tracking.c: Include rtl-iter.h.
+ (rtx_debug_expr_p): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself.
+ (use_type): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * store-motion.c: Include rtl-iter.h.
+ (extract_mentioned_regs_1): Delete.
+ (extract_mentioned_regs): Use FOR_EACH_SUBRTX_VAR rather than
+ for_each_rtx to iterate over subrtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * sel-sched.c: Include rtl-iter.h
+ (count_occurrences_1): Delete.
+ (count_occurrences_equiv): Turn rtxes into const_rtxes.
+ Use FOR_EACH_SUBRTX rather than for_each_rtx.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * rtl.h (tls_referenced_p): Take a const_rtx rather than an rtx.
+ * rtlanal.c (tls_referenced_p_1): Delete.
+ (tls_referenced_p): Take a const_rtx rather than an rtx.
+ Use FOR_EACH_SUBRTX rather than for_each_rtx.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * rtl.h (for_each_inc_dec_fn): Remove special case for -1.
+ (for_each_inc_dec): Take an rtx rather than an rtx *.
+ * cselib.c (cselib_record_autoinc_cb): Update accordingly.
+ (cselib_record_sets): Likewise.
+ * dse.c (emit_inc_dec_insn_before, check_for_inc_dec_1)
+ (check_for_inc_dec): Likewise.
+ * rtlanal.c (for_each_inc_dec_ops): Delete.
+ (for_each_inc_dec_find_inc_dec): Take the MEM as argument,
+ rather than a pointer to the memory address. Replace
+ for_each_inc_dec_ops argument with separate function and data
+ arguments. Abort on non-autoinc addresses.
+ (for_each_inc_dec_find_mem): Delete.
+ (for_each_inc_dec): Take an rtx rather than an rtx *. Use
+ FOR_EACH_SUBRTX_VAR to visit every autoinc MEM.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * rtl.h (find_all_hard_regs): Declare.
+ * rtlanal.c (find_all_hard_regs): New function.
+ (record_hard_reg_uses_1): Delete.
+ (record_hard_reg_uses): Use find_all_hard_regs.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * rtl.h (replace_label_data): Delete.
+ (replace_label): Take the old label, new label and update-nuses flag
+ as direct arguments. Return void.
+ * cfgcleanup.c (outgoing_edges_match): Update accordingly.
+ * rtlanal.c (replace_label): Update interface as above. Handle
+ JUMP_TABLE_DATA as a special case. Handle JUMPs outside the
+ iterator. Use FOR_EACH_SUBRTX_PTR.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * rtl.h (get_pool_constant, rtx_referenced_p): Replace rtx parameters
+ with const_rtx parameters.
+ * varasm.c (get_pool_constant): Likewise.
+ * rtlanal.c (rtx_referenced_p_1): Delete.
+ (rtx_referenced_p): Use FOR_EACH_SUBRTX instead of for_each_rtx.
+ Assert that the rtx we're looking for is nonnull. Allow searches
+ for constant pool SYMBOL_REFs.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * reload1.c: Include rtl-iter.h.
+ (note_reg_elim_costly): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself.
+ (eliminate_regs_1, elimination_costs_in_insn): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * regcprop.c (cprop_find_used_regs_1): Delete.
+ (cprop_find_used_regs): Use FOR_EACH_SUBRTX instead of for_each_rtx.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * regcprop.c: Include rtl-iter.h.
+ (kill_value): Take a const_rtx.
+ (kill_autoinc_value): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself.
+ (copyprop_hardreg_forward_1): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * reg-stack.c: Include rtl-iter.h.
+ (subst_stack_regs_in_debug_insn): Delete.
+ (subst_all_stack_regs_in_debug_insn): Use FOR_EACH_SUBRTX_PTR
+ instead of for_each_rtx.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lower-subreg.c (find_decomposable_subregs): Turn from being
+ a for_each_rtx callback to being a function that examines each
+ subrtx itself. Remove handling of null rtxes.
+ (decompose_multiword_subregs): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lower-subreg.c (adjust_decomposed_uses): Delete.
+ (resolve_debug): Use FOR_EACH_SUBRTX_PTR rather than for_each_rtx.
+ Remove handling of null rtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * lower-subreg.c: Include rtl-iter.h.
+ (resolve_subreg_use): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself. Remove
+ handling of null rtxes.
+ (resolve_reg_notes, resolve_simple_move): Update accordingly.
+ (decompose_multiword_subregs): Likewise.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * loop-iv.c (altered_reg_used): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself.
+ (simplify_using_condition, simplify_using_initial_values): Update
+ accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * loop-iv.c: Include rtl-iter.h.
+ (find_single_def_src): New function.
+ (replace_single_def_regs): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself.
+ (replace_in_expr, simplify_using_initial_values): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * jump.c (eh_returnjump_p_1): Delete.
+ (eh_returnjump_p): Use FOR_EACH_SUBRTX rather than for_each_rtx.
+ Remove handling of null rtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * jump.c: Include rtl-iter.h.
+ (returnjump_p_1): Delete.
+ (returnjump_p): Use FOR_EACH_SUBRTX rather than for_each_rtx.
+ Remove handling of null rtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ira.c: Include rtl-iter.h.
+ (set_paradoxical_subreg): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself. Remove
+ handling of null rtxes.
+ (update_equiv_regs): Update call accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * fwprop.c: Include rtl-iter.h.
+ (varying_mem_p): Turn from being a for_each_rtx callback to being
+ a function that examines each subrtx itself.
+ (propagate_rtx): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * function.c: Include rtl-iter.h
+ (instantiate_virtual_regs_in_rtx): Turn from being a for_each_rtx
+ callback to being a function that examines each subrtx itself.
+ Return the changed flag.
+ (instantiate_virtual_regs_in_insn, instantiate_decl_rtl)
+ (instantiate_virtual_regs): Update calls accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * final.c: Include rtl-iter.h.
+ (mark_symbol_ref_as_used): Delete.
+ (mark_symbol_refs_as_used): Use FOR_EACH_SUBRTX instead of
+ for_each_rtx.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * emit-rtl.c: Include rtl-iter.h.
+ (find_auto_inc): Turn from being a for_each_rtx callback to being
+ a function that examines each subrtx itself. Assume the first operand
+ to an RTX_AUTOINC is the automodified register.
+ (try_split): Update call accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * dwarf2out.c (resolve_one_addr): Remove unused data parameter.
+ Return a bool, inverting the result so that 0/false means "not ok".
+ Use FOR_EACH_SUBRTX_PTR instead of for_each_rtx to iterate over
+ subrtxes of a CONST.
+ (mem_loc_descriptor, add_const_value_attribute)
+ (resolve_addr_in_expr): Update calls accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * dwarf2out.c: Include rtl-iter.h.
+ (const_ok_for_output_1): Take the rtx instead of a pointer to it.
+ Remove unused data parameter. Return a bool, inverting the result
+ so that 0/false means "not ok".
+ (const_ok_for_output): Update accordingly. Use FOR_EACH_SUBRTX_VAR
+ instead of for_each_rtx.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * dse.c: Include rtl-iter.h.
+ (check_mem_read_rtx): Change void * parameter to real type.
+ Remove return value.
+ (check_mem_read_use): Fix comment. Use FOR_EACH_SUBRTX_PTR instead of
+ for_each_rtx. Don't handle null rtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * df-problems.c: Include rtl-iter.h.
+ (find_memory): Turn from being a for_each_rtx callback to being
+ a function that examines each subrtx itself. Continue to look for
+ volatile references even after a nonvolatile one has been found.
+ (can_move_insns_across): Update calls accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ddg.c (walk_mems_2, walk_mems_1): Delete.
+ (insns_may_alias_p): Use FOR_EACH_SUBRTX rather than for_each_rtx
+ to iterate over subrtxes. Return a bool rather than an int.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ddg.c: Include rtl-iter.h.
+ (mark_mem_use_1): Rename to...
+ (mark_mem_use): ...deleting old mark_mem_use. Use FOR_EACH_SUBRTX
+ instead of for_each_rtx.
+ (mem_read_insn_p): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * cse.c (change_cc_mode_args): Delete.
+ (cse_change_cc_mode): Turn from being a for_each_rtx callback to being
+ a function that examines each subrtx itself. Take the fields of
+ change_cc_mode_args as argument and return void.
+ (cse_change_cc_mode_insn): Update calls accordingly.
+
2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
* cse.c (is_dead_reg): Change argument to const_rtx.