PR tree-optimization/62091
	* g++.dg/ipa/devirt-37.C: Update template.
	* g++.dg/ipa/devirt-40.C: New testcase.
	* ipa-devirt.c (ipa_polymorphic_call_context::restrict_to_inner_type):
	handle correctly arrays.
	(extr_type_from_vtbl_ptr_store): Add debug output; handle multiple
	inheritance binfos.
	(record_known_type): Walk into inner type.
	(ipa_polymorphic_call_context::get_dynamic_type): Likewise; strenghten
	condition on no type changes.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214271 138bc75d-0d04-0410-961f-82ee72b054a4
define_bypass guard functions take a pair of rtx_insn

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

	* genautomata.c (output_internal_insn_latency_func): When writing
	the function "internal_insn_latency" to insn-automata.c,
	strengthen params "insn" and "insn2" from rtx to rtx_insn *, thus
	allowing the optional guard function of (define_bypass) clauses to
	expect a pair of rtx_insn *, rather than a pair of rtx.
	(output_insn_latency_func): When writing the function
	"insn_latency", add an "uncast_" prefix to params "insn" and
	"insn2", reintroducing "insn" and "insn2" as rtx_insn * locals
	using checked casts from the params, thus enabling the above
	change to the generated "internal_insn_latency" function.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214273 138bc75d-0d04-0410-961f-82ee72b054a4
2014-08-21  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/testsuite/
	* lib/target-supports.exp
	(check_effective_target_logical_op_short_circuit): Add nios2.
	* gcc.dg/tree-ssa/reassoc-33.c: Skip for nios2.
	* gcc.dg/tree-ssa/reassoc-34.c: Likewise.
	* gcc.dg/tree-ssa/reassoc-35.c: Likewise.
	* gcc.dg/tree-ssa/reassoc-36.c: Likewise.
	* gcc.dg/tree-ssa/interposition.c: Require fpic effective target
	for test using -fPIC.
	* gcc.dg/lto/pr61526_0.c: Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214274 138bc75d-0d04-0410-961f-82ee72b054a4
delete_related_insns returns an rtx_insn

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

	* rtl.h (delete_related_insns): Strengthen return type from rtx to
	rtx_insn *.

	* jump.c (delete_related_insns): Likewise, also for locals "next"
	and "prev".



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214275 138bc75d-0d04-0410-961f-82ee72b054a4
PHASE 2: Per-file commits in main source directory

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

	* rtx-classes-status.txt: Phase 1 ("scaffolding") is done; begin
	phase 2 (per-file commits in main source dir).



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214276 138bc75d-0d04-0410-961f-82ee72b054a4
2014-08-21  Michael Meissner  <meissner@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (print_operand, 'y' case): Fix code that
	generated a warning and prevented bootstrapping the compiler.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214280 138bc75d-0d04-0410-961f-82ee72b054a4
2014-08-21  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/62214
	* frontend-passes.c (optimize_binop_array_assignment):
	Do not try to optimize the array assignment for string
	concatenation.

2014-08-21  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/62214
	* gfortran.dg/array_assignment_5.f90:  New test.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214281 138bc75d-0d04-0410-961f-82ee72b054a4
alias.c: Use rtx_insn

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

	* alias.c (init_alias_analysis): Strengthen local "insn" from rtx
	to rtx_insn *.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214283 138bc75d-0d04-0410-961f-82ee72b054a4
asan.c: strengthen some rtx locals

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

	* asan.c (asan_clear_shadow): Strengthen locals "insn", "insns"
	and "jump" from rtx to rtx_insn *.  Strengthen local "top_label"
	from rtx to rtx_code_label *.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214284 138bc75d-0d04-0410-961f-82ee72b054a4
auto-inc-dec.c: strengthen various rtx to rtx_insn *

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

	* auto-inc-dec.c (struct inc_insn): Strengthen field "insn" from
	rtx to rtx_insn *.
	(struct mem_insn): Likewise for field "insn".
	(reg_next_use): Strengthen from rtx * to rtx_insn **.
	(reg_next_inc_use): Likewise.
	(reg_next_def): Likewise.
	(move_dead_notes): Strengthen params "to_insn" and "from_insn"
	from rtx to rtx_insn *.
	(move_insn_before): Likewise for param "next_insn" and local "insns".
	(attempt_change): Likewise for local "mov_insn".
	(try_merge): Likewise for param "last_insn".
	(get_next_ref): Likewise for return type and local "insn".
	Strengthen param "next_array" from rtx * to rtx_insn **.
	(parse_add_or_inc): Strengthen param "insn" from rtx to
	rtx_insn *.
	(find_inc): Likewise for locals "insn" and "other_insn" (three of
	the latter).
	(merge_in_block): Likewise for locals "insn", "curr",
	"other_insn".
	(pass_inc_dec::execute): Update allocations of the arrays to
	reflect the stronger types.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214285 138bc75d-0d04-0410-961f-82ee72b054a4
