* gcc.target/ia64/20090324-1.c: Fix implicit declarations and
implicit int.
* gcc.target/ia64/mfused-madd-vect.c: Likewise.
* gcc.target/ia64/mno-fused-madd-vect.c: Likewise.
* gcc.target/ia64/pr29682.c: Likewise.
* gcc.target/ia64/pr43603.c: Likewise.
* gcc.target/ia64/pr48496.c: Likewise.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216302 138bc75d-0d04-0410-961f-82ee72b054a4
* gcc.target/m68k/crash1.c: Fix implicit declaration.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216303 138bc75d-0d04-0410-961f-82ee72b054a4
2014-10-16  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/63168
	* tree-cfg.c (gimple_can_merge_blocks_p): Only protect
	latches if after merging they are no longer simple.
	* cfghooks.c (merge_blocks): Handle merging a latch block
	into another block.

	* gcc.dg/tree-ssa/loop-40.c: New testcase.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216304 138bc75d-0d04-0410-961f-82ee72b054a4
IPA ICF pass, part 3/5

	* Makefile.in: New object files included.
	* cgraph.c (cgraph_node::dump): New cgraph_node flag icf_merged
	is printed.
	(verify_edge_corresponds_to_fndecl): More sensitive verification
	of nodes that are merged by IPA ICF.
	* cgraph.h (cgraph_node::num_references): New function.
	* cgraphunit.c (cgraph_node::expand_thunk): White space fixed.
	* common.opt: New options ipa-icf, ipa-icf-functions and
	ipa-icf-variables introduced.
	* doc/invoke.texi: Documentation of new options introduced.
	* ipa-icf-gimple.c: New file.
	* ipa-icf-gimple.h: New file.
	* ipa-icf.c: New file.
	* ipa-icf.h: New file.
	* lto-cgraph.c (lto_output_node): Streaming of icf_merged flag added.
	(input_overwrite_node): Likewise.
	* lto-section-in.c: New icf section added.
	* lto-streamer.h (enum lto_section_type): Likewise.
	* opts.c (common_handle_option): New option added.
	* passes.def: New pass included.
	* timevar.def: Time variable for IPA ICF added.
	* tree-pass.h: New IPA ICF pass entry point added.



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216305 138bc75d-0d04-0410-961f-82ee72b054a4
IPA ICF, part 4/5

	* c-c++-common/rotate-1.c: Options changed to not collide
	with a new IPA ICF pass.
	* c-c++-common/rotate-2.c: Likewise.
	* c-c++-common/rotate-3.c: Likewise.
	* c-c++-common/rotate-4.c: Likewise.
	* g++.dg/cpp0x/rv-return.C: Likewise.
	* g++.dg/cpp0x/rv1n.C: Likewise.
	* g++.dg/cpp0x/rv1p.C: Likewise.
	* g++.dg/cpp0x/rv2n.C: Likewise.
	* g++.dg/cpp0x/rv3n.C: Likewise.
	* g++.dg/cpp0x/rv4n.C: Likewise.
	* g++.dg/cpp0x/rv5n.C: Likewise.
	* g++.dg/cpp0x/rv6n.C: Likewise.
	* g++.dg/cpp0x/rv7n.C: Likewise.
	* g++.dg/ipa/devirt-g-1.C: Likewise.
	* g++.dg/ipa/inline-1.C: Likewise.
	* g++.dg/ipa/inline-2.C: Likewise.
	* g++.dg/ipa/inline-3.C: Likewise.
	* g++.dg/opt/pr30965.C: Likewise.
	* g++.dg/tree-ssa/pr19637.C: Likewise.
	* gcc.dg/guality/csttest.c: Likewise.
	* gcc.dg/ipa/iinline-4.c (struct S): Likewise.
	* gcc.dg/ipa/iinline-7.c: Likewise.
	* gcc.dg/ipa/ipa-pta-13.c: Likewise.
	* gcc.dg/ipa/ipacost-1.c: Likewise.
	* gcc.dg/ipa/ipacost-2.c: Likewise.
	* gcc.dg/ipa/ipcp-agg-6.c: Likewise.
	* gcc.dg/ipa/remref-2a.c: Likewise.
	* gcc.dg/ipa/remref-2b.c: Likewise.
	* gcc.dg/pr46309-2.c: Likewise.
	* gcc.dg/torture/ipa-pta-1.c: Likewise.
	* gcc.dg/tree-ssa/andor-3.c (int f): Likewise.
	* gcc.dg/tree-ssa/andor-4.c: Likewise.
	* gcc.dg/tree-ssa/andor-5.c: Likewise.
	* gcc.dg/vect/no-vfa-pr29145.c: Likewise.
	* gcc.dg/vect/vect-cond-10.c: Likewise.
	* gcc.dg/vect/vect-cond-9.c: Likewise.
	* gcc.dg/vect/vect-widen-mult-const-s16.c: Likewise.
	* gcc.dg/vect/vect-widen-mult-const-u16.c: Likewise.
	* gcc.dg/vect/vect-widen-mult-half-u8.c: Likewise.
	* gcc.target/i386/bmi-1.c: Likewise.
	* gcc.target/i386/bmi-2.c: Likewise.
	* gcc.target/i386/pr56564-2.c: Likewise.




