gcc.git
10 years agoaltivec.h (vec_xl): New #define.
Bill Schmidt [Thu, 28 Aug 2014 21:50:51 +0000 (21:50 +0000)]
altivec.h (vec_xl): New #define.

[gcc]

2014-08-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/altivec.h (vec_xl): New #define.
(vec_xst): Likewise.
* config/rs6000/rs6000-builtin.def (XXSPLTD_V2DF): New built-in.
(XXSPLTD_V2DI): Likewise.
(DIV_V2DI): Likewise.
(UDIV_V2DI): Likewise.
(MUL_V2DI): Likewise.
* config/rs6000/rs6000-c.c (altivec_overloaded_builtins): Add
entries for VSX_BUILTIN_XVRDPI, VSX_BUILTIN_DIV_V2DI,
VSX_BUILTIN_UDIV_V2DI, VSX_BUILTIN_MUL_V2DI,
VSX_BUILTIN_XXSPLTD_V2DF, and VSX_BUILTIN_XXSPLTD_V2DI).
* config/rs6000/vsx.md (UNSPEC_VSX_XXSPLTD): New unspec.
(UNSPEC_VSX_DIVSD): Likewise.
(UNSPEC_VSX_DIVUD): Likewise.
(UNSPEC_VSX_MULSD): Likewise.
(vsx_mul_v2di): New insn-and-split.
(vsx_div_v2di): Likewise.
(vsx_udiv_v2di): Likewise.
(vsx_xxspltd_<mode>): New insn.

[gcc/testsuite]

2014-08-28  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* gcc.target/powerpc/builtins-1.c: Add tests for vec_xl, vec_xst,
vec_round, vec_splat, vec_div, and vec_mul.
* gcc.target/powerpc/builtins-2.c: New test.

From-SVN: r214699

10 years agoNEXT_INSN and PREV_INSN take a const rtx_insn
David Malcolm [Thu, 28 Aug 2014 21:29:38 +0000 (21:29 +0000)]
NEXT_INSN and PREV_INSN take a const rtx_insn

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* rtl.h (RTX_PREV): Added checked casts to uses of PREV_INSN and
NEXT_INSN.
(PREV_INSN): Strengthen param from const_rtx to const rtx_insn *.
(NEXT_INSN): Likewise.
(JUMP_LABEL_AS_INSN): Add a "const" modifier to param.
(reg_used_between_p): Strengthen params 2 and 3 from const_rtx to
const rtx_insn *.
(no_labels_between_p): Likewise for both params.

