2014-08-28 Richard Biener <rguenther@suse.de>
PR tree-optimization/62283
* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
Do not peel loops for alignment where the vector loop likely
doesn't run at least VF times.
* gfortran.dg/vect/pr62283.f: New testcase.
* gcc.dg/tree-ssa/cunroll-5.c: Adjust.
* gcc.dg/vect/costmodel/i386/costmodel-vect-31.c: Likewise.
* gcc.dg/vect/costmodel/i386/costmodel-vect-33.c: Likewise.
* gcc.dg/vect/costmodel/x86_64/costmodel-vect-31.c: Likewise.
* gcc.dg/vect/costmodel/x86_64/costmodel-vect-33.c: Likewise.
* gcc.dg/vect/vect-33.c: Likewise.
From-SVN: r214678
* 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.
From-SVN: r214674
gcc/
* 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.
From-SVN: r214667
gcc/
* 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.
From-SVN: r214666
gcc/
* 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.
From-SVN: r214665
gcc/
* 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.
From-SVN: r214664
gcc/
* 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.
From-SVN: r214663
gcc/
* 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.
From-SVN: r214662
gcc/
* 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.
From-SVN: r214661
gcc/
* 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.
From-SVN: r214660
gcc/
* 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.
From-SVN: r214659
gcc/
* 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.
From-SVN: r214658
gcc/
* 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.
From-SVN: r214657
gcc/
* 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.
From-SVN: r214655
gcc/
* 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.
From-SVN: r214654
gcc/
* 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.
From-SVN: r214653
gcc/
* 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.
From-SVN: r214651
gcc/
* 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.
From-SVN: r214650
gcc/
* 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.
From-SVN: r214649
gcc/
* lower-subreg.c (adjust_decomposed_uses): Delete.
(resolve_debug): Use FOR_EACH_SUBRTX_PTR rather than for_each_rtx.
Remove handling of null rtxes.
From-SVN: r214648
gcc/
* 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.
From-SVN: r214647
gcc/
* 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.
From-SVN: r214646
gcc/
* 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.
From-SVN: r214645
gcc/
* jump.c (eh_returnjump_p_1): Delete.
(eh_returnjump_p): Use FOR_EACH_SUBRTX rather than for_each_rtx.
Remove handling of null rtxes.
From-SVN: r214644
gcc/
* 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.
From-SVN: r214643
gcc/
* 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.
From-SVN: r214642
gcc/
* 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.
From-SVN: r214641
gcc/
* 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.
From-SVN: r214640
gcc/
* 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.
From-SVN: r214639
gcc/
* 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.
From-SVN: r214638
gcc/
* 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.
From-SVN: r214637
gcc/
* 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.
From-SVN: r214636
gcc/
* 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.
From-SVN: r214634
gcc/
* 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.
From-SVN: r214633
gcc/
* 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.
From-SVN: r214631
gcc/
* 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.
From-SVN: r214630
gcc/
* 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.
From-SVN: r214629
gcc/
* 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.
From-SVN: r214628
gcc/
* 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.
From-SVN: r214626