bb-reorder.c: Use rtx_insn

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

	* bb-reorder.c (copy_bb_p): Strengthen local "insn" from rtx to
	rtx_insn *.
	(get_uncond_jump_length): Likewise for locals "label", "jump".
	(fix_up_crossing_landing_pad): Likewise for locals "new_label",
	"jump", "insn".
	(add_labels_and_missing_jumps): Likewise for local "new_jump".
	(fix_up_fall_thru_edges): Likewise for local "old_jump".
	(find_jump_block): Likewise for local "insn".
	(fix_crossing_conditional_branches): Likewise for locals
	"old_jump", "new_jump".
	(fix_crossing_unconditional_branches): Likewise for locals
	"last_insn", "indirect_jump_sequence", "jump_insn", "cur_insn".
	(pass_duplicate_computed_gotos::execute): Likewise for local "insn".



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214286 138bc75d-0d04-0410-961f-82ee72b054a4
bt-load.c: Use rtx_insn

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

	* bt-load.c (struct btr_user_s): Strengthen field "insn" from rtx
	to rtx_insn *.
	(struct btr_def_s): Likewise.
	(insn_sets_btr_p): Strengthen param "insn" from const_rtx to
	const rtx_insn *.
	(add_btr_def): Likewise.
	(new_btr_user): Likewise.
	(compute_defs_uses_and_gen): Strengthen locals "insn", "last" from
	rtx to rtx_insn *.
	(link_btr_uses): Likewise.
	(move_btr_def): Likewise for locals "insp", "old_insn",
	"new_insn".  Add checked cast to rtx_insn * for now on result of
	gen_move_insn.
	(can_move_up): Strengthen param "insn" from const_rtx to
	const rtx_insn *.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214287 138bc75d-0d04-0410-961f-82ee72b054a4
builtins.c: strengthen various rtx to rtx_insn * and other subclasses

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

	* builtins.c (expand_builtin_longjmp): Strengthen locals "insn"
	and "last" from rtx to rtx_insn *.
	(expand_builtin_nonlocal_goto): Likewise for local "insn".
	(expand_builtin_apply): Strengthen local "call_insn" from rtx to
	rtx_call_insn *.
	(expand_errno_check): Strengthen local "lab" from rtx to
	rtx_code_label *.
	(expand_builtin_mathfn): Strengthen local "insns" from rtx to
	rtx_insn *.
	(expand_builtin_mathfn_2): Likewise.
	(expand_builtin_mathfn_ternary): Likewise.
	(expand_builtin_mathfn_3): Likewise.
	(expand_builtin_interclass_mathfn): Likewise for local "last".
	(expand_builtin_int_roundingfn): Likewise for local "insns".
	(expand_builtin_int_roundingfn_2): Likewise.
	(expand_builtin_strlen): Likewise for local "before_strlen".
	(expand_builtin_strncmp): Likewise for local "seq".
	(expand_builtin_signbit): Likewise for local "last".
	(expand_builtin_atomic_compare_exchange): Strengthen local "label"
	from rtx to rtx_code_label *.
	(expand_stack_restore):  Strengthen local "prev" from rtx to
	rtx_insn *.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214288 138bc75d-0d04-0410-961f-82ee72b054a4
calls.c: Use rtx_insn

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

	* calls.c (emit_call_1): Strengthen local "call_insn" from rtx to
	rtx_insn *.
	(internal_arg_pointer_exp_state): Likewise for field "scan_start".
	(internal_arg_pointer_based_exp_scan): Likewise for locals "insn",
	"scan_start".
	(load_register_parameters): Likewise for local "before_arg".
	(check_sibcall_argument_overlap): Likewise for param "insn".
	(expand_call): Likewise for locals "normal_call_insns",
	"tail_call_insns", "insns", "before_call", "after_args",
	"before_arg", "last", "prev".  Strengthen one of the "last" from
	rtx to rtx_call_insn *.
	(fixup_tail_calls): Strengthen local "insn" from rtx to
	rtx_insn *.
	(emit_library_call_value_1): Likewise for locals "before_call" and
	"last".



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214289 138bc75d-0d04-0410-961f-82ee72b054a4
caller-save.c: Use rtx_insn

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

	* caller-save.c (save_call_clobbered_regs): Strengthen locals
	"ins" and "prev" from rtx to rtx_insn *.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214290 138bc75d-0d04-0410-961f-82ee72b054a4