* config/aarch64/aarch64.c (aarch64_output_casesi): Add a checked
cast when using NEXT_INSN on operands[2].
* config/alpha/alpha.c (alpha_set_memflags): Strengthen local
"insn" from rtx to rtx_insn *, adding a checked cast.
(alpha_handle_trap_shadows): Strengthen locals "i", "n" from rtx to
rtx_insn *.
* config/arc/arc-protos.h (arc_ccfsm_record_condition): Likewise
for third param.
(arc_text_label): Likewise for param "insn".
* config/arc/arc.c (arc_expand_epilogue): Likewise for local
"insn".
(arc_ccfsm_record_condition): Likewise for param "jump".
(arc_text_label): Likewise for local "label".
* config/arc/arc.md (doloop_begin_i): Likewise for local "scan".
Introduce a local "seq" via a dyn_cast to rtx_sequence *, and use
a method for typesafety.  Add a checked cast.
* config/arc/constraints.md (Clb): Add a checked cast when getting
the CODE_LABEL from a LABEL_REF.
* config/arm/arm.c (require_pic_register): Strengthen locals
"seq", "insn" from rtx to rtx_insn *.
(create_fix_barrier): Likewise for locals "selected", "next".
(thumb1_reorg): Likewise for locals "prev", "insn".
(arm_expand_prologue): Likewise for local "last".
(thumb1_output_casesi): Add a checked cast when using NEXT_INSN on
operands[0].
(thumb2_output_casesi): Likewise for operands[2].
* config/avr/avr-log.c (avr_log_vadump): Within 'L' case,
strengthen local "insn" from rtx to rtx_insn *.
* config/bfin/bfin.c (find_next_insn_start): Likewise for return
type and param "insn".
(find_prev_insn_start): Likewise.
(hwloop_optimize): Likewise for locals "insn", "last_insn",
"prev".
(gen_one_bundle): Likewise for loal "t".
(find_load): Likewise for param "insn".
(workaround_speculation): Likewise for locals "insn", "next",
"target", "next_tgt".
* config/c6x/c6x.c (assign_reservations): Likewise for both params
and for locals "insn", "within", "last".
(count_unit_reqs): Likewise for params "head", "tail" and local
"insn".
(try_rename_operands): Likewise for params "head", "tail".
(reshuffle_units): Likewise for locals "head", "tail", "insn".
(struct c6x_sched_context): Likewise for fields
"last_scheduled_insn", "last_scheduled_iter0".
(init_sched_state): Replace NULL_RTX with NULL.
(reorg_split_calls): Strengthen local "new_cycle_first" from rtx
to rtx_insn *.
(undo_split_delayed_nonbranch): Likewise for param and for local
"prev".
(conditionalize_after_sched): Likewise for local "insn".
(bb_earliest_end_cycle): Likewise.
(filter_insns_above): Likewise for locals "insn", "next".
(hwloop_optimize): Remove redundant checked cast.
(hwloop_fail): Strengthen local "t" from rtx to rtx_insn *.
* config/cris/cris.c (cris_initial_frame_pointer_offset): Replace
NULL_RTX with NULL.
(cris_simple_epilogue): Likewise.
(cris_expand_prologue): Likewise.
(cris_expand_epilogue): Likewise.
* config/frv/frv.c (frv_function_contains_far_jump): Strengthen
local "insn" from rtx to rtx_insn *.
(frv_ifcvt_modify_tests): Likewise for locals "last_insn", "insn".
(struct frv_packet_group): Likewise for the elements within array
fields "insns", "sorted", and for field "nop".
(frv_packet): Likewise for the elements within array field
"insns".
(frv_add_insn_to_packet): Likewise for param "insn".
(frv_insert_nop_in_packet): Likewise for param "insn" and local
"last".
(frv_for_each_packet): Likewise for locals "insn", "next_insn".
(frv_sort_insn_group_1): Likewise for local "insn".
(frv_optimize_membar_local): Likewise.
(frv_align_label): Likewise for locals "x", "last", "barrier",
"label".
* config/ia64/ia64.c (last_scheduled_insn): Likewise for this
local.
(ia64_sched_init): Likewise for local "insn".
(scheduled_good_insn): Likewise for param "last".
(struct _ia64_sched_context): Likewise for field
"last_scheduled_insn".
(ia64_init_sched_context): Replace NULL_RTX with NULL.
(struct bundle_state): Likewise for field "insn".
(issue_nops_and_insn): Likewise for param "insn".
(get_next_important_insn): Likewise for return type and both
params.
(ia64_add_bundle_selector_before): Likewise for param "insn".
(bundling): Likewise for params "prev_head_insn", "tail" and
locals "insn", "next_insn", "b".  Eliminate top-level local rtx
"nop" in favor of new locals rtx "nop_pat" and rtx_insn *nop;
* config/iq2000/iq2000-protos.h (iq2000_fill_delay_slot):
Strengthen final param from rtx to rtx_insn *.
(iq2000_move_1word): Likewise for second param.
* config/iq2000/iq2000.c (iq2000_fill_delay_slot): Likewise for
param "cur_insn" and local "next_insn".
(iq2000_move_1word): Likewise for param "insn".
* config/iq2000/iq2000.md (insn before ADDR_DIFF_VEC): Add checked
casts when using NEXT_INSN on operands[1].
* config/m32c/m32c.c (m32c_function_needs_enter): Strengthen local
"insn" from rtx to rtx_insn *.
* config/m68k/m68k.c (m68k_jump_table_ref_p): Split out uses of
"x", introducing local rtx_insn * "insn" for when working with the
CODE_LABEL of the LABEL_REF.
(m68k_sched_md_init_global): Strengthen local "insn" from rtx to
rtx_insn *.
* config/mcore/mcore-protos.h (mcore_is_dead): Likewise for first
param.
* config/mcore/mcore.c (emit_new_cond_insn): Likewise for return
type.
(conditionalize_block): Likewise for return type and param.
(mcore_is_dead): Likewise for param "first" and local "insn".
(emit_new_cond_insn): Likewise for return type.
(conditionalize_block): Likewise for return type, param, and
locals "insn", "blk_1_br", "end_blk_2_insn", "start_blk_3_lab",
"newinsn".
(conditionalize_optimization): Likewise for local "insn".
* config/mep/mep.c (mep_jmp_return_reorg): Add checked cast when
using NEXT_INSN.
* config/microblaze/microblaze.md: Add checked casts when using
NEXT_INSN.
* config/mips/mips.c (mips_expand_prologue): Eliminate top-level
rtx "insn" in favor of various more tightly-scoped rtx "insn" and
and rtx_insn * "insn".
* config/mips/mips.md (casesi_internal_mips16_<mode>): Add a
checked cast when using NEXT_INSN on operands[2].
* config/mn10300/mn10300.c (mn10300_insert_setlb_lcc): Strengthen
local "insn" from rtx to rtx_insn *.
* config/nds32/nds32-fp-as-gp.c (nds32_fp_as_gp_check_available):
Likewise.
* config/nds32/nds32-md-auxiliary.c (nds32_output_casesi_pc_relative):
Add a checked cast when using NEXT_INSN on operands[1].
* config/pa/pa-protos.h (pa_following_call): Strengthen param from
rtx to rtx_insn *.
(pa_output_cbranch): Likewise for final param.
(pa_output_lbranch): Likewise for second param.
(pa_output_bb): Likewise for third param.
(pa_output_bvb): Likewise.
(pa_output_dbra): Likewise for second param.
(pa_output_movb): Likewise.
(pa_output_parallel_movb): Likewise.
(pa_output_parallel_addb): Likewise.
(pa_output_millicode_call): Likewise for first param.
(pa_output_mul_insn): Likewise for second param.
(pa_output_div_insn): Likewise for third param.
(pa_output_mod_insn): Likewise for second param.
(pa_jump_in_call_delay): Likewise for param.
* config/pa/pa.c (pa_output_mul_insn): Likewise for param "insn".
(pa_output_div_insn): Likewise.
(pa_output_mod_insn): Likewise.
(pa_output_cbranch): Likewise.
(pa_output_lbranch): Likewise.
(pa_output_bb): Likewise.
(pa_output_bvb): Likewise.
(pa_output_dbra): Likewise.
(pa_output_movb): Likewise.
(pa_output_millicode_call): Likewise; use method of rtx_sequence *
to simplify and for typesafety.
(pa_output_call): Use method of rtx_sequence *.
(forward_branch_p): Strengthen param "insn" from rtx to rtx_insn *.
(pa_jump_in_call_delay): Likewise.
(pa_output_parallel_movb): Likewise.
(pa_output_parallel_addb): Likewise.
(pa_following_call): Likewise.
(pa_combine_instructions): Likewise for locals "anchor",
"floater".
(pa_can_combine_p): Likewise for params "anchor", "floater" and
locals "start", "end".
* config/picochip/picochip.c (picochip_reset_vliw): Likewise for
param "insn" and local "local_insn".
(picochip_final_prescan_insn): Likewise for local "local_insn".
* config/rs6000/rs6000.c (compute_save_world_info): Likewise for
local "insn".
(uses_TOC): Likewise.
* config/s390/s390.c (get_some_local_dynamic_name): Likewise.
(s390_mainpool_finish): Eliminate top-level local rtx "insn",
splitting out to more tightly-scoped locals, 3 as rtx and one as
rtx_insn *.
(s390_optimize_nonescaping_tx): Strengthen local "tmp" from rtx
to rtx_insn *.
(s390_emit_prologue): Introduce a local "insn" to be an rtx_insn *
where needed.
* config/sh/sh-protos.h (barrier_align): Strenghten param from rtx
to rtx_insn *.
(fixup_addr_diff_vecs): Likewise.
(reg_unused_after): Likewise for param 2.
(sh_can_redirect_branch): Likewise for both params.
(check_use_sfunc_addr): Likewise for param 1.
* config/sh/sh.c (fixup_mova): Likewise for local "worker".
(find_barrier): Likewise for local "last_got".
(gen_block_redirect): Likewise for return type, param "jump" and
locals "prev", "scan", "next", "insn".
(struct far_branch): Likewise for fields "near_label",
"insert_place", "far_label".
(gen_far_branch): Likewise for local "jump".
(fixup_addr_diff_vecs): Likewise for param "first" and locals
"insn", "prev".
(barrier_align): Likewise for param and for locals "prev", "x".
Introduce local rtx_sequence * "prev_seq" and use insn method for
typesafety and clarity.
(sh_reorg): Strengthen local "scan" from rtx to rtx_insn *.
(get_dest_uid): Likewise for local "dest".
(split_branches): Likewise for locals "next", "beyond", "label",
"block", "far_label".  Add checked casts when assigning to
bp->far_label and "far_label".
(reg_unused_after): Strengthen param "scan" from rtx to rtx_insn *.
(sequence_insn_p): Likewise.
(mark_constant_pool_use): Likewise for locals "insn", "lab".  Add a
more loop-scoped rtx "insn" when walking LABEL_REFS.
(sh_can_redirect_branch): Strengthen both params from rtx to
rtx_insn *.
(check_use_sfunc_addr): Likewise for param "insn".  Introduce a
new local rtx_sequence * "seq" via a dyn_cast, and use a method
for clarity and typesafety.
* config/sh/sh.md (define_expand "epilogue"): Strengthen local
"insn" from rtx to rtx_insn *.
(define_insn "casesi_worker_1"): Add a checked cast to rtx_insn *
when using NEXT_INSN on the CODE_LABEL in operands[2].
(define_insn "casesi_worker_2"): Likewise.
(define_insn "casesi_shift_media"): Likewise.
(define_insn "casesi_load_media"): Likewise for the CODE_LABEL in
operands[3].
* config/sh/sh_optimize_sett_clrt.cc (struct ccreg_value):
Strengthen field "insn" from rtx to rtx_insn *.
(sh_optimize_sett_clrt::execute): Likewise for locals "next_i", "i".
(sh_optimize_sett_clrt::find_last_ccreg_values): Likewise for
param "start_insn" and local "start_insn".
* config/sh/sh_treg_combine.cc (struct set_of_reg): Likewise for
field "insn".
(find_set_of_reg_bb): Likewise for param "insn".
(trace_reg_uses_1): Likewise for param "start_insn" and local "i".
(trace_reg_uses): Likewise for param "start_insn".
(sh_treg_combine::cbranch_trace): Likewise for field
"cbranch_insn".
(sh_treg_combine::cbranch_trace::cbranch_trace): Likewise for
param "insn".
(sh_treg_combine::record_set_of_reg): Likewise for param
"start_insn" and local "i".
(sh_treg_combine::can_remove_cstore): Likewise for local
"prev_insn".
(sh_treg_combine::try_optimize_cbranch): Likewise for param
"insn".
(sh_treg_combine::execute): Likewise for local "i".
* config/sparc/sparc-protos.h (empty_delay_slot): Likewise for
param.
(sparc_check_64): Likewise for second param.
* config/sparc/sparc.c (sparc_do_work_around_errata): Likewise for
locals "insn", "next".  Introduce local rtx_sequence * "seq" via a
dyn_cast, using its insn method for typesafety and clarity.
(empty_delay_slot): Strengthen param "insn" from rtx to
rtx_insn *.
(set_extends): Likewise.
(sparc_check_64): Likewise.
* config/stormy16/stormy16.c (xstormy16_split_cbranch): Likewise
for locals "seq", "last_insn".
(combine_bnp): Likewise for param "insn".
(xstormy16_reorg): Likewise for local "insn".
* config/v850/v850.c (substitute_ep_register): Likewise for params
"first_insn", "last_insn" and local "insn".
(v850_reorg): Likewise for fields "first_insn", "last_insn" within
elements of "regs" array, and local "insn".
* except.c (emit_note_eh_region_end): Likewise for param "insn".
* final.c (final_sequence): Strengthen this global from rtx to
rtx_sequence *.
(shorten_branches): Strenthen locals "rel_lab", "prev" from rtx to
rtx_insn *.
(final_scan_insn): Update assignment to "final_sequence" to be
from "seq", the cast version of "body", for type-safety.
* function.c (assign_parm_setup_reg): Strengthen locals "insn",
"insns" from rtx to rtx_insn *.
(thread_prologue_and_epilogue_insns): Likewise for local "seq".
* genattr.c (main): When writing out generated insn-attr.h,
strengthen params 1 and 3 of eligible_for_delay,
eligible_for_annul_true, eligible_for_annul_false from rtx to
rtx_insn *.
* genattrtab.c (write_eligible_delay): Likewise when writing out
generated insn-attrtab.c; also local "insn" the generated
functions.
* hw-doloop.c (discover_loops): Strengthen local "insn" from rtx
to rtx_insn *.
* hw-doloop.h (struct GTY hwloop_info_d): Strengthen field
"start_label" from rtx to rtx_insn *.
* ira.c (decrease_live_ranges_number): Likewise for local "p".
(ira_update_equiv_info_by_shuffle_insn): Likewise for param
"insns" and local "insn".
(validate_equiv_mem): Likewise for param "start" and local "insn".
(memref_used_between_p): Likewise for params "start", "end" and
local "insn".
* ira.h (ira_update_equiv_info_by_shuffle_insn): Likewise for
final param.
* loop-doloop.c (doloop_optimize): Within region guarded by
INSN_P (doloop_pat), introduce a new local rtx_insn *
"doloop_insn" via a checked cast, and use it for typesafety,
eventually writing the value back into doloop_pat.
* output.h (final_sequence): Strengthen this global from rtx to
rtx_sequence *.
* recog.c (peep2_attempt): Rename param "insn" to "uncast_insn",
reintroducing "insn" as an rtx_insn * via a checked cast.
Strengthen param "attempt" and local "new_insn"from rtx to
rtx_insn *.
(peephole2_optimize): Strengthen locals "insn", "attempt" from rtx
to rtx_insn *.
* ree.c (emit_note_eh_region_end): Likewise for local "insn".
* reload1.c (reload_as_needed): Eliminate top-level locals "x" and
"p" in favor of more tightly-scoped replacements, sometimes rtx
and sometimes rtx_insn *, as appropriate.
(delete_output_reload): Eliminate top-level rtx "i1", splitting
into two loop-scoped locals, one an rtx, the other an rtx_insn *.
* reorg.c (delete_scheduled_jump): Add checked cast.  Strengthen
local "trial" from rtx to rtx_insn *.
(redirect_with_delay_slots_safe_p): Strengthen param "jump" from
rtx to rtx_insn *.  Strenghten local "pat" from rtx to
rtx_sequence * and use methods for clarity and typesafety.
(redirect_with_delay_list_safe_p): Strengthen param "jump" from
rtx to rtx_insn *.  Strenghten local "li" from rtx to
rtx_insn_list * and use its methods for clarity and typesafety.
(steal_delay_list_from_target): Strengthen param "insn" from rtx
to rtx_insn *.
(steal_delay_list_from_fallthrough): Likewise.
(try_merge_delay_insns): Likewise for param "thread" and locals
"trial", "next_trial", "delay_insn".
(redundant_insn): Likewise for param "target" and local "trial".
(own_thread_p): Likewise for param "thread" and locals
"active_insn", "insn".
(get_label_before): Likewise for param "insn".
(fill_simple_delay_slots): Likewise for local "new_label"; use
JUMP_LABEL_AS_INSN as necessary when calling own_thread_p.
(label_before_next_insn): Strengthen return type and local "insn"
from rtx to rtx_insn *.
(relax_delay_slots): Likewise for locals "other", "tmp".
(make_return_insns): Likewise for param "first" and locals "insn",
"jump_insn", "prev".  Move declaration of "pat" to its assignment
and strengthen from rtx to rtx_sequence *.  Use its methods for
clarity and typesafety.
* rtlanal.c (no_labels_between_p): Strengthen params from
const_rtx to const rtx_insn *.  Strengthen local "p" from rtx to
rtx_insn *.
(reg_used_between_p): Strengthen params "from_insn", "to_insn"
from const_rtx to const rtx_insn *.
(reg_set_between_p): Rename param "from_insn" to
"uncast_from_insn", and reintroduce "from_insn" as a
const rtx_insn * via a checked cast.
(modified_between_p): Likewise for param "start" as "uncast_start".
(tablejump_p): Add a cast when invoking NEXT_INSN on "label".
* sel-sched-ir.c (get_seqno_by_preds): Strengthen param and locals
"tmp", head" from rtx to rtx_insn *.
(recompute_rev_top_order): Likewise for local "insn".
* sel-sched-ir.h (get_seqno_by_preds): Likewise for param.
* store-motion.c (build_store_vectors): Likewise for local "insn".
Strengthen local "st" from rtx to rtx_insn_list * and use methods
for clarity and typesafety.
* tree-ssa-loop-ivopts.c (seq_cost): Strengthen param "seq" from
rtx to rtx_insn *.
(computation_cost): Likewise for local "seq".
(get_address_cost): Likewise.

