+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.
+ (dead_debug_insn_data): Delete.
+ (is_dead_debug_insn): Expand commentary. Turn from being a
+ for_each_rtx callback to being a function that examines
+ each subrtx itself. Take the fields of dead_debug_insn_data
+ as argument.
+ (delete_trivially_dead_insns): Update call accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * cse.c (check_for_label_ref): Move earlier in file. Turn from
+ being a for_each_rtx callback to being a function that examines
+ each subrtx itself.
+ (cse_extended_basic_block): Update call accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * cse.c (check_dependence_data): Delete.
+ (check_dependence): Change from being a for_each_rtx callback to being
+ a function that examines all subrtxes itself. Don't handle null rtxes.
+ (invalidate): Update call accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * cse.c: Include rtl-iter.h.
+ (approx_reg_cost_1): Delete.
+ (approx_reg_cost): Use FOR_EACH_SUBRTX instead of for_each_rtx.
+ Don't handle null rtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * cfgcleanup.c: Include rtl-iter.h.
+ (mentions_nonequal_regs): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself.
+ (thread_jump): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * combine-stack-adj.c: Include rtl-iter.h.
+ (record_stack_refs_data): Delete.
+ (record_stack_refs): Turn from being a for_each_rtx callback
+ to being a function that examines each subrtx itself.
+ Take a pointer to the reflist. Invert sense of return value
+ so that true means success and false means failure. Don't
+ handle null rtxes.
+ (combine_stack_adjustments_for_block): Update accordingly.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * combine.c (record_truncated_value): Turn from being a for_each_rtx
+ callback to a function that takes an rtx and returns a bool
+ (record_truncated_values): Use FOR_EACH_SUBRTX_VAR instead of
+ for_each_rtx.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * combine.c: Include rtl-iter.h.
+ (unmentioned_reg_p_1): Delete.
+ (unmentioned_reg_p): Use FOR_EACH_SUBRTX rather than for_each_rtx.
+ Don't handle null rtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * calls.c: Include rtl-iter.h.
+ (internal_arg_pointer_based_exp_1): Delete.
+ (internal_arg_pointer_based_exp): Take a const_rtx.
+ Use FOR_EACH_SUBRTX to iterate over subrtxes.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * caller-save.c: Include rtl-iter.h.
+ (add_used_regs_1): Delete.
+ (add_used_regs): Use FOR_EACH_SUBRTX rather than for_each_rtx
+ to iterate over subrtxes. Assert that any remaining pseudos
+ have been spilled.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * bt-load.c: Include rtl-iter.h.
+ (btr_reference_found, find_btr_reference, btr_referenced_p): Delete.
+ (find_btr_use): Move further up file. Use FOR_EACH_SUBRTX_PTR
+ to iterate over subrtxes.
+ (insn_sets_btr_p, new_btr_user, compute_defs_uses_and_gen): Use
+ find_btr_use rather than btr_referenced_p.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * alias.c: Include rtl-iter.h.
+ (refs_newer_value_cb): Delete.
+ (refs_newer_value_p): Use FOR_EACH_SUBRTX instead of for_each_rtx.
+
+2014-08-28 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * rtl-iter.h: New file.
+ * rtlanal.c: Include it.
+ (rtx_all_subrtx_bounds, rtx_nonconst_subrtx_bounds): New variables.
+ (generic_subrtx_iterator <T>::add_single_to_queue)
+ (generic_subrtx_iterator <T>::add_subrtxes_to_queue)
+ (generic_subrtx_iterator <T>::free_array): New functions.
+ (generic_subrtx_iterator <T>::LOCAL_ELEMS): Define.
+ (generic_subrtx_iterator <const_rtx_accessor>)
+ (generic_subrtx_iterator <rtx_var_accessor>
+ (generic_subrtx_iterator <rtx_ptr_accessor>): Instantiate.
+ (setup_reg_subrtx_bounds): New function.
+ (init_rtlanal): Call it.
+
+2014-08-27 Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/62261
+ * config/sh/sh.md (ashlsi3): Handle negative shift count for
+ TARGET_SHMEDIA.
+ (ashldi3, ashrsi3, ashrdi3, lshrsi3, lshrdi3): Likewise.
+
+2014-08-27 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * emit-rtl.c (set_unique_reg_note): Discard notes with side effects.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * rtl.h (JUMP_LABEL_AS_INSN): New.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * rtl.h (free_EXPR_LIST_list): Strengthen param from rtx * to
+ rtx_expr_list **.
+ (alloc_EXPR_LIST): Strengthen return type from rtx to
+ rtx_expr_list *.
+ (remove_free_EXPR_LIST_node): Likewise for param.
+ * reload.h (struct reg_equivs_t): Strengthen field "alt_mem_list"
+ from rtx to rtx_expr_list *.
+ * sched-int.h (struct deps_desc): Strengthen fields
+ "pending_read_mems" and "pending_write_mems" from rtx to
+ rtx_expr_list *.
+
+ * dwarf2out.c (decl_piece_varloc_ptr): Strengthen return type from
+ rtx to rtx_expr_list *.
+ * lists.c (alloc_INSN_LIST): Likewise, also for local "r".
+ (free_EXPR_LIST_list): Strengthen param "listp" from rtx * to
+ rtx_expr_list **.
+ (remove_free_EXPR_LIST_node): Likewise. Strengthen local "node"
+ from rtx to rtx_expr_list *.
+ * loop-iv.c (simplify_using_initial_values): Strengthen local
+ "cond_list" from rtx to rtx_expr_list *, and locals "pnode",
+ "pnote_next" from rtx * to rtx_expr_list **.
+ * sched-deps.c (remove_from_both_dependence_lists): Strengthen
+ param "exprp" from rtx * to rtx_expr_list **.
+ (add_insn_mem_dependence): Strengthen local "mem_list" from
+ rtx * to rtx_expr_list **. Strengthen local "mem_node" from rtx
+ to rtx_expr_list *.
+ * sched-rgn.c (concat_insn_mem_list): Strengthen param "copy_mems"
+ and local "new_mems" from rtx to rtx_expr_list *. Strengthen
+ param "old_mems_p" from rtx * to rtx_expr_list **.
+ * var-tracking.c (struct adjust_mem_data): Strengthen field
+ "side_effects" from rtx to rtx_expr_list *.
+ (adjust_insn): Replace NULL_RTX with NULL when assigning to
+ rtx_expr_list *.
+ (prepare_call_arguments): Likewise.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * function.h (struct rtl_data): Strengthen field
+ "x_stack_slot_list" from rtx to rtx_expr_list *.
+
+ * emit-rtl.c (unshare_all_rtl_1): Add a checked cast
+ when assigning to stack_slot_list.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * function.h (struct rtl_data): Strengthen field
+ x_nonlocal_goto_handler_labels from rtx to rtx_expr_list *.
+ * rtl.h (remove_node_from_expr_list): Strengthen second param from
+ rtx * to rtx_expr_list **.
+
+ * cfgbuild.c (make_edges): In loop over
+ nonlocal_goto_handler_labels, strengthen local "x" from rtx to
+ rtx_expr_list *, and use methods of the latter class to clarify
+ the code.
+ * cfgrtl.c (cfg_layout_initialize): Strengthen local "x" from rtx to
+ rtx_expr_list *, and use methods of the latter class to clarify
+ the code.
+ * dwarf2cfi.c (create_trace_edges): Likewise for local "lab".
+ * reload1.c (set_initial_label_offsets): Likewise for local "x".
+ * rtlanal.c (remove_node_from_expr_list): Strengthen param "listp"
+ from rtx * to rtx_expr_list **. Strengthen local "temp" from rtx
+ to rtx_expr_list *. Use methods of the latter class to clarify
+ the code.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * function.h (struct expr_status): Strengthen field
+ "x_forced_labels" from rtx to rtx_expr_list *.
+
+ * cfgbuild.c (make_edges): Split local "x" into two locals,
+ strengthening one from rtx to rtx_expr_list *, and using methods
+ of said class.
+ * dwarf2cfi.c (create_trace_edges): Split local "lab" out; within
+ loop over forced_labels, introduce strengthen it from rtx to
+ rtx_expr_list *, using methods to clarify the code.
+ * jump.c (rebuild_jump_labels_1): Strengthen local "insn" from rtx
+ to rtx_expr_list *, using methods of said class to clarify the
+ code.
+ * reload1.c (set_initial_label_offsets): Split local "x" into two
+ per-loop variables, strengthening the first from rtx to
+ rtx_expr_list * and using methods.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * coretypes.h (class rtx_expr_list): Add forward declaration.
+ * emit-rtl.c (gen_rtx_EXPR_LIST): New.
+ * gengenrtl.c (special_rtx): Add EXPR_LIST.
+ * rtl.h (class rtx_expr_list): New subclass of rtx_def, adding
+ invariant: GET_CODE (X) == EXPR_LIST.
+ (is_a_helper <rtx_expr_list *>::test): New.
+ (rtx_expr_list::next): New.
+ (rtx_expr_list::element): New.
+ (gen_rtx_EXPR_LIST): New.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * varasm.c (mark_constants): Convert a GET_CODE check into a
+ dyn_cast, strengthening local "seq" from rtx to rtx_sequence *.
+ Use methods of rtx_sequence to clarify the code.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * sched-vis.c (print_pattern): Within SEQUENCE case, introduce a
+ local "seq" via a checked cast, and use methods of rtx_sequence
+ to simplify the code.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * resource.c (mark_referenced_resources): Strengthen local
+ "sequence" from rtx to rtx_sequence *, adding a checked cast, and
+ using methods of rtx_sequence to clarify the code.
+ (find_dead_or_set_registers): Within the switch statement, convert
+ a GET_CODE check to a dyn_cast, introducing local "seq". Within
+ the JUMP_P handling, introduce another local "seq", adding a
+ checked cast to rtx_sequence *. In both cases, use methods of
+ rtx_sequence to clarify the code.
+ (mark_set_resources): Within SEQUENCE case, introduce local "seq"
+ via a checked cast, and use methods of rtx_sequence to simplify
+ the code.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * reorg.c (redundant_insn): In two places in the function, replace
+ a check of GET_CODE with a dyn_cast, introducing local "seq", and
+ usings methods of rtx_sequence to clarify the code.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * jump.c (mark_jump_label_1): Within the SEQUENCE case, introduce
+ local "seq" with a checked cast, and use methods of rtx_sequence
+ to clarify the code.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * function.c (contains): Introduce local "seq" for PATTERN (insn),
+ with a checked cast, in the region for where we know it's a
+ SEQUENCE. Use methods of rtx_sequence.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * final.c (get_attr_length_1): Replace GET_CODE check with a
+ dyn_cast, introducing local "seq" and the use of methods of
+ rtx_sequence.
+ (shorten_branches): Likewise, introducing local "body_seq".
+ Strengthen local "inner_insn" from rtx to rtx_insn *.
+ (reemit_insn_block_notes): Replace GET_CODE check with a
+ dyn_cast, strengthening local "body" from rtx to rtx_sequence *.
+ Use methods of rtx_sequence.
+ (final_scan_insn): Likewise, introducing local "seq" for when
+ "body" is known to be a SEQUENCE, using its methods.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * except.c (can_throw_external): Strengthen local "seq" from rtx
+ to rtx_sequence *. Use methods of rtx_sequence.
+ (insn_nothrow_p): Likewise.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * dwarf2cfi.c (create_trace_edges): Convert GET_CODE check into a
+ dyn_cast, strengthening local "seq" from rtx to rtx_sequence *.
+ Use methods of rtx_sequence.
+ (scan_trace): Likewise for local "pat".
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * coretypes.h (class rtx_sequence): Add forward declaration.
+ * rtl.h (class rtx_sequence): New subclass of rtx_def, adding
+ invariant: GET_CODE (X) == SEQUENCE.
+ (is_a_helper <rtx_sequence *>::test): New.
+ (is_a_helper <const rtx_sequence *>::test): New.
+ (rtx_sequence::len): New.
+ (rtx_sequence::element): New.
+ (rtx_sequence::insn): New.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * rtl.h (free_INSN_LIST_list): Strengthen param from rtx * to
+ rtx_insn_list **.
+ (alloc_INSN_LIST): Strengthen return type from rtx to
+ rtx_insn_list *.
+ (copy_INSN_LIST): Likewise for return type and param.
+ (concat_INSN_LIST): Likewise for both params and return type.
+ (remove_free_INSN_LIST_elem): Strenghten first param from rtx to
+ rtx_insn *. Strengthen second param from rtx * to rtx_insn_list **.
+ (remove_free_INSN_LIST_node): Strenghten return type from rtx to
+ rtx_insn *. Strengthen param from rtx * to rtx_insn_list **.
+
+ * sched-int.h (struct deps_reg): Strengthen fields "uses", "sets",
+ "implicit_sets", "control_uses", "clobbers" from rtx to
+ rtx_insn_list *.
+ (struct deps_desc): Likewise for fields "pending_read_insns",
+ "pending_write_insns", "pending_jump_insns",
+ "last_pending_memory_flush", "last_function_call",
+ "last_function_call_may_noreturn", "sched_before_next_call",
+ "sched_before_next_jump".
+ (struct _haifa_deps_insn_data): Likewise for field "cond_deps".
+ (remove_from_deps): Strengthen second param from rtx to rtx_insn *.
+
+ * gcse.c (struct ls_expr): Strengthen fields "loads" and "stores"
+ from rtx to rtx_insn_list *.
+ (ldst_entry): Replace use of NULL_RTX with NULL when dealing with
+ rtx_insn_list *.
+
+ * haifa-sched.c (insn_queue): Strengthen this variable from rtx *
+ to rtx_insn_list **.
+ (dep_cost_1): Strengthen local "dep_cost_rtx_link" from rtx to
+ rtx_insn_list *.
+ (queue_insn): Likewise for local "link".
+ (struct haifa_saved_data): Strengthen field "insn_queue" from
+ rtx * to rtx_insn_list **.
+ (save_backtrack_point): Update allocation of save->insn_queue to
+ reflect the strengthening of elements from rtx to rtx_insn_list *.
+ (queue_to_ready): Strengthen local "link" from rtx to
+ rtx_insn_list *; use methods "next" and "insn" when traversing the
+ list.
+ (early_queue_to_ready): Likewise for locals "link", "next_link",
+ "prev_link".
+ (schedule_block): Update allocation of insn_queue to reflect the
+ strengthening of elements from rtx to rtx_insn_list *. Strengthen
+ local "link" from rtx to rtx_insn_list *, and use methods when
+ working it.
+ (add_to_speculative_block): Strengthen locals "twins" and
+ "next_node" from rtx to rtx_insn_list *, and use methods when
+ working with them. Strengthen local "twin" from rtx to
+ rtx_insn *, eliminating a checked cast.
+ (fix_recovery_deps): Strengthen locals "ready_list" and "link"
+ from rtx to rtx_insn_list *, and use methods when working with
+ them.
+
+ * lists.c (alloc_INSN_LIST): Strengthen return type and local "r"
+ from rtx to rtx_insn_list *, adding a checked cast.
+ (free_INSN_LIST_list): Strengthen param "listp" from rtx * to
+ rtx_insn_list **.
+ (copy_INSN_LIST): Strengthen return type and locals "new_queue",
+ "newlink" from rtx to rtx_insn_list *. Strengthen local
+ "pqueue" from rtx * to rtx_insn_list **. Strengthen local "x"
+ from rtx to rtx_insn *.
+ (concat_INSN_LIST): Strengthen return type and local "new_rtx",
+ from rtx to rtx_insn_list *. Use methods of the latter class.
+ (remove_free_INSN_LIST_elem): Strengthen param "elem" from rtx to
+ rtx_insn *, and param "listp" from rtx * to rtx_insn_list **.
+ (remove_free_INSN_LIST_node): Strengthen return type and local
+ "elem" from rtx to rtx_insn *. Strenghten param "listp" from
+ rtx * to rtx_insn_list **. Strengthen local "node" from rtx to
+ rtx_insn_list *, using "insn" method.
+
+ * sched-deps.c (add_dependence_list): Strengthen param "list"
+ from rtx to rtx_insn_list *, and use methods when working with it.
+ (add_dependence_list_and_free): Strengthen param "listp" from
+ rtx * to rtx_insn_list **.
+ (remove_from_dependence_list): Strenghten param "listp" from rtx *
+ to rtx_insn_list **, and use methods when working with *listp.
+ (remove_from_both_dependence_lists): Strengthen param "listp" from
+ rtx * to rtx_insn_list **
+ (add_insn_mem_dependence): Strengthen local "insn_list" from rtx *
+ to rtx_insn_list **. Eliminate local "link", in favor of two new
+ locals "insn_node" and "mem_node", an rtx_insn_list * and an rtx
+ respectively.
+ (deps_analyze_insn): Split out uses 'f local "t" as an INSN_LIST
+ by introducing local "cond_deps".
+ (remove_from_deps): Strengthen param "insn" from rtx to
+ rtx_insn *.
+
+ * sched-rgn.c (concat_insn_mem_list): Strengthen param
+ "copy_insns" and local "new_insns" from rtx to rtx_insn_list *.
+ Strengthen param "old_insns_p" from rtx * to rtx_insn_list **.
+ Use methods of rtx_insn_list.
+
+ * store-motion.c (struct st_expr): Strengthen fields
+ "antic_stores" and "avail_stores" from rtx to rtx_insn_list *.
+ (st_expr_entry): Replace NULL_RTX with NULL when dealing with
+ rtx_insn_list *.
+ (find_moveable_store): Split out "tmp" into multiple more-tightly
+ scoped locals. Use methods of rtx_insn_list *.
+ (compute_store_table): Strengthen local "tmp" from rtx to
+ rtx_insn *. Use methods of rtx_insn_list *.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * coretypes.h (class rtx_insn_list): Add forward declaration.
+ * rtl.h (class rtx_insn_list): New subclass of rtx_def
+ (is_a_helper <rtx_insn_list *>::test): New.
+ (rtx_insn_list::next): New.
+ (rtx_insn_list::insn): New.
+ (gen_rtx_INSN_LIST): Add prototype.
+ * emit-rtl.c (gen_rtx_INSN_LIST): New.
+ * gengenrtl.c (special_rtx): Add INSN_LIST.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * ira-lives.c (find_call_crossed_cheap_reg): Strengthen local
+ "prev" from rtx to rtx_insn *.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * rtl.h (INSN_UID): Convert from a macro to a pair of inline
+ functions. Require merely an rtx for now, not an rtx_insn *.
+ (BLOCK_FOR_INSN): Likewise.
+ (INSN_LOCATION): Likewise.
+ (INSN_HAS_LOCATION): Convert from a macro to an inline function.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * rtl.h (PATTERN): Convert this macro into a pair of inline
+ functions, for now, requiring const_rtx and rtx.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * target.def (unwind_emit): Strengthen param "insn" from rtx to
+ rtx_insn *.
+ (final_postscan_insn): Likewise.
+ (adjust_cost): Likewise.
+ (adjust_priority): Likewise.
+ (variable_issue): Likewise.
+ (macro_fusion_pair_p): Likewise.
+ (dfa_post_cycle_insn): Likewise.
+ (first_cycle_multipass_dfa_lookahead_guard): Likewise.
+ (first_cycle_multipass_issue): Likewise.
+ (dfa_new_cycle): Likewise.
+ (adjust_cost_2): Likewise for params "insn" and "dep_insn".
+ (speculate_insn): Likewise for param "insn".
+ (gen_spec_check): Likewise for params "insn" and "label".
+ (get_insn_spec_ds): Likewise for param "insn".
+ (get_insn_checked_ds): Likewise.
+ (dispatch_do): Likewise.
+ (dispatch): Likewise.
+ (cannot_copy_insn_p): Likewise.
+ (invalid_within_doloop): Likewise.
+ (legitimate_combined_insn): Likewise.
+ (needed): Likewise.
+ (after): Likewise.
+
+ * doc/tm.texi: Automatically updated to reflect changes to
+ target.def.
+
+ * haifa-sched.c (choose_ready): Convert NULL_RTX to NULL when
+ working with insn.
+ (schedule_block): Likewise.
+ (sched_init): Likewise.
+ (sched_speculate_insn): Strengthen param "insn" from rtx to
+ rtx_insn *.
+ (ready_remove_first_dispatch): Convert NULL_RTX to NULL when
+ working with insn.
+ * hooks.c (hook_bool_rtx_true): Rename to...
+ hook_bool_rtx_insn_true): ...this, and strengthen first param from
+ rtx to rtx_insn *.
+ (hook_constcharptr_const_rtx_null): Rename to...
+ (hook_constcharptr_const_rtx_insn_null): ...this, and strengthen
+ first param from const_rtx to const rtx_insn *.
+ (hook_bool_rtx_int_false): Rename to...
+ (hook_bool_rtx_insn_int_false): ...this, and strengthen first
+ param from rtx to rtx_insn *.
+ (hook_void_rtx_int): Rename to...
+ (hook_void_rtx_insn_int): ...this, and strengthen first param from
+ rtx to rtx_insn *.
+
+ * hooks.h (hook_bool_rtx_true): Rename to...
+ (hook_bool_rtx_insn_true): ...this, and strengthen first param from
+ rtx to rtx_insn *.
+ (hook_bool_rtx_int_false): Rename to...
+ (hook_bool_rtx_insn_int_false): ...this, and strengthen first
+ param from rtx to rtx_insn *.
+ (hook_void_rtx_int): Rename to...
+ (hook_void_rtx_insn_int): ...this, and strengthen first param from
+ rtx to rtx_insn *.
+ (hook_constcharptr_const_rtx_null): Rename to...
+ (hook_constcharptr_const_rtx_insn_null): ...this, and strengthen
+ first param from const_rtx to const rtx_insn *.
+
+ * sched-deps.c (sched_macro_fuse_insns): Strengthen param "insn"
+ and local "prev" from rtx to rtx_insn *.
+
+ * sched-int.h (sched_speculate_insn): Strengthen first param from
+ rtx to rtx_insn *.
+
+ * sel-sched.c (create_speculation_check): Likewise for local "label".
+ * targhooks.c (default_invalid_within_doloop): Strengthen param
+ "insn" from const_rtx to const rtx_insn *.
+ * targhooks.h (default_invalid_within_doloop): Strengthen param
+ from const_rtx to const rtx_insn *.
+
+ * config/alpha/alpha.c (alpha_cannot_copy_insn_p): Likewise.
+ (alpha_adjust_cost): Likewise for params "insn", "dep_insn".
+
+ * config/arc/arc.c (arc_sched_adjust_priority): Likewise for param
+ "insn".
+ (arc_invalid_within_doloop): Likewise, with const.
+
+ * config/arm/arm.c (arm_adjust_cost): Likewise for params "insn", "dep".
+ (arm_cannot_copy_insn_p): Likewise for param "insn".
+ (arm_unwind_emit): Likewise.
+
+ * config/bfin/bfin.c (bfin_adjust_cost): Likewise for params "insn",
+ "dep_insn".
+
+ * config/c6x/c6x.c (c6x_dfa_new_cycle): Likewise for param "insn".
+ (c6x_variable_issue): Likewise. Removed now-redundant checked
+ cast.
+ (c6x_adjust_cost): Likewise for params "insn", "dep_insn".
+
+ * config/epiphany/epiphany-protos.h (epiphany_mode_needed):
+ Likewise for param "insn".
+ (epiphany_mode_after): Likewise.
+ * config/epiphany/epiphany.c (epiphany_adjust_cost): Likewise for
+ params "insn", "dep_insn".
+ (epiphany_mode_needed): Likewise for param "insn".
+ (epiphany_mode_after): Likewise.
+
+ * config/i386/i386-protos.h (i386_pe_seh_unwind_emit): Likewise.
+ * config/i386/i386.c (ix86_legitimate_combined_insn): Likewise.
+ (ix86_avx_u128_mode_needed): Likewise.
+ (ix86_i387_mode_needed): Likewise.
+ (ix86_mode_needed): Likewise.
+ (ix86_avx_u128_mode_after): Likewise.
+ (ix86_mode_after): Likewise.
+ (ix86_adjust_cost): Likewise for params "insn", "dep_insn".
+ (ix86_macro_fusion_pair_p): Likewise for params "condgen", "condjmp".
+ (ix86_adjust_priority): Likewise for param "insn".
+ (core2i7_first_cycle_multipass_issue): Likewise for param "insn".
+ (do_dispatch): Likewise.
+ (has_dispatch): Likewise.
+ * config/i386/winnt.c (i386_pe_seh_unwind_emit): Likewise.
+
+ * config/ia64/ia64.c (TARGET_INVALID_WITHIN_DOLOOP): Update to
+ reflect renaming of default hook implementation from
+ hook_constcharptr_const_rtx_null to
+ hook_constcharptr_const_rtx_insn_null.
+ (ia64_adjust_cost_2): Strengthen params "insn", "dep_insn" from
+ rtx to rtx_insn *.
+ (ia64_variable_issue): Likewise for param "insn".
+ (ia64_first_cycle_multipass_dfa_lookahead_guard): Likewise.
+ (ia64_dfa_new_cycle): Likewise.
+ (ia64_get_insn_spec_ds): Likewise.
+ (ia64_get_insn_checked_ds): Likewise.
+ (ia64_speculate_insn): Likewise.
+ (ia64_gen_spec_check): Likewise for params "insn", "label".
+ (ia64_asm_unwind_emit): Likewise for param "insn".
+
+ * config/m32r/m32r.c (m32r_adjust_priority): Likewise.
+
+ * config/m68k/m68k.c (m68k_sched_adjust_cost): Likewise for params
+ "insn", "def_insn".
+ (m68k_sched_variable_issue): Likewise for param "insn".
+
+ * config/mep/mep.c (mep_adjust_cost): Likewise for params "insn",
+ "def_insn".
+
+ * config/microblaze/microblaze.c (microblaze_adjust_cost):
+ Likewise for params "insn", "dep".
+
+ * config/mips/mips.c (mips_adjust_cost): Likewise.
+ (mips_variable_issue): Likewise for param "insn".
+ (mips_final_postscan_insn): Likewise.
+
+ * config/mn10300/mn10300.c (mn10300_adjust_sched_cost): Likewise
+ for params "insn", "dep".
+
+ * config/pa/pa.c (pa_adjust_cost): Likewise for params "insn",
+ "dep_insn".
+ (pa_adjust_priority): Likewise for param "insn".
+
+ * config/picochip/picochip.c (picochip_sched_adjust_cost):
+ Likewise for params "insn", "dep_insn".
+
+ * config/rs6000/rs6000.c (rs6000_variable_issue_1): Likewise for
+ param "insn".
+ (rs6000_variable_issue): Likewise.
+ (rs6000_adjust_cost): Likewise for params "insn", "dep_insn".
+ (rs6000_debug_adjust_cost): Likewise.
+ (rs6000_adjust_priority): Likewise for param "insn".
+ (rs6000_use_sched_lookahead_guard): Likewise.
+ (get_next_active_insn): Likewise for return type and both params.
+ (redefine_groups): Likewise for params "prev_head_insn", "tail"
+ and locals "insn", "next_insn".
+ (pad_groups): Likewise.
+
+ * config/s390/s390.c (s390_adjust_priority): Likewise for param
+ "insn".
+ (s390_cannot_copy_insn_p): Likewise.
+ (s390_sched_variable_issue): Likewise for third param, eliminating
+ checked cast.
+ (TARGET_INVALID_WITHIN_DOLOOP): Update to reflect renaming of
+ default hook implementation from hook_constcharptr_const_rtx_null
+ to hook_constcharptr_const_rtx_insn_null.
+
+ * config/sh/sh.c (sh_cannot_copy_insn_p): Strengthen param "insn"
+ from rtx to rtx_insn *.
+ (sh_adjust_cost): Likewise for params "insn", "dep_insn".
+ (sh_variable_issue): Likewise for param "insn".
+ (sh_dfa_new_cycle): Likewise.
+ (sh_mode_needed): Likewise.
+ (sh_mode_after): Likewise.
+
+ * config/sparc/sparc.c (supersparc_adjust_cost): Likewise for
+ params "insn", "dep_insn".
+ (hypersparc_adjust_cost): Likewise.
+ (sparc_adjust_cost): Likewise.
+
+ * config/spu/spu.c (spu_sched_variable_issue): Likewise for third
+ param, eliminated checked cast.
+ (spu_sched_adjust_cost): Likewise for first and third params.
+
+ * config/tilegx/tilegx.c (tilegx_sched_adjust_cost): Strengthen
+ params "insn" and "dep_insn" from rtx to rtx_insn *.
+
+ * config/tilepro/tilepro.c (tilepro_sched_adjust_cost): Likewise.
+
+2014-08-27 David Malcolm <dmalcolm@redhat.com>
+
+ * gcc/config/mn10300/mn10300.c (is_load_insn): Rename to...
+ (set_is_load_p): ...this, updating to work on a SET pattern rather
+ than an insn.
+ (is_store_insn): Rename to...
+ (set_is_store_p): ...this, updating to work on a SET pattern
+ rather than an insn.
+ (mn10300_adjust_sched_cost): Move call to get_attr_timings from
+ top of function to where it is needed. Rewrite the bogus
+ condition that checks for "insn" and "dep" being PARALLEL to
+ instead use single_set, introducing locals "insn_set" and
+ "dep_set". Given that we only ever returned "cost" for a non-pair
+ of SETs, bail out early if we don't have a pair of SET.
+ Rewrite all uses of PATTERN (dep) and PATTERN (insn) to instead
+ use the new locals "insn_set" and "dep_set", and update calls to
+ is_load_insn and is_store_insn to be calls to set_is_load_p and
+ set_is_store_p.
+
+2014-08-27 Guozhi Wei <carrot@google.com>
+
+ PR target/62262
+ * config/aarch64/aarch64.md (*andim_ashift<mode>_bfiz): Check the shift
+ amount before using it.
+
+2014-08-27 Richard Biener <rguenther@suse.de>
+
+ * gimple-fold.c (get_maxval_strlen): Add overload wrapping
+ get_maxval_strlen inside a more useful API.
+ (gimple_fold_builtin_with_strlen): Remove and fold into ...
+ (gimple_fold_builtin): ... caller.
+ (gimple_fold_builtin_strlen, gimple_fold_builtin_strcpy,
+ gimple_fold_builtin_strncpy, gimple_fold_builtin_strcat,
+ gimple_fold_builtin_fputs, gimple_fold_builtin_memory_chk,
+ gimple_fold_builtin_stxcpy_chk, gimple_fold_builtin_stxncpy_chk,
+ gimple_fold_builtin_snprintf_chk, gimple_fold_builtin_snprintf,
+ gimple_fold_builtin_sprintf): Adjust to compute maxval
+ themselves.
+
+2014-08-27 Yvan Roux <yvan.roux@linaro.org>
+
+ PR other/62248
+ * config.gcc (arm*-*-*): Check --with-fpu against arm-fpus.def.
+
+2014-08-27 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 "<mask_codefor>avx512dq_broadcast<mode><mask_name>_1"):
+ Use `concat_tg_mode' attribute to determine asm register size.
+
+2014-08-27 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 VI48_AVX512VL): New.
+ (define_mode_iterator VI_UNALIGNED_LOADSTORE): Delete.
+ (define_mode_iterator VI_ULOADSTORE_BW_AVX512VL): New.
+ (define_mode_iterator VI_ULOADSTORE_F_AVX512VL): Ditto.
+ (define_expand "<sse2_avx_avx512f>_loaddqu<mode><mask_name>"
+ with VI1): Change mode iterator.
+ (define_expand "<sse2_avx_avx512f>_loaddqu<mode><mask_name>"
+ with VI_ULOADSTORE_BW_AVX512VL): New.
+ (define_expand "<sse2_avx_avx512f>_loaddqu<mode><mask_name>"
+ with VI_ULOADSTORE_F_AVX512VL): Ditto.
+ (define_insn "*<sse2_avx_avx512f>_loaddqu<mode><mask_name>"
+ with VI1): Change mode iterator.
+ (define_insn "*<sse2_avx_avx512f>_loaddqu<mode><mask_name>"
+ with VI_ULOADSTORE_BW_AVX512VL): New.
+ (define_insn "*<sse2_avx_avx512f>_loaddqu<mode><mask_name>"
+ with VI_ULOADSTORE_F_AVX512VL): Ditto.
+ (define_insn "<sse2_avx_avx512f>_storedqu<mode>
+ with VI1): Change mode iterator.
+ (define_insn "<sse2_avx_avx512f>_storedqu<mode>
+ with VI_ULOADSTORE_BW_AVX512VL): New.
+ (define_insn "<sse2_avx_avx512f>_storedqu<mode>
+ with VI_ULOADSTORE_BW_AVX512VL): Ditto.
+ (define_insn "avx512f_storedqu<mode>_mask"): Delete.
+ (define_insn "<avx512>_storedqu<mode>_mask" with
+ VI48_AVX512VL): New.
+ (define_insn "<avx512>_storedqu<mode>_mask" with
+ VI12_AVX512VL): Ditto.
+
+2014-08-27 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 VI48_AVX2_48_AVX512F): Delete.
+ (define_mode_iterator VI48_AVX512BW): New.
+ (define_insn "<avx2_avx512f>_<shift_insn>v<mode><mask_name>"): Delete.
+ (define_insn "<avx2_avx512bw>_<shift_insn>v<mode><mask_name>"
+ with VI48_AVX2_48_AVX512F): New.
+ (define_insn "<avx2_avx512bw>_<shift_insn>v<mode><mask_name>"
+ with VI2_AVX512VL): Ditto.
+
+2014-08-27 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/62239
+ * builtins.c (fold_builtin_strcat_chk): Move to gimple-fold.c.
+ (fold_builtin_3): Do not fold strcat_chk here.
+ * gimple-fold.c (gimple_fold_builtin_strcat_chk): Move here
+ from builtins.c.
+ (gimple_fold_builtin): Fold strcat_chk here.
+
+2014-08-26 Aldy Hernandez <aldyh@redhat.com>
+
+ * dwarf2out.h (dwarf2out_decl): Remove prototype.
+ * dwarf2out.c (dwarf2out_decl): Make static.
+
+2014-08-26 Joel Sherrill <joel.sherrill@oarcorp.com>
+
+ * doc/invoke.texi: -fno-cxa-atexit should be -fno-use-cxa-atexit.
+
+2014-08-26 David Malcolm <dmalcolm@redhat.com>
+
+ * cselib.h (struct elt_loc_list): Strengthen field "setting_insn"
+ from rtx to rtx_insn *.
+ (cselib_lookup_from_insn): Likewise for final param.
+ (cselib_subst_to_values_from_insn): Likewise.
+ (cselib_add_permanent_equiv): Likewise.
+
+ * cselib.c (cselib_current_insn): Likewise for this variable.
+ (cselib_subst_to_values_from_insn): Likewise for param "insn".
+ (cselib_lookup_from_insn): Likewise.
+ (cselib_add_permanent_equiv): Likewise for param "insn" and local
+ "save_cselib_current_insn".
+ (cselib_process_insn): Replace use of NULL_RTX with NULL.
+
+ * sched-deps.c (add_insn_mem_dependence): Strengthen param "insn"
+ from rtx to rtx_insn *.
+
+2014-08-26 David Malcolm <dmalcolm@redhat.com>
+
+ * dse.c (dse_step6): Strengthen local "rinsn" from rtx to
+ rtx_insn *.
+
2014-08-26 David Malcolm <dmalcolm@redhat.com>
* df.h (df_dump_insn_problem_function): Strengthen first param of