Commit Graph

132369 Commits

Author SHA1 Message Date
Richard Sandiford
d7111da854 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
2014-08-28 06:23:00 +00:00
Richard Sandiford
42be54562a 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
2014-08-28 06:22:56 +00:00
Richard Sandiford
a3aa081329 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
2014-08-28 06:22:51 +00:00
Richard Sandiford
fbf3fc0fc9 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
2014-08-28 06:22:46 +00:00
Richard Sandiford
a9052a4081 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
2014-08-28 06:22:42 +00:00
Richard Sandiford
a5b9bc172a 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
2014-08-28 06:22:38 +00:00
Richard Sandiford
f000294852 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
2014-08-28 06:22:33 +00:00
Richard Sandiford
c992c06661 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
2014-08-28 06:22:29 +00:00
Richard Sandiford
e89b312ed3 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
2014-08-28 06:22:24 +00:00
Richard Sandiford
a2250fe993 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
2014-08-28 06:22:20 +00:00
Richard Sandiford
f8305d18b8 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
2014-08-28 06:22:16 +00:00
Richard Sandiford
46bbda0375 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
2014-08-28 06:22:12 +00:00
Richard Sandiford
1ecb5b94a1 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
2014-08-28 06:22:07 +00:00
Richard Sandiford
e9f56944fd 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
2014-08-28 06:21:59 +00:00
Richard Sandiford
1cb22a678b 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
2014-08-28 06:21:54 +00:00
Richard Sandiford
b8ec23acb8 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
2014-08-28 06:21:50 +00:00
Richard Sandiford
403837b4cb 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
2014-08-28 06:21:44 +00:00
Richard Sandiford
476dd0ce18 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
2014-08-28 06:20:12 +00:00
Edward Smith-Rowland
7c05e50c73 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
2014-08-28 02:38:24 +00:00
GCC Administrator
241622a514 Daily bump.
From-SVN: r214615
2014-08-28 00:16:44 +00:00
Kaz Kojima
1284f55903 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
2014-08-27 23:25:14 +00:00
Richard Sandiford
109374e2fb 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
2014-08-27 21:23:03 +00:00
Chen Gang
b7679d96ec 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
2014-08-27 15:19:54 -06:00
David Malcolm
710427e290 Add JUMP_LABEL_AS_INSN
gcc/
2014-08-27  David Malcolm  <dmalcolm@redhat.com>

	* rtl.h (JUMP_LABEL_AS_INSN): New.

From-SVN: r214607
2014-08-27 20:44:45 +00:00
David Malcolm
d7ac0a6aa6 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
2014-08-27 20:42:06 +00:00
David Malcolm
2f33ff0a9d 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
2014-08-27 20:40:05 +00:00
David Malcolm
0f4783c7f7 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
2014-08-27 20:38:06 +00:00
David Malcolm
2382940b41 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
2014-08-27 20:35:53 +00:00
David Malcolm
ca486330c4 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
2014-08-27 20:33:38 +00:00
David Malcolm
38e60c554d 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
2014-08-27 20:30:51 +00:00
David Malcolm
30db48d9d2 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
2014-08-27 20:28:31 +00:00
David Malcolm
b302a90fad 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
2014-08-27 20:26:27 +00:00
David Malcolm
a3be187d61 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
2014-08-27 20:24:41 +00:00
David Malcolm
9e3090e112 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
2014-08-27 20:21:56 +00:00
David Malcolm
33d9cde485 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
2014-08-27 20:08:32 +00:00
David Malcolm
e094487071 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
2014-08-27 20:06:47 +00:00
David Malcolm
e429a50b96 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
2014-08-27 20:04:14 +00:00
David Malcolm
2a62e439fb 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
2014-08-27 20:01:32 +00:00
David Malcolm
292d1dfba6 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
2014-08-27 19:59:57 +00:00
David Malcolm
84fa8d9c4e 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
2014-08-27 19:56:45 +00:00
David Malcolm
3dc99c19a5 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
2014-08-27 19:53:39 +00:00
David Malcolm
a756c6be31 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
2014-08-27 19:49:43 +00:00
David Malcolm
9daaca3673 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
2014-08-27 19:46:46 +00:00
David Malcolm
c74ef30d7b 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
2014-08-27 19:43:12 +00:00
David Malcolm
f11723d8cb Convert various INSN accessors in rtl.h to inline functions
gcc/
2014-08-27  David Malcolm  <dmalcolm@redhat.com>

	* rtl.h (INSN_UID): Convert from a macro to a pair of inline
	functions.  Require merely an rtx for now, not an rtx_insn *.
	(BLOCK_FOR_INSN): Likewise.
	(INSN_LOCATION): Likewise.
	(INSN_HAS_LOCATION): Convert from a macro to an inline function.