git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216306 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/
	PR target/53513
	* config/sh/sh-protos.h (emit_sf_insn, emit_df_insn, expand_sf_unop,
	expand_sf_binop, expand_df_unop, expand_df_binop): Remove.

	* config/sh/sh.c (sh_emit_set_t_insn): Adjust generated insn pattern
	to match fp insn patterns.
	(calc_live_regs): Add FPSCR_MODES_REG and FPSCR_STAT_REG to the ignore
	list.
	(emit_sf_insn, emit_df_insn, expand_sf_unop, expand_sf_binop,
	expand_df_unop, expand_df_binop): Remove.
	(sh_conditional_register_usage): Mark FPSCR_MODES_REG and
	FPSCR_STAT_REG as not call clobbered.
	(sh_emit_mode_set): Emit fpscr store-modify-load sequence instead of
	invoking fpscr_set_from_mem.

	* config/sh/sh.h (MAX_REGISTER_NAME_LENGTH): Increase to 6.
	(SH_REGISTER_NAMES_INITIALIZER): Add names for FPSCR_MODES_REG and
	FPSCR_STAT_REG.
	(REGISTER_NAMES): Adjust.
	(SPECIAL_REGISTER_P): Add FPSCR_MODES_REG and FPSCR_STAT_REG.
	(FIRST_PSEUDO_REGISTER): Increase to 156.
	(DWARF_FRAME_REGISTERS): Define as 153 to keep the original value.
	(FIXED_REGISTERS, CALL_USED_REGISTERS): Add FPSCR_MODES_REG and
	FPSCR_STAT_REG.
	(REG_CLASS_CONTENTS): Adjust ALL_REGS bit mask to include
	FPSCR_MODES_REG and FPSCR_STAT_REG.
	(REG_ALLOC_ORDER): Add FPSCR_MODES_REG and FPSCR_STAT_REG.

	* config/sh/sh.md (FPSCR_MODES_REG, FPSCR_STAT_REG, FPSCR_PR,
	FPSCR_SZ): Add new constants.
	(UNSPECV_FPSCR_MODES, UNSPECV_FPSCR_STAT): Add new unspecv constants.

	(movpsi): Use TARGET_FPU_ANY condition, invoke gen_fpu_switch.
	(fpu_switch): Add use and set of FPSCR_STAT_REG and FPSCR_MODES_REG.
	Use TARGET_FPU_ANY condition.
	(fpu_switch peephole2): Remove.
	(fpu_switch split): Use simple_mem_operand to capture the mem and
	adjust split implementation.
	(extend_psi_si, truncate_si_psi): New insns.
	(toggle_sz, toggle_pr): Use FPSCR_SZ, FPSCR_PR constants.  Add
	set of FPSCR_MODES_REG.

	(push_e, push_4, pop_e, pop_4, movdf_i4, reload_indf__frn, movsf_ie,
	reload_insf__frn, force_mode_for_call, calli, calli_tbr_rel,
	calli_pcrel, call_pcrel, call_compact, call_compact_rettramp,
	call_valuei, call_valuei_tbr_rel, call_valuei_pcrel, call_value_pcrel,
	call_value_compact, call_value_compact_rettramp, call,
	call_pop_compact, call_pop_compact_rettramp, call_value, sibcalli,
	sibcalli_pcrel, sibcalli_thunk, sibcall_pcrel, sibcall_compact,
	sibcall, sibcall_valuei, sibcall_valuei_pcrel, sibcall_value_pcrel,
	sibcall_value_compact, sibcall_value, call_value_pop_compact,
	call_value_pop_compact_rettramp, various unnamed splits):
	Replace use of FPSCR_REG with use of FPSCR_MODES_REG.  Adjust gen_*
	function uses.

	(floatsisf2_i4, *floatsisf2_ie): Merge into floatsisf2_i4.
	(fix_truncsfsi2_i4, *fixsfsi): Merge into fix_truncsfsi2_i4.
	(cmpgtsf_t, cmpgtsf_t_i4): Merge into cmpgtsf_t.
	(cmpeqsf_t, cmpeqsf_t_i4): Merge into cmpeqsf_t.
	(ieee_ccmpeqsf_t, *ieee_ccmpeqsf_t_4): Merge into ieee_ccmpeqsf_t.

	(udivsi3_i4, divsi3_i4, addsf3_i, subsf3_i, mulsf3_i, fmasf4_i,
	*fmasf4, divsf3_i, floatsisf2_i4, fix_truncsfsi2_i4, cmpgtsf_t,
	cmpeqsf_t, ieee_ccmpeqsf_t, sqrtsf2_i, rsqrtsf2, fsca, adddf3_i,
	subdf3_i, muldf3_i, divdf3_i, floatsidf2_i, fix_truncdfsi2_i,
	cmpgtdf_t, cmpeqdf_t, *ieee_ccmpeqdf_t, sqrtdf2_i, extendsfdf2_i4,
	truncdfsf2_i4): Replace use of FPSCR_REG with clobber of FPSCR_STAT_REG
	and use of FPSCR_MODES_REG.  Adjust gen_* function uses.

