2014-11-05  Alex Velenko  <Alex.Velenko@arm.com>

    gcc/
    * simplify-rtx.c (simplify_binary_operation_1): Div check added.
    * rtl.h (SUBREG_P): New macro added.

    gcc/testsuite/
    * gcc.dg/asr-div1.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217118 138bc75d-0d04-0410-961f-82ee72b054a4
Allow a port not to define an indirect_jump pattern.

	* optabs.c (emit_indirect_jump): Test HAVE_indirect_jump and emit a
	sorry if necessary.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217120 138bc75d-0d04-0410-961f-82ee72b054a4
Don't unnecessarily call eliminate_regs.

	* dbxout.c (dbxout_symbol): Don't call eliminate_regs on decls for
	global vars.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217121 138bc75d-0d04-0410-961f-82ee72b054a4
Add a no_register_allocation target hook.

	* target.def (no_register_allocation): New data hook.
	* doc/tm.texi.in: Add @hook TARGET_NO_REGISTER_ALLOCATION.
	* doc/tm.texi: Regenerate.
	* ira.c (gate_ira): New function.
	(pass_data_ira): Set has_gate.
	(pass_ira): Add a gate function.
	(pass_data_reload): Likewise.
	(pass_reload): Add a gate function.
	(pass_ira): Use it.
	* reload1.c (eliminate_regs): If reg_eliminate_is NULL, assert that
	no register allocation happens on the target and return.
	* final.c (alter_subreg): Ensure register is not a pseudo before
	calling simplify_subreg.
	(output_operand): Assert that x isn't a pseudo only if doing
	register allocation.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217122 138bc75d-0d04-0410-961f-82ee72b054a4
Allow a target to skip an unnecssary register return value for a struct return.

	* target.def (omit_struct_return_reg): New data hook.
	* doc/tm.texi.in: Add @hook TARGET_OMIT_STRUCT_RETURN_REG.
	* doc/tm.texi: Regenerate.
	* function.c (expand_function_end): Use it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@217123 138bc75d-0d04-0410-961f-82ee72b054a4
Reorganize post-ra pipeline for targets without register allocation.

	* passes.def (pass_compute_alignments, pass_duplicate_computed_gotos,
	pass_variable_tracking, pass_free_cfg, pass_machine_reorg,
	pass_cleanup_barriers, pass_delay_slots,
	pass_split_for_shorten_branches, pass_convert_to_eh_region_ranges,
	pass_shorten_branches, pass_est_nothrow_function_flags,
	pass_dwarf2_frame, pass_final): Move outside of pass_postreload and
	into pass_late_compilation.
	(pass_late_compilation): Add.
	* passes.c (pass_data_late_compilation, pass_late_compilation,
	make_pass_late_compilation): New.
	* timevar.def (TV_LATE_COMPILATION): New.

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