From-SVN: r214586
2014-08-27 19:40:43 +00:00
David Malcolm
bd59c195f6 Convert PATTERN from a macro to a pair of inline functions
gcc/
2014-08-27  David Malcolm  <dmalcolm@redhat.com>

	* rtl.h (PATTERN): Convert this macro into a pair of inline
	functions, for now, requiring const_rtx and rtx.

From-SVN: r214585
2014-08-27 19:38:19 +00:00
David Malcolm
ac44248e6a Use rtx_insn for various target.def hooks
gcc/
2014-08-27  David Malcolm  <dmalcolm@redhat.com>

	* target.def (unwind_emit): Strengthen param "insn" from rtx to
	rtx_insn *.
	(final_postscan_insn): Likewise.
	(adjust_cost): Likewise.
	(adjust_priority): Likewise.
	(variable_issue): Likewise.
	(macro_fusion_pair_p): Likewise.
	(dfa_post_cycle_insn): Likewise.
	(first_cycle_multipass_dfa_lookahead_guard): Likewise.
	(first_cycle_multipass_issue): Likewise.
	(dfa_new_cycle): Likewise.
	(adjust_cost_2): Likewise for params "insn" and "dep_insn".
	(speculate_insn): Likewise for param "insn".
	(gen_spec_check): Likewise for params "insn" and "label".
	(get_insn_spec_ds): Likewise for param "insn".
	(get_insn_checked_ds): Likewise.
	(dispatch_do): Likewise.
	(dispatch): Likewise.
	(cannot_copy_insn_p): Likewise.
	(invalid_within_doloop): Likewise.
	(legitimate_combined_insn): Likewise.
	(needed): Likewise.
	(after): Likewise.

	* doc/tm.texi: Automatically updated to reflect changes to
	target.def.

	* haifa-sched.c (choose_ready): Convert NULL_RTX to NULL when
	working with insn.
	(schedule_block): Likewise.
	(sched_init): Likewise.
	(sched_speculate_insn): Strengthen param "insn" from rtx to
	rtx_insn *.
	(ready_remove_first_dispatch): Convert NULL_RTX to NULL when
	working with insn.
	* hooks.c (hook_bool_rtx_true): Rename to...
	hook_bool_rtx_insn_true): ...this, and strengthen first param from
	rtx to rtx_insn *.
	(hook_constcharptr_const_rtx_null): Rename to...
	(hook_constcharptr_const_rtx_insn_null): ...this, and strengthen
	first param from const_rtx to const rtx_insn *.
	(hook_bool_rtx_int_false): Rename to...
	(hook_bool_rtx_insn_int_false): ...this, and strengthen first
	param from rtx to rtx_insn *.
	(hook_void_rtx_int): Rename to...
	(hook_void_rtx_insn_int): ...this, and strengthen first param from
	rtx to rtx_insn *.

	* hooks.h (hook_bool_rtx_true): Rename to...
	(hook_bool_rtx_insn_true): ...this, and strengthen first param from
	rtx to rtx_insn *.
	(hook_bool_rtx_int_false): Rename to...
	(hook_bool_rtx_insn_int_false): ...this, and strengthen first
	param from rtx to rtx_insn *.
	(hook_void_rtx_int): Rename to...
	(hook_void_rtx_insn_int): ...this, and strengthen first param from
	rtx to rtx_insn *.
	(hook_constcharptr_const_rtx_null): Rename to...
	(hook_constcharptr_const_rtx_insn_null): ...this, and strengthen
	first param from const_rtx to const rtx_insn *.

	* sched-deps.c (sched_macro_fuse_insns): Strengthen param "insn"
	and local "prev" from rtx to rtx_insn *.

	* sched-int.h (sched_speculate_insn): Strengthen first param from
	rtx to rtx_insn *.

	* sel-sched.c (create_speculation_check): Likewise for local "label".
	* targhooks.c (default_invalid_within_doloop): Strengthen param
	"insn" from const_rtx to const rtx_insn *.
	* targhooks.h (default_invalid_within_doloop): Strengthen param
	from const_rtx to const rtx_insn *.

	* config/alpha/alpha.c (alpha_cannot_copy_insn_p): Likewise.
	(alpha_adjust_cost): Likewise for params "insn", "dep_insn".

	* config/arc/arc.c (arc_sched_adjust_priority): Likewise for param
	"insn".
	(arc_invalid_within_doloop): Likewise, with const.

	* config/arm/arm.c (arm_adjust_cost): Likewise for params "insn", "dep".
	(arm_cannot_copy_insn_p): Likewise for param "insn".
	(arm_unwind_emit): Likewise.

	* config/bfin/bfin.c (bfin_adjust_cost): Likewise for params "insn",
	"dep_insn".

	* config/c6x/c6x.c (c6x_dfa_new_cycle): Likewise for param "insn".
	(c6x_variable_issue): Likewise.  Removed now-redundant checked
	cast.
	(c6x_adjust_cost): Likewise for params "insn", "dep_insn".

	* config/epiphany/epiphany-protos.h (epiphany_mode_needed):
	Likewise for param "insn".
	(epiphany_mode_after): Likewise.
	* config/epiphany/epiphany.c (epiphany_adjust_cost): Likewise for
	params "insn", "dep_insn".
	(epiphany_mode_needed): Likewise for param "insn".
	(epiphany_mode_after): Likewise.

	* config/i386/i386-protos.h (i386_pe_seh_unwind_emit): Likewise.
	* config/i386/i386.c (ix86_legitimate_combined_insn): Likewise.
	(ix86_avx_u128_mode_needed): Likewise.
	(ix86_i387_mode_needed): Likewise.
	(ix86_mode_needed): Likewise.
	(ix86_avx_u128_mode_after): Likewise.
	(ix86_mode_after): Likewise.
	(ix86_adjust_cost): Likewise for params "insn", "dep_insn".
	(ix86_macro_fusion_pair_p): Likewise for params "condgen", "condjmp".
	(ix86_adjust_priority): Likewise for param "insn".
	(core2i7_first_cycle_multipass_issue): Likewise for param "insn".
	(do_dispatch): Likewise.
	(has_dispatch): Likewise.
	* config/i386/winnt.c (i386_pe_seh_unwind_emit): Likewise.

	* config/ia64/ia64.c (TARGET_INVALID_WITHIN_DOLOOP): Update to
	reflect renaming of default hook implementation from
	hook_constcharptr_const_rtx_null to
	hook_constcharptr_const_rtx_insn_null.
	(ia64_adjust_cost_2): Strengthen params "insn", "dep_insn" from
	rtx to rtx_insn *.
	(ia64_variable_issue): Likewise for param "insn".
	(ia64_first_cycle_multipass_dfa_lookahead_guard): Likewise.
	(ia64_dfa_new_cycle): Likewise.
	(ia64_get_insn_spec_ds): Likewise.
	(ia64_get_insn_checked_ds): Likewise.
	(ia64_speculate_insn): Likewise.
	(ia64_gen_spec_check): Likewise for params "insn", "label".
	(ia64_asm_unwind_emit): Likewise for param "insn".

	* config/m32r/m32r.c (m32r_adjust_priority): Likewise.

	* config/m68k/m68k.c (m68k_sched_adjust_cost): Likewise for params
	"insn", "def_insn".
	(m68k_sched_variable_issue): Likewise for param "insn".

	* config/mep/mep.c (mep_adjust_cost): Likewise for params "insn",
	"def_insn".

	* config/microblaze/microblaze.c (microblaze_adjust_cost):
	Likewise for params "insn", "dep".

	* config/mips/mips.c (mips_adjust_cost): Likewise.
	(mips_variable_issue): Likewise for param "insn".
	(mips_final_postscan_insn): Likewise.

	* config/mn10300/mn10300.c (mn10300_adjust_sched_cost): Likewise
	for params "insn", "dep".

	* config/pa/pa.c (pa_adjust_cost): Likewise for params "insn",
	"dep_insn".
	(pa_adjust_priority): Likewise for param "insn".

	* config/picochip/picochip.c (picochip_sched_adjust_cost):
	Likewise for params "insn", "dep_insn".

	* config/rs6000/rs6000.c (rs6000_variable_issue_1): Likewise for
	param "insn".
	(rs6000_variable_issue): Likewise.
	(rs6000_adjust_cost): Likewise for params "insn", "dep_insn".
	(rs6000_debug_adjust_cost): Likewise.
	(rs6000_adjust_priority): Likewise for param "insn".
	(rs6000_use_sched_lookahead_guard): Likewise.
	(get_next_active_insn): Likewise for return type and both params.
	(redefine_groups): Likewise for params "prev_head_insn", "tail"
	and locals "insn", "next_insn".
	(pad_groups): Likewise.

	* config/s390/s390.c (s390_adjust_priority): Likewise for param
	"insn".
	(s390_cannot_copy_insn_p): Likewise.
	(s390_sched_variable_issue): Likewise for third param, eliminating
	checked cast.
	(TARGET_INVALID_WITHIN_DOLOOP): Update to reflect renaming of
	default hook implementation from hook_constcharptr_const_rtx_null
	to hook_constcharptr_const_rtx_insn_null.

	* config/sh/sh.c (sh_cannot_copy_insn_p): Strengthen param "insn"
	from rtx to rtx_insn *.
	(sh_adjust_cost): Likewise for params "insn", "dep_insn".
	(sh_variable_issue): Likewise for param "insn".
	(sh_dfa_new_cycle): Likewise.
	(sh_mode_needed): Likewise.
	(sh_mode_after): Likewise.

	* config/sparc/sparc.c (supersparc_adjust_cost): Likewise for
	params "insn", "dep_insn".
	(hypersparc_adjust_cost): Likewise.
	(sparc_adjust_cost): Likewise.

	* config/spu/spu.c (spu_sched_variable_issue): Likewise for third
	param, eliminated checked cast.
	(spu_sched_adjust_cost): Likewise for first and third params.

	* config/tilegx/tilegx.c (tilegx_sched_adjust_cost): Strengthen
	params "insn" and "dep_insn" from rtx to rtx_insn *.

	* config/tilepro/tilepro.c (tilepro_sched_adjust_cost): Likewise.

