tree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter important_candidates.
[gcc.git] / gcc / ChangeLog
index 0aae07faee2f75b8cf00537695d30b27c370d201..28a3219aacfdb7ad3ea4f1555c2b8a82983f9242 100644 (file)
@@ -1,3 +1,609 @@
+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