/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* rtx-classes-status.txt (TODO): NEXT_INSN/PREV_INSN are done.

From-SVN: r214698

10 years agotablejump_p takes an rtx_insn
David Malcolm [Thu, 28 Aug 2014 20:51:33 +0000 (20:51 +0000)]
tablejump_p takes an rtx_insn

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* rtl.h (tablejump_p): Strengthen first param from const_rtx to
const rtx_insn *.
(label_is_jump_target_p): Likewise for second param.

* rtlanal.c (tablejump_p): Likewise for param "insn".
(label_is_jump_target_p): Likewise for param "jump_insn".

From-SVN: r214696

10 years agofind_first_parameter_load params and return type
David Malcolm [Thu, 28 Aug 2014 20:49:58 +0000 (20:49 +0000)]
find_first_parameter_load params and return type

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* rtl.h (find_first_parameter_load): Strengthen return type and
both params from rtx to rtx_insn *.
* rtlanal.c (find_first_parameter_load): Strengthen return type,
both params and locals "before", "first_set" from rtx to
rtx_insn *.  Remove now-redundant cast.
* except.c (sjlj_mark_call_sites): Use NULL rather than NULL_RTX.

From-SVN: r214695

10 years agoDelete find_last_value
David Malcolm [Thu, 28 Aug 2014 20:47:49 +0000 (20:47 +0000)]
Delete find_last_value

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* rtl.h (find_last_value): Delete.
* rtlanal.c (find_last_value): Delete.

From-SVN: r214694