From-SVN: r214584
2014-08-27 19:34:13 +00:00
David Malcolm
af48075062 mn10300: Fixes to PARALLEL handling within mn10300_adjust_sched_cost
2014-08-27  David Malcolm  <dmalcolm@redhat.com>

	* gcc/config/mn10300/mn10300.c (is_load_insn): Rename to...
	(set_is_load_p): ...this, updating to work on a SET pattern rather
	than an insn.
	(is_store_insn): Rename to...
	(set_is_store_p): ...this, updating to work on a SET pattern
	rather than an insn.
	(mn10300_adjust_sched_cost): Move call to get_attr_timings from
	top of function to where it is needed.  Rewrite the bogus
	condition that checks for "insn" and "dep" being PARALLEL to
	instead use single_set, introducing locals "insn_set" and
	"dep_set".  Given that we only ever returned "cost" for a non-pair
	of SETs, bail out early if we don't have a pair of SET.
	Rewrite all uses of PATTERN (dep) and PATTERN (insn) to instead
	use the new locals "insn_set" and "dep_set", and update calls to
	is_load_insn and is_store_insn to be calls to set_is_load_p and
	set_is_store_p.

From-SVN: r214582
2014-08-27 19:12:31 +00:00
Jonathan Wakely
3cd4f356e9 re PR libstdc++/62159 (Missing headers for freestanding implementation)
PR libstdc++/62159
	* include/Makefile.am (install-freestanding-headers): Add missing
	C++11 headers.
	* include/Makefile.in: Regenerate.

From-SVN: r214580
2014-08-27 18:33:42 +01:00
Paolo Carlini
d7afa67338 re PR c++/52892 (Function pointer loses constexpr qualification)
/cp
2014-08-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/52892
	* semantics.c (cxx_eval_call_expression): Use STRIP_NOPS on the
	result of cxx_eval_constant_expression.

/testsuite
2014-08-27  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/52892
	* g++.dg/cpp0x/constexpr-52892-1.C: New.
	* g++.dg/cpp0x/constexpr-52892-2.C: Likewise.
	* g++.dg/cpp0x/constexpr-52282-1.C: Likewise.

From-SVN: r214579
2014-08-27 17:03:34 +00:00