cfgbuild.c: Use rtx_insn

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

	* cfgbuild.c (make_edges): Strengthen local "insn" from rtx to
	rtx_insn *.
	(purge_dead_tablejump_edges): Likewise.
	(find_bb_boundaries): Likewise for locals "insn", "end",
	"flow_transfer_insn".



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214291 138bc75d-0d04-0410-961f-82ee72b054a4
cfgcleanup.c: Use rtx_insn (also touches basic-block.h and ifcvt.c)

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

	* basic-block.h (flow_find_cross_jump): Strengthen params 3 and 4
	"f1" and "f2" from rtx * to rtx_insn **.
	(flow_find_head_matching_sequence): Likewise.

	* cfgcleanup.c (try_simplify_condjump): Strengthen local
	"cbranch_insn" from rtx to rtx_insn *.
	(thread_jump): Likewise for local "insn".
	(try_forward_edges): Likewise for local "last".
	(merge_blocks_move_predecessor_nojumps): Likewise for local "barrier".
	(merge_blocks_move_successor_nojumps): Likewise for locals "barrier",
	"real_b_end".
	(can_replace_by): Likewise for params "i1", "i2".
	(old_insns_match_p): Likewise.
	(merge_notes): Likewise.
	(walk_to_nondebug_insn): Likewise for param "i1".
	(flow_find_cross_jump): Strengthen params "f1" and "f2" from rtx *
	to rtx_insn **.  Strengthen locals "i1", "i2", "last1", "last2",
	"afterlast1", "afterlast2" from rtx to rtx_insn *.
	(flow_find_head_matching_sequence): Strengthen params "f1" and
	"f2" from rtx * to rtx_insn **.  Strengthen locals "i1", "i2",
	"last1", "last2", "beforelast1", "beforelast2" from rtx to
	rtx_insn *.
	(outgoing_edges_match): Likewise for locals "last1", "last2".
	(try_crossjump_to_edge): Likewise for local "insn".
	Replace call to for_each_rtx with for_each_rtx_in_insn.

	(try_crossjump_to_edge): Likewise for locals "newpos1", "newpos2".
	(try_head_merge_bb): Likewise for locals "e0_last_head_, "jump",
	"e0_last", "e_last", "head", "curr", "insn".  Strengthen locals
	"headptr", "currptr", "nextptr" from rtx * to rtx_insn **.
	(try_optimize_cfg): Strengthen local "last" from rtx to
	rtx_insn *.
	(delete_dead_jumptables): Likewise for locals "insn", "next",
	"label".

	* ifcvt.c (cond_exec_process_if_block): Likewise for locals
	"rtx then_last_head", "rtx else_last_head", "rtx then_first_tail",
	"rtx else_first_tail", to reflect the basic-block.h changes above.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214292 138bc75d-0d04-0410-961f-82ee72b054a4
cfgloop.c: Use rtx_insn

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

	* cfgloop.c (loop_exits_from_bb_p): Strengthen local "insn" from
	rtx to rtx_insn *.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214293 138bc75d-0d04-0410-961f-82ee72b054a4
cfgloopanal.c: Use rtx_insn

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

	* cfgloopanal.c (num_loop_insns): Strengthen local "insn" from
	rtx to rtx_insn *.
	(average_num_loop_insns): Likewise.
	(init_set_costs): Likewise for local "seq".
	(seq_cost): Likewise for param "seq", from const_rtx to const
	rtx_insn *.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214294 138bc75d-0d04-0410-961f-82ee72b054a4