10 years agoWork towards NEXT_INSN/PREV_INSN requiring insns as their params
David Malcolm [Thu, 28 Aug 2014 20:45:40 +0000 (20:45 +0000)]
Work towards NEXT_INSN/PREV_INSN requiring insns as their params

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* cfgexpand.c (pass_expand::execute): Strengthen local "after"
from rtx to rtx_insn *.
* cfgrtl.c (force_nonfallthru_and_redirect): Replace use of local
rtx "note" with new local rtx_insn * "new_head" when calculating
head insn of new basic block.
* combine.c (combine_split_insns): Strengthen return type and local
"ret" from rtx to rtx_insn *.
(likely_spilled_retval_p): Likewise for locals "use" and "p".
(try_combine): Eliminate local "m_split", splitting into new
locals "m_split_insn" and "m_split_pat".
(find_split_point): Strengthen local "seq" from rtx into
rtx_insn *.
* config/spu/spu.c (spu_machine_dependent_reorg): Likewise for
locals "label", "branch".
* config/spu/spu.md (define_expand "smulsi3_highpart"): Likewise
for local "insn".
(define_expand "umulsi3_highpart"): Likewise for local "insn".
* dse.c (note_add_store_info): Likewise for fields "first",
"current".
(note_add_store): Likewise for local "insn".
(emit_inc_dec_insn_before): Likewise for locals "insn",
"new_insn", "cur".
(find_shift_sequence): Likewise for locals "shift_seq", "insn".
(replace_read): Likewise for locals "insns", "this_insn".
* dwarf2cfi.c (dw_trace_info): Likewise for field "eh_head".
(notice_eh_throw): Likewise for param "insn".
(before_next_cfi_note): Likewise for return type, param, and local
"prev".
(connect_traces): Likewise for local "note".
* emit-rtl.c (reset_all_used_flags): Likewise for local "p".
(verify_rtl_sharing): Likewise.
(unshare_all_rtl_in_chain): Likewise for param "insn".
(get_first_nonnote_insn): Likewise for local "insn".
(get_last_nonnote_insn): Likewise.  Introduce local rtx_sequence *
"seq" and use its methods to clarify things.
(next_insn): Strengthen return type from rtx to rtx_insn *.
Rename param "insn" to "uncast_insn" and reintroduce "insn" as a
local rtx_insn * using a checked cast, dropping a checked cast
made redundant by this change.  Use a cast to and method of
rtx_sequence to clarify the code.
(previous_insn): Rename param "insn" to "uncast_insn" and
reintroduce "insn" as a local rtx_insn * using a checked cast,
dropping a checked cast made redundant by this change.  Use a cast
to and method of rtx_sequence to clarify the code.
(next_nonnote_insn): Rename param "insn" to "uncast_insn" and
reintroduce "insn" as a local rtx_insn * using a checked cast,
dropping a checked cast made redundant by this change.
(next_nonnote_insn_bb): Likewise.
(prev_nonnote_insn): Likewise.
(prev_nonnote_insn_bb): Likewise.
(next_nondebug_insn): Likewise.
(prev_nondebug_insn): Likewise.
(next_nonnote_nondebug_insn): Likewise.
(prev_nonnote_nondebug_insn): Likewise.
(next_real_insn): Likewise.
(prev_real_insn): Likewise.
(next_active_insn): Likewise.
(prev_active_insn): Likewise.
(next_cc0_user): Likewise.  Use rtx_sequence and a method for
clarity.
(prev_cc0_setter): Likewise.
(try_split): Rename param "trial" to "uncast_trial" and
reintroduce "insn" as a local rtx_insn * using a checked cast,
dropping checked casts made redundant by this change.
Strengthen locals "seq", "tem", "insn_last", "insn", "next" from
rtx to rtx_insn *.
(remove_insn): Rename param "insn" to "uncast_insn" and
reintroduce "insn" as a local rtx_insn * using a checked cast.
(emit_pattern_after_setloc): Likewise for param "after", as
"uncast_after".
(emit_pattern_after): Likewise.  Strengthen local "prev" from
rtx to rtx_insn *.
(emit_pattern_before_setloc): Rename param "before" to
"uncast_before" and reintroduce "before" as a local rtx_insn *
using a checked cast.  Strengthen locals "first", "last" from
rtx to rtx_insn *.
(emit_pattern_before): Likewise rename/cast param "before" to
"uncast_before". Strengthen local "next" from rtx to rtx_insn *.
* except.c (copy_reg_eh_region_note_forward): Strengthen param
"first" and local "insn" from rtx to rtx_insn *.
(copy_reg_eh_region_note_backward): Likewise for param "last"
and local "insn".
* expr.c (fixup_args_size_notes): Rename param "last" to
"uncast_last" and reintroduce "last" as a local rtx_insn *
using a checked cast.  Strengthen local "insn" from rtx to
rtx_insn *.
* function.c (set_insn_locations): Strengthen param "insn" from
rtx to rtx_insn *.
(record_insns): Likewise for param "insns" and local "tmp".
(active_insn_between): Rename param "tail" to
"uncast_tail" and reintroduce "tail" as a local rtx_insn *
using a checked cast.
(thread_prologue_and_epilogue_insns): Split out top-level local
rtx "seq" into three different rtx_insn * locals.  Strengthen
local "prologue_seq" from rtx to rtx_insn *.
* gcse.c (insert_insn_end_basic_block): Strenghen local "insn"
from rtx to rtx_insn *.
* haifa-sched.c (initiate_bb_reg_pressure_info): Likewise.
(priority): Likewise for locals "prev_first", "twin".
(setup_insn_max_reg_pressure): Likewise for param "after".
(sched_setup_bb_reg_pressure_info): Likewise.
(no_real_insns_p): Strengthen params from const_rtx to
const rtx_insn *.
(schedule_block): Strengthen local "next_tail" from rtx to
rtx_insn *.
* ifcvt.c (find_active_insn_before): Strengthen return type and
param "insn" from rtx to rtx_insn *.
(find_active_insn_after): Likewise.
(cond_exec_process_insns): Likewise for param "start" and local "insn".
(cond_exec_process_if_block): Likewise for locals "then_start",
"then_end", "else_start", "else_end", "insn", "start", "end", "from".
(noce_process_if_block): Likewise for local "jump".
(merge_if_block): Likewise for two locals named "end".
(cond_exec_find_if_block): Likewise for local "last_insn".
* jump.c (delete_related_insns): Rename param "insn" to
"uncast_insn" and reintroduce "insn" as a local rtx_insn * using a
checked cast.  Strengthen local "p" from rtx to rtx_insn *.
* lra-constraints.c (inherit_reload_reg): Replace NULL_RTX with
NULL.
(split_reg): Likewise.
* lra.c (lra_process_new_insns): Likewise.
* modulo-sched.c (permute_partial_schedule): Strengthen param
"last" from rtx to rtx_insn *.
* optabs.c (add_equal_note): Likewise for param "insns" and local
"last_insn".
(expand_binop_directly): Add checked casts to rtx_insn * within
NEXT_INSN (pat) uses.
(expand_unop_direct): Likewise.
(maybe_emit_unop_insn): Likewise.
* recog.c (peep2_attempt): Strengthen locals "last",
"before_try", "x" from rtx to rtx_insn *.
* reorg.c (optimize_skip): Strengthen return type and local
"delay_list" from rtx to rtx_insn_list *.  Strengthen param "insn"
and locals "trial", "next_trial" from rtx to rtx_insn *.
* resource.c (next_insn_no_annul): Strengthen return type and
param "insn" from rtx to rtx_insn *.  Use a cast to and method of
rtx_sequence to clarify the code.
(mark_referenced_resources): Add a checked cast to rtx_insn *
within PREV_INSN (x).
(find_dead_or_set_registers): Strengthen return type, param
"target", locals "insn", "next", "jump_insn", "this_jump_insn"
from rtx to rtx_insn *.  Strengthen param "jump_target" from rtx *
to rtx_insn **.
(mark_target_live_regs): Strengthen params "insns" and "target",
locals "insn", "jump_target", "start_insn", "stop_insn" from rtx
to rtx_insn *.  Use cast to and method of rtx_sequence to clarify
the code.
* resource.h (mark_target_live_regs): Strengthen params 1 and 2
from rtx to rtx_insn *.
* rtl.h (copy_reg_eh_region_note_forward): Strengthen second param
from rtx to rtx_insn *.
(copy_reg_eh_region_note_backward): Likewise.
(unshare_all_rtl_in_chain): Likewise for sole param.
(dump_rtl_slim): Strengthen second and third params from const_rtx
to const rtx_insn *.
* sched-deps.c (sched_free_deps): Strengthen params "head" and
"tail" and locals "insn", "next_tail" from rtx to rtx_insn *.
* sched-ebb.c (init_ready_list): Strengthen locals "prev_head",
"next_tail" from rtx to rtx_insn *.
(begin_move_insn): Likewise for local "next".
* sched-int.h (sched_free_deps): Likewise for first and second
params.
(no_real_insns_p): Strengthen both params from const_rtx to
const rtx_insn *.
(sched_setup_bb_reg_pressure_info): Strengthen second params from
rtx to rtx_insn *.
* sched-rgn.c (init_ready_list): Likewise for locals "prev_head",
"next_tail".
* sched-vis.c (dump_rtl_slim): Strengthen params "first", "last"
and locals "insn", "tail" from const_rtx to const rtx_insn *.
(rtl_dump_bb_for_graph): Strengthen local "insn" from rtx to
rtx_insn *.
(debug_rtl_slim): Strengthen params "first" and "last" from
const_rtx to const rtx_insn *.
* shrink-wrap.c (try_shrink_wrapping): Strengthen param
"prologue_seq" and locals "seq", "p_insn" from rtx to rtx_insn *.
(convert_to_simple_return): Likewise for param "returnjump".
* shrink-wrap.h (try_shrink_wrapping): Likewise for param
"prologue_seq".
(convert_to_simple_return): Likewise for param "returnjump".
* valtrack.c (propagate_for_debug): Likewise for params
"insn", "last".
* valtrack.h (propagate_for_debug): Likewise for second param.

From-SVN: r214693

10 years agoinsn_current_reference_address takes an rtx_insn
David Malcolm [Thu, 28 Aug 2014 20:37:15 +0000 (20:37 +0000)]
insn_current_reference_address takes an rtx_insn

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* output.h (insn_current_reference_address): Strengthen param
from rtx to rtx_insn *.
* final.c (insn_current_reference_address): Likewise.

From-SVN: r214692

10 years agoinside_basic_block_p requires a const rtx_insn *
David Malcolm [Thu, 28 Aug 2014 20:35:42 +0000 (20:35 +0000)]
inside_basic_block_p requires a const rtx_insn *

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* basic-block.h (inside_basic_block_p): Strengthen param from
const_rtx to const rtx_insn *.
* cfgbuild.c (inside_basic_block_p): Likewise.

From-SVN: r214691