gcc/testsuite/
	PR target/53513
	* gcc.target/sh/pr54680.c: Adjust matching of lds insn.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216307 138bc75d-0d04-0410-961f-82ee72b054a4
IPA ICF pass, part 5/5

        * g++.dg/ipa/ipa-icf-1.C: New test.
	* g++.dg/ipa/ipa-icf-2.C: New test.
	* g++.dg/ipa/ipa-icf-3.C: New test.
	* g++.dg/ipa/ipa-icf-4.C: New test.
	* g++.dg/ipa/ipa-icf-5.C: New test.
	* gcc.dg/ipa/ipa-icf-1.c: New test.
	* gcc.dg/ipa/ipa-icf-10.c: New test.
	* gcc.dg/ipa/ipa-icf-11.c: New test.
	* gcc.dg/ipa/ipa-icf-12.c: New test.
	* gcc.dg/ipa/ipa-icf-13.c: New test.
	* gcc.dg/ipa/ipa-icf-14.c: New test.
	* gcc.dg/ipa/ipa-icf-15.c: New test.
	* gcc.dg/ipa/ipa-icf-16.c: New test.
	* gcc.dg/ipa/ipa-icf-17.c: New test.
	* gcc.dg/ipa/ipa-icf-18.c: New test.
	* gcc.dg/ipa/ipa-icf-19.c: New test.
	* gcc.dg/ipa/ipa-icf-2.c: New test.
	* gcc.dg/ipa/ipa-icf-20.c: New test.
	* gcc.dg/ipa/ipa-icf-21.c: New test.
	* gcc.dg/ipa/ipa-icf-22.c: New test.
	* gcc.dg/ipa/ipa-icf-23.c: New test.
	* gcc.dg/ipa/ipa-icf-24.c: New test.
	* gcc.dg/ipa/ipa-icf-25.c: New test.
	* gcc.dg/ipa/ipa-icf-26.c: New test.
	* gcc.dg/ipa/ipa-icf-27.c: New test.
	* gcc.dg/ipa/ipa-icf-28.c: New test.
	* gcc.dg/ipa/ipa-icf-29.c: New test.
	* gcc.dg/ipa/ipa-icf-3.c: New test.
	* gcc.dg/ipa/ipa-icf-30.c: New test.
	* gcc.dg/ipa/ipa-icf-4.c: New test.
	* gcc.dg/ipa/ipa-icf-5.c: New test.
	* gcc.dg/ipa/ipa-icf-6.c: New test.
	* gcc.dg/ipa/ipa-icf-7.c: New test.
	* gcc.dg/ipa/ipa-icf-8.c: New test.
	* gcc.dg/ipa/ipa-icf-9.c: New test.



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