cfgrtl.c: Use rtx subclasses

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

	* cfgrtl.c (can_delete_note_p): Require a const rtx_note * rather
	than a const_rtx.
	(can_delete_label_p): Require a const rtx_code_label * rather than
	a const_rtx.
	(delete_insn): Add checked cast to rtx_code_label * when we know
	we're dealing with LABEL_P (insn).  Strengthen local "bb_note" from
	rtx to rtx_insn *.
	(delete_insn_chain): Strengthen locals "prev" and "current" from
	rtx to rtx_insn *.  Add a checked cast when assigning from
	"finish" (strengthening the params will come later).  Add a
	checked cast to rtx_note * in region where we know
	NOTE_P (current).
	(rtl_delete_block): Strengthen locals "insn" and "end" from rtx to
	rtx_insn *.
	(compute_bb_for_insn): Likewise.
	(free_bb_for_insn): Likewise for local "insn".
	(compute_bb_for_insn): Likewise.
	(update_bb_for_insn_chain): Strengthen params "begin", "end" and
	local "insn" from rtx to rtx_insn *
	(flow_active_insn_p): Require a const rtx_insn * rather than a
	const_rtx.
	(contains_no_active_insn_p): Strengthen local "insn" from rtx to
	rtx_insn *.
	(can_fallthru): Likewise for locals "insn" and "insn2".
	(bb_note): Likewise for local "note".
	(first_insn_after_basic_block_note): Likewise for local "note" and
	for return type.
	(rtl_split_block): Likewise for locals "insn" and "next".
	(unique_locus_on_edge_between_p): Likewise for locals "insn" and
	"end".
	(rtl_merge_blocks): Likewise for locals "b_head", "b_end",
	"a_end", "del_first", "del_last", "b_debug_start", "b_debug_end",
	"prev", "tmp".
	(try_redirect_by_replacing_jump): Likewise for locals "insn" (both of
	them), "kill_from", "barrier", "new_insn".
	(patch_jump_insn): Likewise for params "insn", "old_label".
	(redirect_branch_edge): Likewise for locals "old_label", "insn".
	(force_nonfallthru_and_redirect): Likewise for locals "insn",
	"old_label", "new_label".
	(rtl_tidy_fallthru_edge): Likewise for local "q".
	(rtl_split_edge): Likewise for locals "before", "last".
	(commit_one_edge_insertion): Likewise for locals "before",
	"after", "insns", "tmp", "last", adding a checked cast where
	currently necessary.
	(commit_edge_insertions): Likewise.
	(rtl_dump_bb): Likewise for locals "insn", "last".
	(print_rtl_with_bb): Likewise for local "x".
	(rtl_verify_bb_insns): Likewise for local "x".
	(rtl_verify_bb_pointers): Likewise for local "insn".
	(rtl_verify_bb_insn_chain): Likewise for locals "x", "last_head",
	"head", "end".
	(rtl_verify_fallthru): Likewise for local "insn".
	(rtl_verify_bb_layout): Likewise for locals "x" and "rtx_first".
	(purge_dead_edges): Likewise for local "insn".
	(fixup_abnormal_edges): Likewise for locals "insn", "stop", "next".
	(skip_insns_after_block): Likewise for return type and for locals
	"insn", "last_insn", "next_head", "prev".
	(record_effective_endpoints): Likewise for locals "next_insn",
	"insn", "end".
	(fixup_reorder_chain): Likewise for locals "bb_end_insn" and "end".
	(verify_insn_chain): Likewise for locals "x", "prevx", "nextx".
	(cfg_layout_can_duplicate_bb_p): Likewise for local "insn".
	(duplicate_insn_chain): For now, add checked cast from rtx to
	rtx_insn * when returning insn.
	(cfg_layout_duplicate_bb): Likewise for local "insn".
	(cfg_layout_delete_block): Likewise for locals "insn", "next",
	"prev", "remaints".
	(cfg_layout_merge_blocks): Likewise for local "insn", "last".
	(rtl_block_empty_p): Likewise.
	(rtl_split_block_before_cond_jump): Likewise for locals "insn",
	"split_point", "last".
	(rtl_block_ends_with_call_p): Likewise for local "insn".
	(need_fake_edge_p): Strengthen param "insn" from const_rtx to
	const rtx_insn *.
	(rtl_flow_call_edges_add): Strengthen locals "insn", "prev_insn",
	"split_at_insn" from rtx to rtx_insn *.
	(rtl_lv_add_condition_to_bb): Likewise for locals "seq", "jump".
	(rtl_can_remove_branch_p): Strengthen local "insn" from const_rtx
	to const rtx_insn *.
	(rtl_account_profile_record): Likewise.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@214295 138bc75d-0d04-0410-961f-82ee72b054a4