10 years agoUse rtx_insn in more places in dwarf2cfi.c
David Malcolm [Thu, 28 Aug 2014 19:08:12 +0000 (19:08 +0000)]
Use rtx_insn in more places in dwarf2cfi.c

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* dwarf2cfi.c (dw_trace_info): Strengthen field "head" from rtx to
rtx_insn *.
(get_trace_info): Likewise for param "insn".
(save_point_p): Likewise.
(maybe_record_trace_start): Likewise for both params.
(maybe_record_trace_start_abnormal): Likewise.
(create_trace_edges): Likewise for sole param and for three of the
locals named "lab".
(scan_trace): Strengthen local "prev", "insn", "control" from rtx
to rtx_insn *, and update a call to pat->element to pat->insn.

From-SVN: r214689

10 years agoConvert forced_labels from an EXPR_LIST to an INSN_LIST
David Malcolm [Thu, 28 Aug 2014 19:05:44 +0000 (19:05 +0000)]
Convert forced_labels from an EXPR_LIST to an INSN_LIST

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* function.h (struct expr_status): Convert field "x_forced_labels"
from rtx_expr_list * to rtx_insn_list *.

* cfgbuild.c (make_edges): Convert local "x" from an
rtx_expr_list * to an rtx_insn_list *, replacing use of
"element" method with "insn" method.
* dwarf2cfi.c (create_trace_edges): Likewise for local "lab".
* except.c (sjlj_emit_dispatch_table): Replace use of
gen_rtx_EXPR_LIST with gen_rtx_INSN_LIST when prepending to
forced_labels.
* jump.c (rebuild_jump_labels_1): Convert local "insn" from an
rtx_expr_list * to an rtx_insn_list *, replacing use of
"element" method with "insn" method.
* reload1.c (set_initial_label_offsets): Likewise for local "x".
* stmt.c (label_rtx): Strengthen local "ref" from rtx to
rtx_insn *, adding a checked cast.  Replace use of
gen_rtx_EXPR_LIST with gen_rtx_INSN_LIST when prepending it to
forced_labels.
(expand_label): Likewise for local "label_r".

From-SVN: r214688

10 years agoConvert nonlocal_goto_handler_labels from an EXPR_LIST to an INSN_LIST
David Malcolm [Thu, 28 Aug 2014 19:03:22 +0000 (19:03 +0000)]
Convert nonlocal_goto_handler_labels from an EXPR_LIST to an INSN_LIST

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* function.h (struct rtl_data): Convert field
"x_nonlocal_goto_handler_labels" from rtx_expr_list * to
rtx_insn_list *.
* rtl.h (remove_node_from_insn_list): New prototype.

* builtins.c (expand_builtin): When prepending to
nonlocal_goto_handler_labels, use gen_rtx_INSN_LIST rather than
gen_rtx_EXPR_LIST.
* cfgbuild.c (make_edges): Convert local "x" from rtx_expr_list *
to rtx_insn_list *, and use its "insn" method rather than
"element" method.
* cfgrtl.c (delete_insn): Use new function
remove_node_from_insn_list rather than
remove_node_from_expr_list.
(cfg_layout_initialize): Convert local "x" from rtx_expr_list *
to rtx_insn_list *, and use its "insn" method rather than
"element" method.
* dwarf2cfi.c (create_trace_edges): Likewise for local "lab".
* reload1.c (set_initial_label_offsets): Likewise for local "x".
* rtlanal.c (remove_node_from_insn_list): New function, adapted
from remove_node_from_expr_list.
* stmt.c (expand_label): When prepending to
nonlocal_goto_handler_labels, use gen_rtx_INSN_LIST rather than
gen_rtx_EXPR_LIST.

From-SVN: r214687

10 years agoStrengthen return_label and naked_return_label to rtx_code_label *
David Malcolm [Thu, 28 Aug 2014 19:01:18 +0000 (19:01 +0000)]
Strengthen return_label and naked_return_label to rtx_code_label *

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* function.h (struct rtl_data): Strengthen fields "x_return_label"
and "x_naked_return_label" from rtx to rtx_code_label *.

From-SVN: r214686

10 years agoMake SET_NEXT_INSN/SET_PREV_INSN require an rtx_insn
David Malcolm [Thu, 28 Aug 2014 18:59:13 +0000 (18:59 +0000)]
Make SET_NEXT_INSN/SET_PREV_INSN require an rtx_insn

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* rtl.h (SET_PREV_INSN): Strengthen param from rtx to rtx_insn *.
(SET_NEXT_INSN): Likewise.
(gen_rtvec_v): Add an overload for param types (int, rtx_insn **).

* config/c6x/c6x.c (gen_one_bundle): Strengthen param "slot" from
rtx * to rtx_insn **.  Introduce a new local rtx "seq", using it
to split out the SEQUENCE from local "bundle", strengthening the
latter from rtx to rtx_insn * to hold the insn holding the SEQUENCE.
Strengthen locals "t" and "insn" from rtx to rtx_insn *.
(c6x_gen_bundles): Strengthen locals "insn", "next", "last_call"
and the type of the elements of the "slot" array from rtx to
rtx_insn *.
(reorg_split_calls): Likewise for locals "insn" and "next", and
the type of the elements of the "slot" array.

* config/frv/frv.c (frv_nops): Likewise for the elements of this
array.
(frv_function_prologue): Likewise for locals "insn", "next",
"last_call".
(frv_register_nop): Introduce a local "nop_insn" to be the
rtx_insn * containing rtx "nop".

* config/mep/mep.c (mep_make_bundle): Param "core" is sometimes
used as an insn and sometimes as a pattern, so rename it to
"core_insn_or_pat", and introduce local rtx_insn * "core_insn",
using it where dealing with the core insn.

* config/picochip/picochip.c (reorder_var_tracking_notes):
Strengthen locals "insn", "next", "last_insn", "queue",
"next_queue", "prev" from rtx to rtx_insn *.

* emit-rtl.c (gen_rtvec_v): Add overloaded implementation for when
the second param is an rtx_insn ** rather than an rtx **.
(link_insn_into_chain): Strengthen locals "seq" and "sequence"
from rtx to rtx_sequence *, and introduce local named "sequence",
using methods of rtx_sequence to clarify the code.
(remove_insn): Introduce local rtx_sequence * named "sequence" and
use its methods.
(emit_insn_after_1): Strengthen return type from rtx to rtx_insn *.
Rename param "after" to "uncast_after", reintroducing "after" as a
local rtx_insn * with a checked cast.
(emit_pattern_after_noloc): Rename param "after" to "uncast_after",
reintroducing "after" as a local rtx_insn * with a checked cast.
Strengthen local "last" from rtx to rtx_insn * and remove the
now-redundant checked casts.
(copy_delay_slot_insn): Strengthen return type and param from rtx
to rtx_insn *.

* haifa-sched.c (reemit_notes): Strengthen params "insn" and
"last" from rtx to rtx_insn *.

From-SVN: r214685

10 years agoUse rtx subclasses in more places in reorg.c
David Malcolm [Thu, 28 Aug 2014 18:48:00 +0000 (18:48 +0000)]
Use rtx subclasses in more places in reorg.c

gcc/
2014-08-28  David Malcolm  <dmalcolm@redhat.com>

* emit-rtl.h (copy_delay_slot_insn): Strengthen return type and
param from rtx to rtx_insn *.

* emit-rtl.c (copy_delay_slot_insn): Likewise.

* reorg.c (skip_consecutive_labels): Strengthen return type, param
and local "insn" from rtx to rtx_insn *.
(unfilled_slots_base): Strengthen type from rtx * to rtx_insn **.
(unfilled_slots_next): Likewise.
(function_return_label): Strengthen from rtx to rtx_code_label *.
(function_simple_return_label): Likewise.
(first_active_target_insn): Strengthen return type and param from
rtx to rtx_insn *.
(find_end_label): Strengthen return type from rtx to
rtx_code_label *; strengthen locals as appropriate.
(emit_delay_sequence): Strengthen return type, param "insn" and
local "seq_insn" from rtx to rtx_insn *.  Strengthen param "list"
and local "li" from rtx to rtx_insn_list *, using methods of
rtx_insn_list for clarity and typesafety.
(add_to_delay_list): Strengthen return type and param "insn" from
rtx to rtx_insn *.  Strengthen param "delay_list" from rtx to
rtx_insn_list * and use methods of rtx_insn_list.
(delete_from_delay_slot): Strengthen return type, param "insn",
locals "trial", "seq_insn", "prev" from rtx to rtx_insn *.
Strengthen local "seq" from rtx to rtx_sequence *, and local
"delay_list" from rtx to rtx_insn_list *, using methods of
rtx_sequence for clarity and type-safety.
(delete_scheduled_jump): Add checked cast when invoking
delete_from_delay_slot.  Strengthen local "trial" from rtx to
rtx_insn *.
(optimize_skip): Strengthen return type and local "delay_list"
from rtx to rtx_insn_list *.  Strengthen local "trial" from rtx to
rtx_insn *.
(steal_delay_list_from_target): Strengthen return type, param
"delay_list" and local "new_delay_list" from rtx to
rtx_insn_list *.  Strengthen param "seq" from rtx to
rtx_sequence *.  Strengthen param "pnew_thread" from rtx * to
rtx_insn **.
Split out local "temp" into multiple more-tightly scoped locals:
sometimes an rtx_insn_list *, and once a rtx_insn *.  Use methods
of rtx_insn_list and rtx_sequence for clarity and typesafety.
Strengthen locals named "trial" from rtx to rtx_insn *.
(steal_delay_list_from_fallthrough): Strengthen return type and
param "delay_list" from rtx to rtx_insn_list *.  Strengthen param
"seq" from rtx to rtx_sequence *.  Use methods of rtx_sequence.
Strengthen local "trial" from rtx to rtx_insn *.
(try_merge_delay_insns): Strength local "merged_insns" from rtx
to rtx_insn_list * and use its methods.  Strengthen local "pat"
from rtx to rtx_sequence * and use its methods.  Strengthen locals
"dtrial" and "new_rtx" from rtx to rtx_insn *.
(get_label_before): Strengthen return type and local "label" from
rtx to rtx_insn *.
(fill_simple_delay_slots): Likewise for locals "insn", "trial",
"next_trial", "next", prev".  Strengthen local "delay_list" from
rtx to rtx_insn_list *  Strengthen local "tmp" from rtx * to
rtx_insn **.
(follow_jumps): Strengthen return type, param "label" and locals
"insn", "next", "value", "this_label" from rtx to rtx_insn *.
(fill_slots_from_thread): Strengthen return type, param
"delay_list" from rtx to rtx_insn_list *.  Strengthen params
"insn", "thread", "opposite_thread" and locals "new_thread",
"trial", "temp", "ninsn" from rtx to rtx_insn *.  Introduce local
"sequence" from a checked cast to rtx_sequence so that we can call
steal_delay_list_from_target and steal_delay_list_from_fallthrough
with an rtx_sequence *.
(fill_eager_delay_slots): Strengthen locals "insn", "target_label",
"insn_at_target", "fallthrough_insn" from rtx to rtx_insn *.
Strengthen local "delay_list" from rtx to rtx_insn_list *.
(relax_delay_slots): Strengthen param "first" and locals "insn",
"next", "trial", "delay_insn", "target_label" from rtx to
rtx_insn *.  Strengthen local "pat" from rtx to rtx_sequence *.
Introduce a local "trial_seq" for PATTERN (trial) of type
rtx_sequence *, in both cases using methods of rtx_sequence.
(dbr_schedule): Strengthen param "first" and locals "insn",
"next", "epilogue_insn" from rtx to rtx_insn *.

From-SVN: r214684

10 years agocheck functionality of isl version 0.12
Sebastian Pop [Thu, 28 Aug 2014 16:43:55 +0000 (16:43 +0000)]
check functionality of isl version 0.12

* config/isl.m4 (_ISL_CHECK_CT_PROG): Removed.
(ISL_CHECK_VERSION): Check for functionality added to ISL 0.12 instead
of checking for version number.
* configure: Regenerated.
* configure.ac (ISL_CHECK_VERSION): Do not use ISL version number.

From-SVN: r214683

10 years ago*: Fix incorrect standard references in comments.
Jonathan Wakely [Thu, 28 Aug 2014 15:46:02 +0000 (16:46 +0100)]
*: Fix incorrect standard references in comments.

* testsuite/ext/random/*: Fix incorrect standard references in
comments.

From-SVN: r214681

10 years agore PR fortran/62283 (basic-block vectorization fails)
Richard Biener [Thu, 28 Aug 2014 13:13:45 +0000 (13:13 +0000)]
re PR fortran/62283 (basic-block vectorization fails)

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

10 years agotree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter important_candidates.
Bin Cheng [Thu, 28 Aug 2014 08:03:18 +0000 (08:03 +0000)]
tree-ssa-loop-ivopts.c (iv_ca_add_use): Delete parameter important_candidates.

* 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

10 years agopr62089.c: Fix test on 32-bit platforms.
Yury Gribov [Thu, 28 Aug 2014 06:43:51 +0000 (06:43 +0000)]
pr62089.c: Fix test on 32-bit platforms.

2014-08-28  Yury Gribov  <y.gribov@samsung.com>

* c-c++-common/asan/pr62089.c: Fix test on 32-bit platforms.

From-SVN: r214673

10 years agoAVX-512. Add byte/word plus/minus/avg.
Alexander Ivchenko [Thu, 28 Aug 2014 06:37:12 +0000 (06:37 +0000)]
AVX-512. Add byte/word plus/minus/avg.

gcc/
(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.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r214672

10 years agoAVX-512. Support 512-bit/masked interleave.
Alexander Ivchenko [Thu, 28 Aug 2014 06:35:36 +0000 (06:35 +0000)]
AVX-512. Support 512-bit/masked interleave.

gcc/
* 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.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r214671

10 years agoAVX-512. Add vps[rl]ldq insn patterns.
Alexander Ivchenko [Thu, 28 Aug 2014 06:34:06 +0000 (06:34 +0000)]
AVX-512. Add vps[rl]ldq insn patterns.

gcc/
* 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.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r214670

10 years agoAVX-512. Add integer max/min.
Alexander Ivchenko [Thu, 28 Aug 2014 06:30:27 +0000 (06:30 +0000)]
AVX-512. Add integer max/min.

gcc/
* config/i386/sse.md
(define_mode_iterator VI128_256): New.
(define_insn "<mask_codefor><code><mode>3<mask_name>"): Ditto.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r214669

10 years agoAVX-512. Add vcvtps2[u]qq patterns.
Alexander Ivchenko [Thu, 28 Aug 2014 06:28:56 +0000 (06:28 +0000)]
AVX-512. Add vcvtps2[u]qq patterns.

gcc/
* 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.

Co-Authored-By: Andrey Turetskiy <andrey.turetskiy@intel.com>
Co-Authored-By: Anna Tikhonova <anna.tikhonova@intel.com>
Co-Authored-By: Ilya Tocar <ilya.tocar@intel.com>
Co-Authored-By: Ilya Verbin <ilya.verbin@intel.com>
Co-Authored-By: Kirill Yukhin <kirill.yukhin@intel.com>
Co-Authored-By: Maxim Kuznetsov <maxim.kuznetsov@intel.com>
Co-Authored-By: Michael Zolotukhin <michael.v.zolotukhin@intel.com>
From-SVN: r214668

10 years agovarasm.c (compute_reloc_for_rtx_1): Take a const_rtx.
Richard Sandiford [Thu, 28 Aug 2014 06:25:18 +0000 (06:25 +0000)]
varasm.c (compute_reloc_for_rtx_1): Take a const_rtx.

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

10 years agovarasm.c (mark_constant): Replace this for_each_rtx callback with...
Richard Sandiford [Thu, 28 Aug 2014 06:25:14 +0000 (06:25 +0000)]
varasm.c (mark_constant): Replace this for_each_rtx callback with...

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

10 years agovarasm.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:25:10 +0000 (06:25 +0000)]
varasm.c: Include rtl-iter.h.

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

10 years agovar-tracking.c (add_uses): Take an rtx rather than an rtx *.
Richard Sandiford [Thu, 28 Aug 2014 06:25:05 +0000 (06:25 +0000)]
var-tracking.c (add_uses): Take an rtx rather than an rtx *.

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

10 years agovar-tracking.c (use_narrower_mode_test): Turn from being a for_each_rtx callback...
Richard Sandiford [Thu, 28 Aug 2014 06:25:01 +0000 (06:25 +0000)]
var-tracking.c (use_narrower_mode_test): Turn from being a for_each_rtx callback to being a function that examines each...

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

10 years agovar-tracking.c (non_suitable_const): Turn from being a for_each_rtx callback to being...
Richard Sandiford [Thu, 28 Aug 2014 06:24:57 +0000 (06:24 +0000)]
var-tracking.c (non_suitable_const): Turn from being a for_each_rtx callback to being a function that examines each...

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

10 years agovar-tracking.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:24:53 +0000 (06:24 +0000)]
var-tracking.c: Include rtl-iter.h.

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

10 years agostore-motion.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:24:48 +0000 (06:24 +0000)]
store-motion.c: Include rtl-iter.h.

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

10 years agosel-sched.c: Include rtl-iter.h
Richard Sandiford [Thu, 28 Aug 2014 06:24:44 +0000 (06:24 +0000)]
sel-sched.c: Include rtl-iter.h

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

10 years agortl.h (tls_referenced_p): Take a const_rtx rather than an rtx.
Richard Sandiford [Thu, 28 Aug 2014 06:24:40 +0000 (06:24 +0000)]
rtl.h (tls_referenced_p): Take a const_rtx rather than an rtx.

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

10 years agortl.h (for_each_inc_dec_fn): Remove special case for -1.
Richard Sandiford [Thu, 28 Aug 2014 06:24:36 +0000 (06:24 +0000)]
rtl.h (for_each_inc_dec_fn): Remove special case for -1.

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

10 years agortl.h (find_all_hard_regs): Declare.
Richard Sandiford [Thu, 28 Aug 2014 06:24:32 +0000 (06:24 +0000)]
rtl.h (find_all_hard_regs): Declare.

gcc/
* 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.

From-SVN: r214656

10 years agortl.h (replace_label_data): Delete.
Richard Sandiford [Thu, 28 Aug 2014 06:24:27 +0000 (06:24 +0000)]
rtl.h (replace_label_data): Delete.

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

10 years agortl.h (get_pool_constant, [...]): Replace rtx parameters with const_rtx parameters.
Richard Sandiford [Thu, 28 Aug 2014 06:24:23 +0000 (06:24 +0000)]
rtl.h (get_pool_constant, [...]): Replace rtx parameters with const_rtx parameters.

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

10 years agoreload1.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:24:16 +0000 (06:24 +0000)]
reload1.c: Include rtl-iter.h.

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

10 years agoregcprop.c (cprop_find_used_regs_1): Delete.
Richard Sandiford [Thu, 28 Aug 2014 06:24:12 +0000 (06:24 +0000)]
regcprop.c (cprop_find_used_regs_1): Delete.

gcc/
* regcprop.c (cprop_find_used_regs_1): Delete.
(cprop_find_used_regs): Use FOR_EACH_SUBRTX instead of for_each_rtx.

From-SVN: r214652

10 years agoregcprop.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:24:08 +0000 (06:24 +0000)]
regcprop.c: Include rtl-iter.h.

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

10 years agoreg-stack.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:24:03 +0000 (06:24 +0000)]
reg-stack.c: Include rtl-iter.h.

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

10 years agolower-subreg.c (find_decomposable_subregs): Turn from being a for_each_rtx callback...
Richard Sandiford [Thu, 28 Aug 2014 06:23:58 +0000 (06:23 +0000)]
lower-subreg.c (find_decomposable_subregs): Turn from being a for_each_rtx callback to being a function that examines each...

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

10 years agolower-subreg.c (adjust_decomposed_uses): Delete.
Richard Sandiford [Thu, 28 Aug 2014 06:23:55 +0000 (06:23 +0000)]
lower-subreg.c (adjust_decomposed_uses): Delete.

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

10 years agolower-subreg.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:51 +0000 (06:23 +0000)]
lower-subreg.c: Include rtl-iter.h.

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

10 years agoloop-iv.c (altered_reg_used): Turn from being a for_each_rtx callback to being a...
Richard Sandiford [Thu, 28 Aug 2014 06:23:47 +0000 (06:23 +0000)]
loop-iv.c (altered_reg_used): Turn from being a for_each_rtx callback to being a function that examines each...

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

10 years agoloop-iv.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:42 +0000 (06:23 +0000)]
loop-iv.c: Include rtl-iter.h.

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

10 years agojump.c (eh_returnjump_p_1): Delete.
Richard Sandiford [Thu, 28 Aug 2014 06:23:39 +0000 (06:23 +0000)]
jump.c (eh_returnjump_p_1): Delete.

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

10 years agojump.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:34 +0000 (06:23 +0000)]
jump.c: Include rtl-iter.h.

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

10 years agoira.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:31 +0000 (06:23 +0000)]
ira.c: Include rtl-iter.h.

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

10 years agofwprop.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:26 +0000 (06:23 +0000)]
fwprop.c: Include rtl-iter.h.

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

10 years agofunction.c: Include rtl-iter.h
Richard Sandiford [Thu, 28 Aug 2014 06:23:22 +0000 (06:23 +0000)]
function.c: Include rtl-iter.h

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

10 years agofinal.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:18 +0000 (06:23 +0000)]
final.c: Include rtl-iter.h.

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

10 years agoemit-rtl.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:13 +0000 (06:23 +0000)]
emit-rtl.c: Include rtl-iter.h.

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

10 years agodwarf2out.c (resolve_one_addr): Remove unused data parameter.
Richard Sandiford [Thu, 28 Aug 2014 06:23:09 +0000 (06:23 +0000)]
dwarf2out.c (resolve_one_addr): Remove unused data parameter.

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

10 years agodwarf2out.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:04 +0000 (06:23 +0000)]
dwarf2out.c: Include rtl-iter.h.

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

10 years agodse.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:23:00 +0000 (06:23 +0000)]
dse.c: Include rtl-iter.h.

gcc/
* 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.

From-SVN: r214635

10 years agodf-problems.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:22:56 +0000 (06:22 +0000)]
df-problems.c: Include rtl-iter.h.

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

10 years agoddg.c (walk_mems_2, [...]): Delete.
Richard Sandiford [Thu, 28 Aug 2014 06:22:51 +0000 (06:22 +0000)]
ddg.c (walk_mems_2, [...]): Delete.

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

10 years agoddg.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:22:46 +0000 (06:22 +0000)]
ddg.c: Include rtl-iter.h.

gcc/
* 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.

From-SVN: r214632

10 years agocse.c (change_cc_mode_args): Delete.
Richard Sandiford [Thu, 28 Aug 2014 06:22:42 +0000 (06:22 +0000)]
cse.c (change_cc_mode_args): Delete.

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

10 years agocse.c (is_dead_reg): Change argument to const_rtx.
Richard Sandiford [Thu, 28 Aug 2014 06:22:38 +0000 (06:22 +0000)]
cse.c (is_dead_reg): Change argument to const_rtx.

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

10 years agocse.c (check_for_label_ref): Move earlier in file.
Richard Sandiford [Thu, 28 Aug 2014 06:22:33 +0000 (06:22 +0000)]
cse.c (check_for_label_ref): Move earlier in file.

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

10 years agocse.c (check_dependence_data): Delete.
Richard Sandiford [Thu, 28 Aug 2014 06:22:29 +0000 (06:22 +0000)]
cse.c (check_dependence_data): Delete.

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

10 years agocse.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:22:24 +0000 (06:22 +0000)]
cse.c: Include rtl-iter.h.

gcc/
* 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.

From-SVN: r214627

10 years agocfgcleanup.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:22:20 +0000 (06:22 +0000)]
cfgcleanup.c: Include rtl-iter.h.

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

10 years agocombine-stack-adj.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:22:16 +0000 (06:22 +0000)]
combine-stack-adj.c: Include rtl-iter.h.

gcc/
* 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.

From-SVN: r214625

10 years agocombine.c (record_truncated_value): Turn from being a for_each_rtx callback to a...
Richard Sandiford [Thu, 28 Aug 2014 06:22:12 +0000 (06:22 +0000)]
combine.c (record_truncated_value): Turn from being a for_each_rtx callback to a function that takes an rtx and...

gcc/
* 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.

From-SVN: r214624

10 years agocombine.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:22:07 +0000 (06:22 +0000)]
combine.c: Include rtl-iter.h.

gcc/
* 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.

From-SVN: r214623

10 years agocalls.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:21:59 +0000 (06:21 +0000)]
calls.c: Include rtl-iter.h.

gcc/
* 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.

From-SVN: r214622

10 years agocaller-save.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:21:54 +0000 (06:21 +0000)]
caller-save.c: Include rtl-iter.h.

gcc/
* 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.

From-SVN: r214621

10 years agobt-load.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:21:50 +0000 (06:21 +0000)]
bt-load.c: Include rtl-iter.h.

gcc/
* 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.

From-SVN: r214620

10 years agoalias.c: Include rtl-iter.h.
Richard Sandiford [Thu, 28 Aug 2014 06:21:44 +0000 (06:21 +0000)]
alias.c: Include rtl-iter.h.

gcc/
* alias.c: Include rtl-iter.h.
(refs_newer_value_cb): Delete.
(refs_newer_value_p): Use FOR_EACH_SUBRTX instead of for_each_rtx.

From-SVN: r214619

10 years agortl-iter.h: New file.
Richard Sandiford [Thu, 28 Aug 2014 06:20:12 +0000 (06:20 +0000)]
rtl-iter.h: New file.

gcc/
* 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.

From-SVN: r214618

10 years agoPR cpp/23827 - standard C++ should not have hex float preprocessor
Edward Smith-Rowland [Thu, 28 Aug 2014 02:38:24 +0000 (02:38 +0000)]
PR cpp/23827 - standard C++ should not have hex float preprocessor

libcpp/

2014-08-27  Edward Smith-Rowland  <3dw4rd@verizon.net>

PR cpp/23827 - standard C++ should not have hex float preprocessor
tokens
* libcpp/init.c (lang_flags): Change CXX98 flag for extended numbers
from 1 to 0.
* libcpp/expr.c (cpp_classify_number): Weite error message for improper
use of hex floating literal.

gcc/testsuite/

2014-08-27  Edward Smith-Rowland  <3dw4rd@verizon.net>

PR cpp/23827 - standard C++ should not have hex float preprocessor
tokens
* g++.dg/cpp/pr23827_cxx11.C: New.
* g++.dg/cpp/pr23827_cxx98.C: New.
* g++.dg/cpp/pr23827_cxx98_neg.C: New.
* gcc.dg/cpp/pr23827_c90.c: New.
* gcc.dg/cpp/pr23827_c90_neg.c: New.
* gcc.dg/cpp/pr23827_c99.c: New.

From-SVN: r214616

10 years agoDaily bump.
GCC Administrator [Thu, 28 Aug 2014 00:16:44 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r214615

10 years agore PR target/62261 ([sh64] ICE for negative shift counts)
Kaz Kojima [Wed, 27 Aug 2014 23:25:14 +0000 (23:25 +0000)]
re PR target/62261 ([sh64] ICE for negative shift counts)

        PR target/62261
        * config/sh/sh.md (ashlsi3): Handle negative shift count for
TARGET_SHMEDIA.
(ashldi3, ashrsi3, ashrdi3, lshrsi3, lshrdi3): Likewise.

From-SVN: r214612

10 years agoemit-rtl.c (set_unique_reg_note): Discard notes with side effects.
Richard Sandiford [Wed, 27 Aug 2014 21:23:03 +0000 (21:23 +0000)]
emit-rtl.c (set_unique_reg_note): Discard notes with side effects.

gcc/
* emit-rtl.c (set_unique_reg_note): Discard notes with side effects.

From-SVN: r214609

10 years agoc-aux-info.c (gen_type): Resize 'buff' from 10 to 23 bytes...
Chen Gang [Wed, 27 Aug 2014 21:19:54 +0000 (21:19 +0000)]
c-aux-info.c (gen_type): Resize 'buff' from 10 to 23 bytes...

2014-08-27  Chen Gang  <gang.chen.5i5j@gmail.com>

* c-aux-info.c (gen_type): Resize 'buff' from 10 to 23 bytes,
with using HOST_WIDE_INT without truncation to 'int'

From-SVN: r214608

10 years agoAdd JUMP_LABEL_AS_INSN
David Malcolm [Wed, 27 Aug 2014 20:44:45 +0000 (20:44 +0000)]
Add JUMP_LABEL_AS_INSN

gcc/
2014-08-27  David Malcolm  <dmalcolm@redhat.com>

* rtl.h (JUMP_LABEL_AS_INSN): New.

From-SVN: r214607

10 years agoPHASE 6: Use extra rtx_def subclasses
David Malcolm [Wed, 27 Aug 2014 20:42:06 +0000 (20:42 +0000)]
PHASE 6: Use extra rtx_def subclasses

/
2014-08-27  David Malcolm  <dmalcolm@redhat.com>

* rtx-classes-status.txt: Phase 5 (additional rtx_def subclasses)
is done; begin phase 6 (use extra rtx_def subclasses).

From-SVN: r214606

10 years agoUse rtx_expr_list in various places
David Malcolm [Wed, 27 Aug 2014 20:40:05 +0000 (20:40 +0000)]
Use rtx_expr_list in various places

gcc/
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.

From-SVN: r214605

10 years agortl_data.x_stack_slot_list becomes an rtx_expr_list
David Malcolm [Wed, 27 Aug 2014 20:38:06 +0000 (20:38 +0000)]
rtl_data.x_stack_slot_list becomes an rtx_expr_list

gcc/
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.

From-SVN: r214604

10 years agortl_data.x_nonlocal_goto_handler_labels becomes an rtx_expr_list
David Malcolm [Wed, 27 Aug 2014 20:35:53 +0000 (20:35 +0000)]
rtl_data.x_nonlocal_goto_handler_labels becomes an rtx_expr_list

gcc/
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.

From-SVN: r214603

10 years agoUse rtx_expr_list for expr_status.x_forced_labels
David Malcolm [Wed, 27 Aug 2014 20:33:38 +0000 (20:33 +0000)]
Use rtx_expr_list for expr_status.x_forced_labels

gcc/
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.

From-SVN: r214602

10 years agoIntroduce rtx_expr_list subclass of rtx_def
David Malcolm [Wed, 27 Aug 2014 20:30:51 +0000 (20:30 +0000)]
Introduce rtx_expr_list subclass of rtx_def

gcc/
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.

From-SVN: r214601

10 years agovarasm.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 20:28:31 +0000 (20:28 +0000)]
varasm.c: Use rtx_sequence

gcc/
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.

From-SVN: r214600

10 years agosched-vis.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 20:26:27 +0000 (20:26 +0000)]
sched-vis.c: Use rtx_sequence

gcc/
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.

From-SVN: r214599

10 years agoresource.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 20:24:41 +0000 (20:24 +0000)]
resource.c: Use rtx_sequence

gcc/
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.

From-SVN: r214598

10 years agoreorg.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 20:21:56 +0000 (20:21 +0000)]
reorg.c: Use rtx_sequence

gcc/
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.

From-SVN: r214597

10 years agojump.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 20:08:32 +0000 (20:08 +0000)]
jump.c: Use rtx_sequence

gcc/
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.

From-SVN: r214596

10 years agofunction.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 20:06:47 +0000 (20:06 +0000)]
function.c: Use rtx_sequence

gcc/
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.

From-SVN: r214595

10 years agofinal.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 20:04:14 +0000 (20:04 +0000)]
final.c: Use rtx_sequence

gcc/
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.

From-SVN: r214594

10 years agoexcept.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 20:01:32 +0000 (20:01 +0000)]
except.c: Use rtx_sequence

gcc/
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.

From-SVN: r214593

10 years agodwarf2cfi.c: Use rtx_sequence
David Malcolm [Wed, 27 Aug 2014 19:59:57 +0000 (19:59 +0000)]
dwarf2cfi.c: Use rtx_sequence

gcc/
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".

From-SVN: r214592

10 years agoIntroduce rtx_sequence subclass of rtx_def
David Malcolm [Wed, 27 Aug 2014 19:56:45 +0000 (19:56 +0000)]
Introduce rtx_sequence subclass of rtx_def

gcc/
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.

From-SVN: r214591

10 years agoUse rtx_insn_list in various places
David Malcolm [Wed, 27 Aug 2014 19:53:39 +0000 (19:53 +0000)]
Use rtx_insn_list in various places

gcc/
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 *.

From-SVN: r214590

10 years agoIntroduce rtx_insn_list subclass of rtx_def
David Malcolm [Wed, 27 Aug 2014 19:49:43 +0000 (19:49 +0000)]
Introduce rtx_insn_list subclass of rtx_def

gcc/
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.

From-SVN: r214589

10 years agoPHASE 5: Additional rtx subclasses
David Malcolm [Wed, 27 Aug 2014 19:46:46 +0000 (19:46 +0000)]
PHASE 5: Additional rtx subclasses

2014-08-27  David Malcolm  <dmalcolm@redhat.com>

* rtx-classes-status.txt: Phase 4 (removal of "scaffolding") is
done; begin phase 5 (additional rtx_def subclasses).

From-SVN: r214588

10 years agoTweak to ira-lives.c
David Malcolm [Wed, 27 Aug 2014 19:43:12 +0000 (19:43 +0000)]
Tweak to ira-lives.c

gcc/
2014-08-27  David Malcolm  <dmalcolm@redhat.com>

* ira-lives.c (find_call_crossed_cheap_reg): Strengthen local
"prev" from rtx to rtx_insn *.

From-SVN: r214587