1. 22 Apr, 2010 1 commit
    • re PR middle-end/29274 (not using mulsidi3) · 5b58b39b
      gcc/
      	PR middle-end/29274
      	* optabs.h (expand_widening_mult): Declare.
      	* tree-pass.h (pass_optimize_widening_mul): Declare.
      	* tree-ssa-math-opts.c (execute_optimize_widening_mul,
      	gate_optimize_widening_mul): New static functions.
      	(pass_optimize_widening_mul): New.
      	* expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: New
      	case.
      	<case MULT_EXPR>: Remove support for widening multiplies.
      	* tree.def (WIDEN_MULT_EXPR): Tweak comment.
      	* cfgexpand.c (expand_debug_expr) <case WIDEN_MULT_EXPR>: Use
      	simplify_gen_unary rather than directly building extensions.
      	* tree-cfg.c (verify_gimple_assign_binary): Add tests for
      	WIDEN_MULT_EXPR.
      	* expmed.c (expand_widening_mult): New function.
      	* passes.c (init_optimization_passes): Add pass_optimize_widening_mul.
      
      gcc/testsuite/
      	PR middle-end/29274
      	* gcc.target/i386/wmul-1.c: New test.
      	* gcc.target/i386/wmul-2.c: New test.
      	* gcc.target/bfin/wmul-1.c: New test.
      	* gcc.target/bfin/wmul-2.c: New test.
      
      From-SVN: r158633
      Bernd Schmidt committed
  2. 21 Apr, 2010 2 commits
    • timevar.def (TV_WHOPR_WPA_FIXUP): Remove. · bc58d7e1
      	* timevar.def (TV_WHOPR_WPA_FIXUP): Remove.
      	* lto-section-in.c (lto_section_name): Remove wpa_fixup.
      	* lto-wpa-fixup.c: Remove.
      	* Makefile.in (lto-wpa-fixup.o): Remove.
      	* passes.c (init_optimization_passes): Remove pass_ipa_lto_wpa_fixup.
      	(execute_all_ipa_transforms): Set cgraph_state to CGRAPH_STATE_IPA_SSA.
      	* lto-streamer.c (lto_get_section_name): Remove wpa_fixup section.
      	
      	* lto.c (lto_fixup_tree): Do not call wpa fixup.
      	(materialize_cgraph): Likewise.
      
      From-SVN: r158622
      Jan Hubicka committed
    • tree-pass.h (ipa_opt_pass_d): Rename function_read_summary... · e792884f
      	* tree-pass.h (ipa_opt_pass_d): Rename function_read_summary;
      	add write_optimization_summary, read_optimization_summary.
      	(ipa_write_summaries_of_cgraph_node_set): Remove.
      	(ipa_write_optimization_summaries): Declare.
      	(ipa_read_optimization_summaries): Declare.
      	* ipa-cp.c (pass_ipa_cp): Update.
      	* ipa-reference.c (pass_ipa_reference): Update.
      	* ipa-pure-const.c (pass_ipa_pure_const): Update.
      	* lto-streamer-out.c (pass_ipa_lto_gimple, pass_ipa_lto_finish):
      	Update.
      	* ipa-inline.c (pass_ipa_inline): Update.
      	* ipa.c (pass_ipa_whole_program): Update.
      	* lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Update.
      	* passes.c (ipa_write_summaries_1): Do not test wpa.
      	(ipa_write_optimization_summaries_1): New.
      	(ipa_write_optimization_summaries): New.
      	(ipa_read_summaries): Do not test ltrans.
      	(ipa_read_optimization_summaries_1): New.
      	(ipa_read_optimization_summaries): New.
      
      	* lto.c (lto_wpa_write_files): Update.
      	(read_cgraph_and_symbols): Be more verbose.
      	(materialize_cgraph): Likewise.
      	(do_whole_program_analysis): Likewise.
      
      From-SVN: r158616
      Jan Hubicka committed
  3. 20 Apr, 2010 1 commit
    • cgraph.c (cgraph_remove_node): Kill bodies in other partitoin. · a837268b
      	* cgraph.c (cgraph_remove_node): Kill bodies in other partitoin.
      	(dump_cgraph_node): Dump new flags.
      	* cgraph.h (struct cgraph_node): Add flags reachable_from_other_partition
      	and in_other_partition.
      	(cgraph_can_remove_if_no_direct_calls_p): Functions used by other partition
      	can not be removed.
      	* cgraphunit.c (cgraph_mark_functions_to_output): Functions used by the other
      	partition must be output; silence sanity checking on leaking functions
      	bodies from other paritition.
      	* lto-cgraph.c (reachable_from_other_partition_p): New function.
      	(lto_output_node): Output new flags; do not sanity check that inline
      	clones are output; drop lto_forced_extern_inline_p code; do not mock
      	visibility flags at partition boundaries.
      	(add_node_to): New function.
      	(output_cgraph): Use it to sort functions so masters appear before
      	clones.
      	(input_overwrite_node): Input new flags.
      	* passes.c (ipa_write_summaries): Do not call
      	lto_new_extern_inline_states.
      	* lto-section-out.c (forced_extern_inline, lto_new_extern_inline_states,
      	lto_delete_extern_inline_states, lto_force_functions_extern_inline,
      	lto_forced_extern_inline_p): Kill.
      	* lto-streamer.h (lto_new_extern_inline_states,
      	* lto_delete_extern_inline_states, lto_force_functions_extern_inline,
      	lto_forced_extern_inline_p): Kill.
      
      	* lto.c (lto_add_inline_clones): Do not track inlined_decls.
      	(lto_add_all_inlinees): Likewise.
      	(lto_wpa_write_files): Likewise.
      
      From-SVN: r158563
      Jan Hubicka committed
  4. 06 Apr, 2010 3 commits
    • Avoid calling verify_ssa twice in verify_loop_closed_ssa. · a3b9e73c
      2010-04-06  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* graphite-clast-to-gimple.c (graphite_verify): Remove redundant
      	call to verify_ssa.  Invoke verify_loop_closed_ssa with an extra
      	argument.
      	* graphite-scop-detection.c (canonicalize_loop_closed_ssa_form): Same.
      	* graphite-sese-to-poly.c (rewrite_reductions_out_of_ssa): Same.
      	(rewrite_commutative_reductions_out_of_ssa): Same.
      	* passes.c (execute_function_todo): Call verify_ssa for every pass
      	in the LNO.  Invoke verify_loop_closed_ssa with an extra argument.
      	* tree-flow.h (verify_loop_closed_ssa): Update declaration.
      	* tree-parloops.c (parallelize_loops): Invoke verify_loop_closed_ssa
      	with an extra argument.
      	* tree-ssa-loop-manip.c (check_loop_closed_ssa_stmt): Same.  Call
      	verify_ssa only when the extra argument is true.
      	(gimple_duplicate_loop_to_header_edge): Invoke verify_loop_closed_ssa
      	with an extra argument.
      	(tree_transform_and_unroll_loop): Same.
      
      From-SVN: r158021
      Sebastian Pop committed
    • Always execute verify_loop_closed_ssa at LNO level. · 98b6e9dd
      2010-04-06  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* passes.c (execute_function_todo): Call verify_loop_closed_ssa
      	for all the passes of the LNO having LOOP_CLOSED_SSA.
      	* tree-if-conv.c (pass_if_conversion): Remove TODO_verify_loops.
      	* tree-loop-distribution.c (pass_loop_distribution): Same.
      	* tree-pass.h (TODO_verify_loops): Removed.
      	* tree-ssa-loop.c (pass_tree_loop_init): Same.
      	(pass_lim): Same.
      	(pass_tree_unswitch): Same.
      	(pass_predcom): Same.
      	(pass_vectorize): Same.
      	(pass_linear_transform): Same.
      	(pass_graphite_transforms): Same.
      	(pass_iv_canon): Same.
      	(pass_complete_unroll): Same.
      	(pass_complete_unrolli): Same.
      	(pass_parallelize_loops): Same.
      	(pass_loop_prefetch): Same.
      	(pass_iv_optimize): Same.
      
      From-SVN: r158020
      Sebastian Pop committed
    • re PR tree-optimization/32824 (Missed reduction vectorizer after store to global is LIM'd) · c86a3947
      Fix PR32824.
      
      2010-04-06  Changpeng Fang  <changpeng.fang@amd.com>
      
      	PR middle-end/32824
      	* passes.c (init_optimization_passes): Move pass_lim before
      	pass_copy_prop and pass_dce_loop.
      
      	* gcc.dg/vect/pr32824: New.
      
      From-SVN: r158018
      Changpeng Fang committed
  5. 02 Apr, 2010 1 commit
    • Make-lang.in, [...]: Update copyright years. · c75c517d
      	* ada/gcc-interface/Make-lang.in, alias.c, attribs.c, auto-inc-dec.c, 
      	basic-block.h, bb-reorder.c, calls.c, c-common.c, cgraph.h,
      	collect2.h, config/alpha/alpha.c, config/alpha/alpha.md,
      	config/alpha/predicates.md, config/arm/arm.md,
      	config/arm/lib1funcs.asm, config/arm/neon-schedgen.ml,
      	config/avr/avr.c, config/avr/avr.md, config/bfin/bfin.c,
      	config/darwin9.h, config/darwin.c, config/darwin.h,
      	config/h8300/h8300.c, config/i386/cpuid.h, config/i386/cygming.h,
      	config/i386/cygwin.h, config/i386/mingw32.h, config/i386/msformat-c.c,
      	config/i386/sol2-10.h, config/i386/xopintrin.h, config/ia64/ia64.c,
      	config/ia64/ia64.md, config/ia64/sync.md, config/mep/mep.c,
      	config/mips/mips.md, config/mn10300/mn10300.c,
      	config/mn10300/mn10300.h, config/pa/pa.c, config/pa/pa.md,
      	config/rs6000/aix.h, config/rs6000/dfp.md,
      	config/rs6000/rs6000-builtin.def, config/rs6000/rs6000-c.c,
      	config/rs6000/vector.md, config/rtems.h, config/rx/rx.md,
      	config/s390/s390.md, config/sol2-c.c, config/sparc/sol2-bi.h,
      	config/sparc/sol2-gas.h, config/sparc/sparc.h, config/sparc/sparc.md,
      	config/sparc/sparc-protos.h, config/spu/spu.c, config/spu/spu-c.c,
      	config/t-darwin, convert.c, c.opt, c-opts.c, cp/Make-lang.in,
      	c-pretty-print.c, c-typeck.c, df-core.c, df-scan.c, diagnostic.c,
      	diagnostic.h, doc/cppopts.texi, doc/cpp.texi, doc/extend.texi,
      	doc/gimple.texi, doc/languages.texi, doc/plugins.texi, doc/rtl.texi,
      	doc/standards.texi, doc/tree-ssa.texi, doc/trouble.texi, dominance.c,
      	fold-const.c, fortran/Make-lang.in, fwprop.c, gcc-plugin.h,
      	gensupport.c, gimple.h, gimple-iterator.c, graphite.c,
      	graphite-clast-to-gimple.c, graphite-clast-to-gimple.h,
      	graphite-dependences.c, graphite-poly.c, graphite-poly.h,
      	graphite-ppl.c, graphite-ppl.h, graphite-scop-detection.c,
      	graphite-sese-to-poly.c, graphite-sese-to-poly.h, ifcvt.c, intl.c,
      	intl.h, ipa.c, ipa-cp.c, ipa-inline.c, ipa-prop.c, ipa-prop.h,
      	ipa-pure-const.c, ipa-reference.c, ipa-type-escape.c, ira-color.c,
      	ira-conflicts.c, ira-lives.c, java/Make-lang.in, lambda-code.c,
      	loop-invariant.c, lto/Make-lang.in, lto-streamer.h, lto-streamer-in.c,
      	objc/Make-lang.in, objcp/Make-lang.in, omp-low.c, optc-gen.awk,
      	opt-functions.awk, opth-gen.awk, params.def, passes.c,
      	postreload-gcse.c, print-tree.c, recog.c, regrename.c, reload.h,
      	rtl.def, sched-int.h, sched-rgn.c, sel-sched-dump.c, sese.c, sese.h,
      	store-motion.c, stor-layout.c, tree-cfgcleanup.c, tree-chrec.c,
      	tree-complex.c, tree-data-ref.c, tree.def, tree-eh.c, tree-flow.h,
      	tree-flow-inline.h, tree.h, tree-loop-distribution.c, tree-outof-ssa.c,
      	tree-parloops.c, tree-pass.h, tree-predcom.c, tree-profile.c,
      	tree-scalar-evolution.c, tree-ssa-address.c, tree-ssa-alias.c,
      	tree-ssa-coalesce.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dom.c,
      	tree-ssa-dse.c, tree-ssa-loop-im.c, tree-ssa-loop-ivcanon.c,
      	tree-ssa-loop-manip.c, tree-ssa-math-opts.c, tree-ssa-operands.c,
      	tree-ssa-pre.c, tree-ssa-sccvn.c, tree-ssa-structalias.c,
      	tree-ssa-uncprop.c, tree-tailcall.c, tree-vect-data-refs.c,
      	tree-vect-loop.c, tree-vectorizer.h, tree-vect-slp.c, tree-vrp.c,
      	unwind-dw2-fde-darwin.c, varpool.c: Update copyright years.
      
      From-SVN: r157950
      Steven Bosscher committed
  6. 31 Mar, 2010 1 commit
  7. 22 Feb, 2010 1 commit
    • If a pass occurs in several pass lists... · 669887fc
      If a pass occurs in several pass lists, like pass_cleanup_eh which occurs in
      both all_small_ipa_passes and all_passes, make sure all instances of it are
      considered for replacement/insertion when ref_pass_instance_number is zero,
      not just the instance in the first pass list.
      
      From-SVN: r156961
      Duncan Sands committed
  8. 13 Jan, 2010 1 commit
    • re PR middle-end/42678 (ICE with lto1 in expand_mult, at expmed.c:3253) · 688a482d
      2010-01-13  Richard Guenther  <rguenther@suse.de>
      
      	PR lto/42678
      	* tree-pass.h (PROP_gimple_lcx): New.
      	* cfgexpand.c (pass_expand): Require PROP_gimple_lcx.
      	* passes.c (init_optimization_passes): Move pass_lower_complex_O0
      	before the final cleanup_eh.
      	(dump_properties): Dump PROP_gimple_lcx.
      	* tree-complex.c (pass_lower_complex): Provide PROP_gimple_lcx.
      	(tree_lower_complex_O0): Remove.
      	(gate_no_optimization): Run if PROP_gimple_lcx is not set.
      	(pass_lower_complex_O0): Provide PROP_gimple_lcx.  Run
      	tree_lower_complex, schedule TODO_update_ssa.
      	* lto-streamer-out.c (output_function): Stream the functions
      	properties.
      	* lto-streamer-in.c (input_function): Likewise.
      	(lto_read_body): Do not override them here.
      
      	* gfortran.dg/lto/20100110-1_0.f90: New testcase.
      
      From-SVN: r155853
      Richard Guenther committed
  9. 19 Dec, 2009 1 commit
    • Makefile.in (PLUGIN_HEADERS): Add more headers. · 2a5e9d16
              * Makefile.in (PLUGIN_HEADERS): Add more headers.
      
              * tree-pass.h (GCC_PASS_LISTS): Define.
              (PASS_LIST_NO_all_lowering_passes): New enumeration value.
              (PASS_LIST_NO_all_small_ipa_passes): Likewise.
              (PASS_LIST_NO_all_regular_ipa_passes): Likewise.
              (PASS_LIST_NO_all_lto_gen_passes): Likewise.
              (PASS_LIST_NO_all_passes): Likewise.
              (PASS_LIST_NUM): Likewise.
              (gcc_pass_lists): Declare.
              * passes.c (gcc_pass_lists): Define.
      
      From-SVN: r155354
      Joern Rennecke committed
  10. 11 Dec, 2009 1 commit
  11. 01 Dec, 2009 1 commit
    • cgraphunit.c (plugin.h): Include. · 090fa0ab
      2009-12-01  Grigori Fursin  <grigori.fursin@inria.fr>
                  Joern Rennecke  <amylaar@spamcop.net>
      
              * cgraphunit.c (plugin.h): Include.
              (ipa_passes): Invoke PLUGIN_ALL_IPA_PASSES_START /
              PLUGIN_ALL_IPA_PASSES_END at start / end of processing.
              * gcc-plugin.h (highlev-plugin-common.h, hashtab.h): Include.
              (enum plugin_event): Define by including plugin.def.
              Last enumerator is now called PLUGIN_EVENT_FIRST_DYNAMIC.
              (plugin_event_name): Change type to const char **.
              (get_event_last, get_named_event_id, unregister_callback): Declare.
              (register_callback): Change type of event argument to int.
              (highlev-plugin-common.h): New file.
              * Makefile.in (GCC_PLUGIN_H): Add highlev-plugin-common.h and
              $(HASHTAB_H)
              (tree-optimize.o passes.o): Depend on $(PLUGIN_H).
              (PLUGIN_HEADERS): Add opts.h, $(PARAMS_H) and plugin.def.
              (s-header-vars): New rule.
              (install-plugin): Depend on s-header-vars.  Install b-header-vars.
              * params.c (get_num_compiler_params): New function.
              * params.h (get_num_compiler_params): Declare.
              * passes.c (plugin.h): Include.
              (make_pass_instance): Invoke PLUGIN_NEW_PASS.
              (do_per_function_toporder, pass_init_dump_file): No longer static.
              (pass_fini_dump_file): Likewise.
              (execute_one_pass): Likewise.  Invoke PLUGIN_OVERRIDE_GATE and
              PLUGIN_PASS_EXECUTION.
              (execute_ipa_pass_list): Invoke PLUGIN_EARLY_GIMPLE_PASSES_START and
              PLUGIN_EARLY_GIMPLE_PASSES_END.
              * plugin.c (plugin_event_name_init): New array, defined by
              including plugin.def.
              (FMT_FOR_PLUGIN_EVENT): Update.
              (plugin_event_name): Change type to const char ** and initialize
              to plugin_event_name_init.
              (event_tab, event_last, event_horizon): New variable.
              (get_event_last): New function.
              (plugin_callbacks_init): New array.
              (plugin_callbacks: Change type to struct callback_info **.
              Initialize to plugin_callbacks_init.
              (htab_event_eq, get_named_event_id, unregister_callback): New function.
              (invoke_plugin_va_callbacks): Likewise.
              (register_callback): Change type of event argument to int.
              Handle new events.  Allow dynamic events.
              (invoke_plugin_callbacks): Likewise.  Return success status.
              (plugins_active_p): Allow dynamic callbacks.
              * plugin.def: New file.
              * plugin.h (invoke_plugin_callbacks): Update prototype.
              (invoke_plugin_va_callbacks): Declare.
              * tree-optimize.c (plugin.h): Include.
              (tree_rest_of_compilation): Invoke PLUGIN_ALL_PASSES_START and
              PLUGIN_ALL_PASSES_END.
              * tree-pass.h (execute_one_pass, pass_init_dump_file): Declare.
              (pass_fini_dump_file, do_per_function_toporder): Likewise.
              * doc/plugin.texi: Document new event types.
      
      Co-Authored-By: Joern Rennecke <amylaar@spamcop.net>
      
      From-SVN: r154877
      Grigori Fursin committed
  12. 25 Nov, 2009 1 commit
    • Remove trailing white spaces. · b8698a0f
      2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* alias.c: Remove trailing white spaces.
      	* alloc-pool.c: Likewise.
      	* alloc-pool.h: Likewise.
      	* attribs.c: Likewise.
      	* auto-inc-dec.c: Likewise.
      	* basic-block.h: Likewise.
      	* bb-reorder.c: Likewise.
      	* bt-load.c: Likewise.
      	* builtins.c: Likewise.
      	* builtins.def: Likewise.
      	* c-common.c: Likewise.
      	* c-common.h: Likewise.
      	* c-cppbuiltin.c: Likewise.
      	* c-decl.c: Likewise.
      	* c-format.c: Likewise.
      	* c-lex.c: Likewise.
      	* c-omp.c: Likewise.
      	* c-opts.c: Likewise.
      	* c-parser.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* c-tree.h: Likewise.
      	* c-typeck.c: Likewise.
      	* caller-save.c: Likewise.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cfglayout.c: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphbuild.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* cif-code.def: Likewise.
      	* collect2.c: Likewise.
      	* combine.c: Likewise.
      	* convert.c: Likewise.
      	* coverage.c: Likewise.
      	* crtstuff.c: Likewise.
      	* cse.c: Likewise.
      	* cselib.c: Likewise.
      	* dbgcnt.c: Likewise.
      	* dbgcnt.def: Likewise.
      	* dbgcnt.h: Likewise.
      	* dbxout.c: Likewise.
      	* dce.c: Likewise.
      	* ddg.c: Likewise.
      	* ddg.h: Likewise.
      	* defaults.h: Likewise.
      	* df-byte-scan.c: Likewise.
      	* df-core.c: Likewise.
      	* df-problems.c: Likewise.
      	* df-scan.c: Likewise.
      	* df.h: Likewise.
      	* dfp.c: Likewise.
      	* diagnostic.c: Likewise.
      	* diagnostic.h: Likewise.
      	* dominance.c: Likewise.
      	* domwalk.c: Likewise.
      	* double-int.c: Likewise.
      	* double-int.h: Likewise.
      	* dse.c: Likewise.
      	* dwarf2asm.c: Likewise.
      	* dwarf2asm.h: Likewise.
      	* dwarf2out.c: Likewise.
      	* ebitmap.c: Likewise.
      	* ebitmap.h: Likewise.
      	* emit-rtl.c: Likewise.
      	* et-forest.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* expmed.c: Likewise.
      	* expr.c: Likewise.
      	* expr.h: Likewise.
      	* final.c: Likewise.
      	* flags.h: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* function.h: Likewise.
      	* fwprop.c: Likewise.
      	* gcc.c: Likewise.
      	* gcov-dump.c: Likewise.
      	* gcov-io.c: Likewise.
      	* gcov-io.h: Likewise.
      	* gcov.c: Likewise.
      	* gcse.c: Likewise.
      	* genattr.c: Likewise.
      	* genattrtab.c: Likewise.
      	* genautomata.c: Likewise.
      	* genchecksum.c: Likewise.
      	* genconfig.c: Likewise.
      	* genflags.c: Likewise.
      	* gengtype-parse.c: Likewise.
      	* gengtype.c: Likewise.
      	* gengtype.h: Likewise.
      	* genmddeps.c: Likewise.
      	* genmodes.c: Likewise.
      	* genopinit.c: Likewise.
      	* genpreds.c: Likewise.
      	* gensupport.c: Likewise.
      	* ggc-common.c: Likewise.
      	* ggc-page.c: Likewise.
      	* ggc-zone.c: Likewise.
      	* ggc.h: Likewise.
      	* gimple-iterator.c: Likewise.
      	* gimple-low.c: Likewise.
      	* gimple-pretty-print.c: Likewise.
      	* gimple.c: Likewise.
      	* gimple.def: Likewise.
      	* gimple.h: Likewise.
      	* gimplify.c: Likewise.
      	* graphds.c: Likewise.
      	* graphite-clast-to-gimple.c: Likewise.
      	* gthr-nks.h: Likewise.
      	* gthr-posix.c: Likewise.
      	* gthr-posix.h: Likewise.
      	* gthr-posix95.h: Likewise.
      	* gthr-single.h: Likewise.
      	* gthr-tpf.h: Likewise.
      	* gthr-vxworks.h: Likewise.
      	* gthr.h: Likewise.
      	* haifa-sched.c: Likewise.
      	* hard-reg-set.h: Likewise.
      	* hooks.c: Likewise.
      	* hooks.h: Likewise.
      	* hosthooks.h: Likewise.
      	* hwint.h: Likewise.
      	* ifcvt.c: Likewise.
      	* incpath.c: Likewise.
      	* init-regs.c: Likewise.
      	* integrate.c: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* ipa-reference.c: Likewise.
      	* ipa-struct-reorg.c: Likewise.
      	* ipa-struct-reorg.h: Likewise.
      	* ipa-type-escape.c: Likewise.
      	* ipa-type-escape.h: Likewise.
      	* ipa-utils.c: Likewise.
      	* ipa-utils.h: Likewise.
      	* ipa.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-conflicts.c: Likewise.
      	* ira-costs.c: Likewise.
      	* ira-emit.c: Likewise.
      	* ira-int.h: Likewise.
      	* ira-lives.c: Likewise.
      	* ira.c: Likewise.
      	* jump.c: Likewise.
      	* lambda-code.c: Likewise.
      	* lambda-mat.c: Likewise.
      	* lambda-trans.c: Likewise.
      	* lambda.h: Likewise.
      	* langhooks.c: Likewise.
      	* lcm.c: Likewise.
      	* libgcov.c: Likewise.
      	* lists.c: Likewise.
      	* loop-doloop.c: Likewise.
      	* loop-init.c: Likewise.
      	* loop-invariant.c: Likewise.
      	* loop-iv.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* lower-subreg.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-compress.c: Likewise.
      	* lto-opts.c: Likewise.
      	* lto-section-in.c: Likewise.
      	* lto-section-out.c: Likewise.
      	* lto-streamer-in.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* lto-streamer.c: Likewise.
      	* lto-streamer.h: Likewise.
      	* lto-symtab.c: Likewise.
      	* lto-wpa-fixup.c: Likewise.
      	* matrix-reorg.c: Likewise.
      	* mcf.c: Likewise.
      	* mode-switching.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* omega.c: Likewise.
      	* omega.h: Likewise.
      	* omp-low.c: Likewise.
      	* optabs.c: Likewise.
      	* optabs.h: Likewise.
      	* opts-common.c: Likewise.
      	* opts.c: Likewise.
      	* params.def: Likewise.
      	* params.h: Likewise.
      	* passes.c: Likewise.
      	* plugin.c: Likewise.
      	* postreload-gcse.c: Likewise.
      	* postreload.c: Likewise.
      	* predict.c: Likewise.
      	* predict.def: Likewise.
      	* pretty-print.c: Likewise.
      	* pretty-print.h: Likewise.
      	* print-rtl.c: Likewise.
      	* print-tree.c: Likewise.
      	* profile.c: Likewise.
      	* read-rtl.c: Likewise.
      	* real.c: Likewise.
      	* recog.c: Likewise.
      	* reg-stack.c: Likewise.
      	* regcprop.c: Likewise.
      	* reginfo.c: Likewise.
      	* regmove.c: Likewise.
      	* regrename.c: Likewise.
      	* regs.h: Likewise.
      	* regstat.c: Likewise.
      	* reload.c: Likewise.
      	* reload1.c: Likewise.
      	* resource.c: Likewise.
      	* rtl.c: Likewise.
      	* rtl.def: Likewise.
      	* rtl.h: Likewise.
      	* rtlanal.c: Likewise.
      	* sbitmap.c: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-int.h: Likewise.
      	* sched-rgn.c: Likewise.
      	* sched-vis.c: Likewise.
      	* sdbout.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-dump.h: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched-ir.h: Likewise.
      	* sel-sched.c: Likewise.
      	* sel-sched.h: Likewise.
      	* sese.c: Likewise.
      	* sese.h: Likewise.
      	* simplify-rtx.c: Likewise.
      	* stack-ptr-mod.c: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* stringpool.c: Likewise.
      	* stub-objc.c: Likewise.
      	* sync-builtins.def: Likewise.
      	* target-def.h: Likewise.
      	* target.h: Likewise.
      	* targhooks.c: Likewise.
      	* targhooks.h: Likewise.
      	* timevar.c: Likewise.
      	* tlink.c: Likewise.
      	* toplev.c: Likewise.
      	* toplev.h: Likewise.
      	* tracer.c: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-affine.h: Likewise.
      	* tree-browser.def: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-chrec.c: Likewise.
      	* tree-chrec.h: Likewise.
      	* tree-complex.c: Likewise.
      	* tree-data-ref.c: Likewise.
      	* tree-data-ref.h: Likewise.
      	* tree-dfa.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-dump.h: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-flow-inline.h: Likewise.
      	* tree-flow.h: Likewise.
      	* tree-if-conv.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-loop-linear.c: Likewise.
      	* tree-mudflap.c: Likewise.
      	* tree-nested.c: Likewise.
      	* tree-nomudflap.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-pass.h: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-profile.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree-ssa-copy.c: Likewise.
      	* tree-ssa-copyrename.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-dse.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-ifcombine.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-ssa-loop-ch.c: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-ssa-loop-unswitch.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* tree-ssa-operands.h: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* tree-ssa-reassoc.c: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-sink.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-ter.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-tailcall.c: Likewise.
      	* tree-vect-data-refs.c: Likewise.
      	* tree-vect-generic.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* tree-vect-loop.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-vect-slp.c: Likewise.
      	* tree-vect-stmts.c: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* tree-vectorizer.h: Likewise.
      	* tree-vrp.c: Likewise.
      	* tree.c: Likewise.
      	* tree.def: Likewise.
      	* tree.h: Likewise.
      	* treestruct.def: Likewise.
      	* unwind-compat.c: Likewise.
      	* unwind-dw2-fde-glibc.c: Likewise.
      	* unwind-dw2.c: Likewise.
      	* value-prof.c: Likewise.
      	* value-prof.h: Likewise.
      	* var-tracking.c: Likewise.
      	* varasm.c: Likewise.
      	* varpool.c: Likewise.
      	* vec.c: Likewise.
      	* vec.h: Likewise.
      	* vmsdbgout.c: Likewise.
      	* web.c: Likewise.
      	* xcoffout.c: Likewise.
      
      From-SVN: r154645
      H.J. Lu committed
  13. 18 Nov, 2009 1 commit
  14. 16 Nov, 2009 1 commit
    • cgraph.c (cgraph_release_function_body): Update use of ipa_transforms_to_apply. · 0e3776db
      	* cgraph.c (cgraph_release_function_body): Update use of
      	ipa_transforms_to_apply.
      	(cgraph_remove_node): Remove ipa_transforms_to_apply.
      	* cgraph.h (struct cgraph_node): Add ipa_transforms_to_apply.
      	* cgraphunit.c (save_inline_function_body): Clear ipa_transforms for
      	copied body.
      	(cgraph_materialize_clone): Remove original if dead.
      	* lto-streamer-in.c (lto_read_body): Remove FIXME and
      	ipa_transforms_to_apply hack.
      	* function.h (struct function): Add ipa_transforms_to_apply.
      	* ipa.c (cgraph_remove_unreachable_nodes): Handle dead clone originals.
      	* tree-inline.c (copy_bb): Update sanity check.
      	(initialize_cfun): Do not copy ipa_transforms_to_apply.
      	(expand_call_inline): remove dead clone originals.
      	(tree_function_versioning): Merge transformation queues.
      	* passes.c (add_ipa_transform_pass): Remove.
      	(execute_one_ipa_transform_pass): Update ipa_transforms_to_apply
      	tracking.
      	(execute_all_ipa_transforms): Update.
      	(execute_one_pass): Update.
      
      	* lto.c (read_cgraph_and_symbols): Set also ipa_transforms_to_apply.
      
      From-SVN: r154200
      Jan Hubicka committed
  15. 10 Nov, 2009 1 commit
    • tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field. · 2c5721d9
      2009-11-10  Martin Jambor  <mjambor@suse.cz>
      
      	* tree-pass.h (struct ipa_opt_pass_d): Added stmt_fixup field.
      	(execute_all_ipa_stmt_fixups): Declare.
      	* ipa-cp.c (pass_ipa_cp): Added stmt_fixup value.
      	* ipa-inline.c (pass_ipa_inline): Likewise.
      	* ipa-pure-const.c (pass_ipa_pure_cons): Likewise.
      	* ipa-reference.c (pass_ipa_reference): Likewise.
      	* ipa.c (pass_ipa_whole_program_visibility): Likewise.
      	* lto-streamer-out.c (pass_ipa_lto_gimple_out): Likewise.
      	(pass_ipa_lto_finish_out): Likewise.
      	* lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Likewise.
      	* passes.c (execute_ipa_stmt_fixups): New function.
      	(execute_all_ipa_stmt_fixups): New function.
      	* lto-streamer-in.c (input_function): Call execute_all_ipa_stmt_fixups.
      
      From-SVN: r154064
      Martin Jambor committed
  16. 08 Nov, 2009 1 commit
    • cfgrtl.c (pass_free_cfg): Add pass name. · e0a42b0f
              * cfgrtl.c (pass_free_cfg): Add pass name.
              * cgraphbuild.c (pass_build_cgraph_edges): Likewise.
              (pass_rebuild_cgraph_edges, pass_remove_cgraph_callee_edges): Likewise.
              * dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Change pass name.
              * df-core.c (pass_df_initialize_no_opt): Likewise.
              * except.c (pass_rtl_eh): Likewise.
              * function.c (pass_init_function, pass_leaf_regs): Likewise.
              * gcse.c (pass_rtl_pre): Change pass name.
              * passes.c (pass_postreload): Add pass name.
              (make_pass_instance): Don't use duplicate-tracking logic for
              names starting with '*'.
              (next_pass_1): Assert that pass has a name.
              (register_one_dump_file): If there is an space in the name,
              skip past it.
              * predict.c (pass_strip_predict_hints): Add pass name.
              * reg-stack.c (pass_stack_regs): Likewise.
              * stack-ptr-mod.c (pass_stack_ptr_mod): Likewise.
              * tree-cfg.c (pass_warn_function_return,
              pass_warn_function_noreturn): Add pass name.
              * tree-dfa.c (pass_referenced_vars): Likewise.
              * tree-optimize.c (pass_cleanup_cfg_post_optimizing):
              Fix whitespace before comment.
              (pass_fixup_cfg): Add pass name, fix whitespace before comment.
              (pass_init_datastructures): Add pass name.
              * tree-ssa-loop.c (pass_record_bounds): Likewise.
              * tree-ssa.c (pass_early_warn_uninitialized,
              pass_late_warn_uninitialized): Likewise.
              * tree.c (pass_ipa_free_lang_data): Likewise.
              * doc/passes.texi (pass manager): Document how to disambiguate
              pass names.
      
      Co-Authored-By: Joern Rennecke <amylaar@spamcop.net>
      
      From-SVN: r154013
      Zbigniew Chamski committed
  17. 29 Oct, 2009 1 commit
    • tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove. · 44e82499
      	* tree-ssa-math-opts.c (execute_convert_to_rsqrt): Remove.
      	(gate_convert_to_rsqrt): Ditto.
      	(pass_convert_to_rsqrt): Ditto.
      	* tree-pass.h (pass_convert_to_rsqrt): Don't declare.
      	* passes.c (init_optimization_passes): Don't add pass_convert_to_rsqrt
      	to pass list.
      
      	* config/i386/i386.c (ix86_emit_swdivsf): Change evaluation order.
      
      testsuite/
      	* gcc.target/i386/sse-recip.c: Use fabsf instead of != .
      	* gcc.target/i386/sse-recip-vec.c: Ditto.
      	* gcc.target/i386/brokensqrt.c: New test.
      
      From-SVN: r153713
      Michael Matz committed
  18. 22 Oct, 2009 1 commit
    • ipa-cp.c (ipcp_write_summary, [...]): New functions. · fb3f88cc
      	* ipa-cp.c (ipcp_write_summary, ipcp_read_summary): New functions.
      	(pass_ipa_cp): Register them.
      	(ipcp_init_stage): Analyze all functions for whopr/lto.
      	(ipcp_propagate_stage): Skip external calls.
      	(ipcp_iterate_stage): Call ipa_update_after_lto_read if needed.
      	* ipa-reference.c (write_node_summary_p): Fix thinko about availability.
      	* cgraphunit.c (ipa_passes): When in lto, ne er produce new summaries;
      	when in ltrans, skip executing of ipa passes since everything should've
      	been done.
      	* ipa-inline.c (cgraph_decide_inlining): Remove FIXMEs.
      	(inline_generate_summary): Likewise.
      	(inline_read_summary): New function.
      	(inline_write_summary): New function.
      	(pass_ipa_inline): Register new hooks.
      	* ipa-prop.c: Inlcude lto-streamer.h
      	(ipa_edge_args_vector): Update declaration.
      	(ipa_count_arguments, ipa_compute_jump_functions,
      	ipa_free_edge_args_substructures): Move ipa_edge_args_vector into ggc.
      	(ipa_write_jump_function, ipa_read_jump_function, ipa_write_node_info,
      	ipa_read_node_info): New static functions.
      	(ipa_prop_write_jump_functions, ipa_prop_read_jump_functions): Update.
      	(duplicate_array): Use xmalloc.
      	(duplicate_ggc_array): New.
      	(ipa_edge_duplication_hook): Use it.
      	(ipa_update_after_lto_read): New function.
      	* ipa-prop.h (ipa_prop_write_jump_functions,
      	ipa_prop_read_jump_functions): Declare.
      	(ipa_pass_through_data, ipa_ancestor_jf_data, ipa_member_ptr_cst,
      	jump_func_value, ipa_member_ptr_cst, ipa_edge_args): Add GTY markers.
      	(ipa_edge_args_vector): Move into GGC.
      	(ipa_check_create_edge_args): Update.
      	(ipa_update_after_lto_read): New.
      	* passes.c (ipa_write_summaries_1): When in wpa, do not write summaries.
      	(ipa_read_summaries): When in ltrans, so not read summaries.
      	* lto-streamer.c (lto_get_section_name): Add LTO_section_jump_functions.
      	* lto-streamer.h (LTO_section_jump_functions): New section.
      	(produce_asm): Declare.
      	* lto-cgraph.c (output_cgraph): Output edges in reverse order.
      	* lto-streamer-out.c (produce_asm): Export.
      	* lto-streamer-in.c: Include tree-pass.h
      	(input_function): Free dominance info when done.
      	(lto_read_body): Push ipa_inline in ltrans stage.
      	* gengtype.c (open_base_files): Add ipa-prop.h into includes.
      	* Makefile.in (GTFILES): Add ipa-prop.h
      
      	* lto.c (lto_fixup_jump_functions): New function.
      	(lto_fixup_decls): Use it.
      
      From-SVN: r153449
      Jan Hubicka committed
  19. 14 Oct, 2009 1 commit
    • params.def (PARAM_IRA_LOOP_RESERVED_REGS): New. · 1833192f
      2009-09-26  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* params.def (PARAM_IRA_LOOP_RESERVED_REGS): New.
      	* params.h (IRA_LOOP_RESERVED_REGS): New
      	* tree-pass.h (pass_subregs_of_mode_init,
      	pass_subregs_of_mode_finish): Remove.
      	* passes.c (pass_subregs_of_mode_init,
      	pass_subregs_of_mode_finish): Remove.
      	(pass_reginfo_init): Move before loop optimizations.
      	* config/i386/i386.h (STACK_REG_COVER_CLASS): Define.
      	* common.opt (fira-loop-pressure): New.
      	* toplev.h (flag_ira_loop_pressure): New.
      	* rtl.h (init_subregs_of_mode, finish_subregs_of_mode): New
      	externals.
      	* reginfo.c (init_subregs_of_mode, finish_subregs_of_mode):
      	Make external and void type functions.
      	(gate_subregs_of_mode_init, pass_subregs_of_mode_init,
      	pass_subregs_of_mode_finish): Remove.
      	* ira-costs.c (init_costs): Call init_subregs_of_mode.
      	* regmove.c: Include ira.h.
      	(regmove_optimize): Call ira_set_pseudo_classes after IRA based
      	register pressure calculation in loops.
      	* loop-invariant.c: Include REGS_H and ira.h.
      	(struct loop_data): New members max_reg_pressure, regs_ref, and
      	regs_live.
      	(struct invariant): New member orig_regno.
      	(curr_loop): New variable.
      	(find_exits): Initialize regs_ref and regs_live.
      	(create_new_invariant): Initialize orig_regno.
      	(get_cover_class_and_nregs): New.
      	(get_inv_cost): Make aregs_needed an array.  Use regs_needed as an
      	array.  Add code for flag_ira_loop_pressure.
      	(gain_for_invariant): Make new_regs an array.  Add code for
      	flag_ira_loop_pressure.
      	(best_gain_for_invariant): Ditto.
      	(set_move_mark): New parameter gain.  Use it for debugging output.
      	(find_invariants_to_move): Make regs_needed and new_regs an array.
      	Add code for flag_ira_loop_pressure.
      	(move_invariant_reg): Set up orig_regno.
      	(move_invariants): Set up reg classes for pseudos for
      	flag_ira_loop_pressure.
      	(free_loop_data): Clear regs_ref and regs_live.
      	(curr_regs_live, curr_reg_pressure, regs_set, n_regs_set,
      	get_regno_cover_class, change_pressure, mark_regno_live,
      	mark_regno_death, mark_reg_store, mark_reg_clobber,
      	mark_reg_death, mark_ref_regs, calculate_loop_reg_pressure): New.
      	(move_loop_invariants): Calculate pressure.  Initialize curr_loop.
      	* ira.c (ira): Call ira_set_pseudo_classes after IRA based
      	register pressure calculation in loops if new regs were added.
      	Call finish_subregs_of_mode.
      	* opts.c (decode_options): Set up flag_ira_loop_pressure.
      	* Makefile.in (loop-invariant.o): Add ira.h.
      	(regmove.o): Ditto.
      	* doc/invoke.texi (-fira-loop-pressure, ira-loop-reserved-regs):
      	Describe.
      	* doc/tm.texi (STACK_REG_COVER_CLASS): Describe.
      
      From-SVN: r152770
      Vladimir Makarov committed
  20. 13 Oct, 2009 1 commit
  21. 08 Oct, 2009 1 commit
    • re PR middle-end/41573 (segfault in trunk related to strings) · 6728ee79
      	PR middle-end/41573
      	* builtins.c (fold_builtin_isascii): Use fold_build2.
      	(fold_builtin_isdigit): Ditto.
      	* except.c (duplicate_eh_regions_1): Tolerate NULL labels.
      	* tree-cfg.c (struct rus_data, remove_useless_stmts_warn_notreached,
      	remove_useless_stmts_cond, remove_useless_stmts_tf,
      	remove_useless_stmts_tc, remove_useless_stmts_bind,
      	remove_useless_stmts_goto, remove_useless_stmts_label,
      	remove_useless_stmts_1, remove_useless_stmts,
      	pass_remove_useless_stmts): Remove.
      	* tree-pass.h (pass_remove_useless_stmts): Don't declare.
      	* passes.c (init_optimization_passes): Don't add
      	pass_remove_useless_stmts.
      	* tree-eh.c (lower_eh_constructs_2): Handle empty cleanups.
      	* tree.c (free_lang_data_in_decl): Don't clear DECL_INITIAL of
      	static constants.
      	* lto-symtab.c (lto_symtab_register_decl): Accepts DECL_INITIAL
      	for static constants.
      	* lto-streamer-out.c (output_gimple_stmt): Handle GIMPLE_NOP.
      	* lto-streamer-in.c (input_gimple_stmt): Handle GIMPLE_NOP.
      
      testsuite/
      	* gcc.dg/tree-ssa/foldstring-1.c: Use fre dump.
      	* gcc.dg/tree-ssa/useless-1.c: Use gimple dump.
      	* gcc.dg/pr41573.c: New test.
      
      From-SVN: r152563
      Michael Matz committed
  22. 07 Oct, 2009 1 commit
    • lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones has no address taken. · b20996ff
      	* lto-symtab.c (lto_cgraph_replace_node): Assert that inline clones has
      	no address taken.
      	* cgraph.c (cgraph_mark_needed_node): Assert that inline clones are
      	never needed.
      	(cgraph_clone_node): Clear externally_visible flag for clones.
      	* cgraph.h (cgraph_only_called_directly_p,
      	cgraph_can_remove_if_no_direct_calls_p): New predicates.
      	* tree-pass.h (pass_ipa_whole_program_visibility): Declare.
      	* ipa-cp.c (ipcp_cloning_candidate_p): Use new predicate.
      	(ipcp_initialize_node_lattices, ipcp_estimate_growth,
      	ipcp_insert_stage): Likwise.
      	* cgraphunit.c (cgraph_decide_is_function_needed): Do not compute
      	externally_visible flag.
      	(verify_cgraph_node): Verify that inline clones look right.
      	(process_function_and_variable_attributes): Do not set
      	externally_visible flags.
      	(ipa_passes): Avoid executing small_ipa_passes at LTO stage; they've
      	been already run.
      	* lto-cgraph.c (lto_output_node): Assert that inline clones are not
      	boundaries.
      	* ipa-inline.c (cgraph_clone_inlined_nodes): Use new predicates;
      	clear externally_visible when turning into inline clones
      	(cgraph_mark_inline_edge): Use new predicates.
      	(cgraph_estimate_growth): Likewise.
      	(cgraph_decide_inlining): Likewise.
      	* ipa.c (cgraph_postorder): Likewise.
      	(cgraph_remove_unreachable_nodes): Likewise; sanity check
      	that inline clones are not needed.
      	(cgraph_externally_visible_p): New predicate.
      	(function_and_variable_visibility): Add whole_program parameter;
      	always set externally_visible flag; handle COMDAT function
      	privatization.
      	(local_function_and_variable_visibility): New function.
      	(gate_whole_program_function_and_variable_visibility): New function.
      	(whole_program_function_and_variable_visibility): New function.
      	(pass_ipa_whole_program_visibility): New function.
      	* passes.c  (init_optimization_passes): Add whole program visibility
      	pass.
      	(do_per_function_toporder, function_called_by_processed_nodes_p): Do
      	not care about needed/reachable flags.
      	* varpool.c: Include flags.h
      	(decide_is_variable_needed): When doing LTO assume whole-program mode.
      	(varpool_finalize_decl): When we are in LTO read-back, all variables
      	are analyzed.
      	(varpool_analyze_pending_decls): Skip analyzis of analyzed vars.
      
      	* lto/lto.c (read_cgraph_and_symbols): Mark functions neccesary only at
      	ltrans stage; explain why this is needed and should not.
      
      From-SVN: r152520
      Jan Hubicka committed
  23. 03 Oct, 2009 1 commit
  24. 28 Sep, 2009 2 commits
    • tree-pass.h (register_pass_info): New structure. · b80b0fd9
      	* tree-pass.h (register_pass_info): New structure.	
      	(pass_positioning_ops): Move enum from gcc-plugin.h.
      	(register_pass): New function.
      	* gcc-plugin.h (plugin_pass): Delete structure.
      	(pass_positioning_ops): Delete enum.
      	* plugin.c (regsiter_pass): Delete function.
      	(position_pass): Delete function.
      	(added_pass_nodes): Delete variable.
      	(prev_added_pass_nodes): Delete variable.
      	(pass_list_node): Delete structure.
      	* passes.c (make_pass_instance): New function.
      	(next_pass_1): Change to call make_pass_instance.
      	(pass_list_node): Move structure from gcc-plugin.h.
      	(added_pass_nodes): Move variable from plugin.c.
      	(prev_added_pass_nodes): Move variable from plugin.c.
      	(position_pass): New function.
      	(register_pass): New function.
      
      From-SVN: r152257
      Sriraman Tallam committed
    • builtins.c (interclass_mathfn_icode): New helper. · 44e10129
      	* builtins.c (interclass_mathfn_icode): New helper.
      	(expand_builtin_interclass_mathfn): Use it here, and split folding
      	into ...
      	(fold_builtin_interclass_mathfn): ... this new folder.
      	(build_call_nofold_loc): New static helper.
      	(build_call_nofold): New wrapper macro for above.
      	(expand_builtin_int_roundingfn): Use it instead of build_call_expr.
      	(expand_builtin_pow): Ditto.
      	(expand_builtin_memset_args): Ditto.
      	(expand_builtin_printf): Ditto.
      	(expand_builtin_fprintf): Ditto.
      	(expand_builtin_sprintf): Ditto.
      	(expand_builtin_memory_chk): Ditto.
      	(expand_builtin_mempcpy_args): Ditto and don't call folders.
      	(expand_builtin_stpcpy): Ditto.
      	(expand_builtin_strcmp): Ditto.
      	(expand_builtin_strncmp): Ditto.
      	(expand_builtin_strcpy): Remove FNDECL and MODE arguments.
      	(expand_builtin_strcpy_args): Don't call folders.
      	(expand_builtin_memcmp): Ditto.
      	(expand_builtin_strncpy): Ditto, and use target.
      	(expand_builtin_memcpy): Ditto.
      	(expand_builtin_strstr, expand_builtin_strchr, expand_builtin_strrchr,
      	expand_builtin_strpbrk, expand_builtin_memmove,
      	expand_builtin_memmove_args, expand_builtin_bcopy,
      	expand_builtin_memchr, expand_builtin_strcat, expand_builtin_strncat,
      	expand_builtin_strspn, expand_builtin_strcspn,
      	expand_builtin_fputs): Remove these.
      	(expand_builtin): Don't call the above, change calls to other
      	expanders that changed prototype.
      	(fold_builtin_stpcpy): New folder split out from expand_builtin_stpcpy.
      	(fold_builtin_1 <ISFINITE, ISINF, ISNORMAL>): Call
      	fold_builtin_interclass_mathfn.
      	(fold_builtin_2 <STPCPY>): Call fold_builtin_stpcpy.
      	(fold_builtin_strcat): Add folding split from expand_builtin_strcat.
      
      	* fold-const.c (fold_binary_loc <NE_EXPR>): Add !exp != 0 -> !exp.
      	* passes.c (init_optimization_passes): Move pass_fold_builtins
      	after last phiopt pass.
      	* tree-inline.c (fold_marked_statements): When folding builtins
      	iterate over all instruction potentially generated.
      	* tree-ssa-ccp.c (gimplify_and_update_call_from_tree): Declare
      	earlier.
      	(fold_gimple_call): Use it to always fold calls (into potentially
      	multiple instructions).
      	* tree-ssa-dom.c (optimize_stmt): Resolve __builtin_constant_p
      	calls into zero at this time.
      	* tree-ssa-propagate.c (substitute_and_fold): Ignore multiple 
      	statements generated by builtin folding.
      
      testsuite/
      	* gcc.dg/builtins-44.c: Use __builtin_isinf_sign when checking
      	for sign of -Inf.
      
      From-SVN: r152236
      Michael Matz committed
  25. 17 Sep, 2009 1 commit
    • common.opt (fipa-sra): New switch. · 07ffa034
      2009-09-17  Martin Jambor  <mjambor@suse.cz>
      
      	* common.opt (fipa-sra): New switch.
      	* opts.c (decode_options): Turn flag_ipa_sra on for opt2.
      	* timevar.def (TV_IPA_SRA): New timevar.
      	* params.def (ipa-sra-ptr-growth-factor): New parameter.
      	* doc/invoke.texi: Document -fipa-sra and ipa-sra-ptr-growth-factor.
      	* tree-sra.c: Include cgraph.c.
      	(enum sra_mode): Added SRA_MODE_EARLY_IPA.
      	(struct access): Added fields stmt, grp_maybe_modified, grp_scalar_ptr
      	and grp_not_necessarilly_dereferenced.
      	(func_param_count): New variable.
      	(encountered_apply_args): New variable.
      	(bb_dereferences): New variable.
      	(final_bbs): New variable.
      	(no_accesses_representant): New variable.
      	(no_accesses_p): New function.
      	(dump_access): Dump the new fields.
      	(sra_initialize): Set encountered_apply_args to false.
      	(get_ssa_base_param): New function.
      	(mark_parm_dereference): New function.
      	(create_access): Caring for INIDRECT_REFs and different handling of
      	varialble length accesses in early IPA SRA.  Store the stmt - a new
      	parameter - to the new access.
      	(build_access_from_expr_1): New parameter stmt, passed to
      	create_access.  Handle INDIRECT_REFs.
      	(build_access_from_expr): Pass the current statement to
      	build_access_from_expr_1.
      	(disqualify_ops_if_throwing_stmt): Trigger only in intraprocedural
      	passes.
      	(build_accesses_from_assign): Pass the current statement to
      	build_access_from_expr_1.  Do not create assign links in IPA-SRA.
      	(scan_function): Call handle_ssa_defs on phi nodes.  Set bits in
      	final_bbs when necessary.  Check for calls to __builtin_apply_args.
      	Fixup EH info if anythng was changed.
      	(is_unused_scalar_param): New function.
      	(ptr_parm_has_direct_uses): New function.
      	(find_param_candidates): New function.
      	(mark_maybe_modified): New function.
      	(analyze_modified_params): New function.
      	(propagate_dereference_distances): New function.
      	(dump_dereferences_table): New function.
      	(analyze_caller_dereference_legality): New function.
      	(unmodified_by_ref_scalar_representative): New function.
      	(splice_param_accesses): New function.
      	(decide_one_param_reduction): New function.
      	(enum ipa_splicing_result): New type.
      	(splice_all_param_accesses): New function.
      	(get_param_index): New function.
      	(turn_representatives_into_adjustments): New function.
      	(analyze_all_param_acesses): New function.
      	(get_replaced_param_substitute): New function.
      	(get_adjustment_for_base): New function.
      	(replace_removed_params_ssa_names): New function.
      	(sra_ipa_reset_debug_stmts): New function.
      	(sra_ipa_modify_expr): New function.
      	(sra_ipa_modify_assign): New function.
      	(convert_callers): New function.
      	(modify_function): New function.
      	(ipa_sra_preliminary_function_checks): New function.
      	(ipa_early_sra): New function.
      	(ipa_early_sra_gate): New function.
      	(pass_early_ipa_sra): New variable.
      	* Makefile.in (tree-sra.o): Add cgraph.h to dependencies.
      	
      	Testsuite:
      
      	* gcc.dg/struct/wo_prof_escape_arg_to_local.c: Do not run IPA-SRA.
      	* gcc.dg/ipa/ipa-sra-1.c: New test.
      	* gcc.dg/ipa/ipa-sra-2.c: New test.
      	* gcc.dg/ipa/ipa-sra-3.c: New test.
      	* gcc.dg/ipa/ipa-sra-4.c: New test.
      	* gcc.dg/ipa/ipa-sra-5.c: New test.
      	* gcc.c-torture/execute/ipa-sra-1.c: New test.
      	* gcc.c-torture/execute/ipa-sra-2.c: New test.
      
      From-SVN: r151800
      Martin Jambor committed
  26. 14 Sep, 2009 1 commit
  27. 03 Sep, 2009 1 commit
    • [multiple changes] · 4537ec0c
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* c-lang.c (lang_hooks): Remove const qualifier.
      
      java/ChangeLog
      
      	* lang.c (lang_hooks): Remove const qualifier.
      
      objc/ChangeLog
      
      	* objc-lang.c (lang_hooks): Remove const qualifier.
      
      objcp/ChangeLog
      
      	* objcp-lang.c (lang_hooks): Remove const qualifier.
      
      ada/ChangeLog
      
      	* gcc-interface/misc.c (lang_hooks): Remove const qualifier.
      
      fortran/ChangeLog
      
      	* f95-lang.c (lang_hooks): Remove const qualifier.
      
      cp/ChangeLog
      
      	* cp-lang.c (lang_hooks): Remove const qualifier.
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* cgraph.c (cgraph_node_for_decl): New.
      	* cgraph.h (cgraph_node_for_decl): Declare.
      	* tree.c (host_integerp): Return 0 if T is NULL.
      
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* tree.h (struct alias_pair): Move from varasm.c.
      	(alias_pairs): Likewise.
      	(TYPE_MAXVAL): Define.
      	(TYPE_MINVAL): Define.
      	(iterative_hash_host_wide_int): Declare.
      	(remove_unreachable_alias_pairs): Declare.
      	* tree-pass.h (pass_ipa_free_lang_data): Declare.
      	* diagnostic.c (default_diagnostic_starter): Make extern.
      	(default_diagnostic_finalizer): Make extern.
      	* diagnostic.h (default_diagnostic_starter): Declare.
      	(default_diagnostic_finalizer): Declare.
      	(default_tree_printer): Declare.
      	* toplev.c (default_tree_printer): Make extern.
      
      
      2009-09-01  Richard Guenther  <rguenther@suse.de>
      	    Diego Novillo  <dnovillo@google.com>
      
      	* cgraph.c (cgraph_add_new_function): Remove gimplification.
      	* cgraphunit.c (cgraph_expand_function): Do not emit
      	associated thunks from here.
      	(cgraph_emit_thunks): New.
      	(cgraph_optimize): Call it.
      	Return if any IPA pass finds an error.
      	* varasm.c (finish_aliases_1): Ignore errorneous aliases used
      	by thunks.
      
      
      2009-09-01  Simon Baldwin  <simonb@google.com>
      	    Rafael Espindola  <espindola@google.com>
      	    Richard Guenther  <rguenther@suse.de>
      	    Doug Kwan  <dougkwan@google.com>
      	    Diego Novillo  <dnovillo@google.com>
      
      	* tree.c: Include tree-pass.h, langhooks-def.h,
      	diagnostic.h, cgraph.h, timevar.h, except.h and debug.h.
      	(free_lang_data_in_type): New.
      	(need_assembler_name_p): New.
      	(free_lang_data_in_block): New.
      	(free_lang_data_in_decl): New.
      	(struct free_lang_data_d): New.
      	(add_tree_to_fld_list): New.
      	(find_decls_types_r): New.
      	(get_eh_types_for_runtime): New.
      	(find_decls_types_in_eh_region): New.
      	(find_decls_types_in_node): New.
      	(find_decls_types_in_var): New.
      	(free_lang_data_in_cgraph): New.
      	(free_lang_data): New.
      	(gate_free_lang_data): New.
      	(pass_ipa_free_lang_data): New.
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* timevar.def (TV_IPA_FREE_LANG_DATA): Define.
      	* langhooks.h (struct lang_hooks): Add field free_lang_data.
      	(lang_hooks): Remove const qualifier.
      	* ipa.c (cgraph_remove_unreachable_nodes): Call
      	remove_unreachable_alias_pairs.
      	* except.c (add_type_for_runtime): Check if TYPE has
      	already been converted.
      	(lookup_type_for_runtime): Likewise.
      	(check_handled): Handle converted types.
      	* varasm.c (remove_unreachable_alias_pairs): New.
      	* gimple.c: Include demangle.h.
      	(gimple_decl_printable_name): New.
      	(gimple_fold_obj_type_ref): New.
      	* gimple.h (gimple_decl_printable_name): Declare.
      	(gimple_fold_obj_type_ref): Declare.
      	* passes.c (init_optimization_passes): Add pass
      	pass_ipa_free_lang_data.
      	* langhooks-def.h (LANG_HOOKS_FREE_LANG_DATA): Define.
      	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_FREE_LANG_DATA.
      
      testsuite/ChangeLog
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* gcc.dg/gomp/combined-1.c: Adjust expected pattern.
      	* g++.dg/tree-prof/inline_mismatch_args.C: Likewise.
      	* g++.dg/warn/unit-1.C: Likewise.
      	* g++.dg/ipa/iinline-1.C: Likewise.
      	* g++.dg/template/cond2.C: Adjust expected line location for the
      	error.
      	* g++.dg/template/pr35240.C: Likewise.
      
      
      cp/ChangeLog
      
      2009-09-01  Doug Kwan  <dougkwan@google.com>
      
      	* tree.c (cp_fix_function_decl_p): New.
      	(cp_free_lang_data): New.
      
      2009-09-01  Diego Novillo  <dnovillo@google.com>
      
      	* Make-lang.in (decl2.o): Add dependency on $(POINTER_SET_H).
      	* decl2.c: Include pointer-set.h.
      	(collect_candidates_for_java_method_aliases): New.
      	(cp_write_global_declarations): Call it.
      	Add local variable CANDIDATES.  If set, call
      	build_java_method_aliases.
      	(build_java_method_aliases): Add argument CANDIDATES.
      	Use it to determine if FNDECL should get a hidden alias.
      	* cp-objcp-common.h (LANG_HOOKS_FREE_LANG_DATA): Define.
      	* cp-tree.h (cp_free_lang_data): Declare.
      
      2009-09-03  Richard Guenther  <rguenther@suse.de>
      
      	* method.c (use_thunk): Use cgraph_finalize_function to hand
      	off thunks to the cgraph.
      	* semantics.c (emit_associated_thunks): Do not emit thunks
      	for really extern functions.
      
      From-SVN: r151360
      Diego Novillo committed
  28. 02 Sep, 2009 1 commit
    • invoke.texi (-fsched-pressure): Document it. · ce18efcb
      2009-09-02  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* doc/invoke.texi (-fsched-pressure): Document it.
      	(-fsched-reg-pressure-heuristic): Remove it.
      	
      	* reload.c (ira.h): Include.
      	(find_reloads): Add choosing reload on number of small spilled
      	classes.
      	
      	* haifa-sched.c (ira.h): Include.
      	(sched_pressure_p, sched_regno_cover_class, curr_reg_pressure,
      	saved_reg_pressure, curr_reg_live, saved_reg_live,
      	region_ref_regs): New variables.
      	(sched_init_region_reg_pressure_info, mark_regno_birth_or_death,
      	initiate_reg_pressure_info, setup_ref_regs,
      	initiate_bb_reg_pressure_info, save_reg_pressure,
      	restore_reg_pressure, dying_use_p, print_curr_reg_pressure): New
      	functions.
      	(setup_insn_reg_pressure_info): New function.
      	(rank_for_schedule): Add pressure checking and insn issue time.
      	Remove comparison of insn reg weights.
      	(ready_sort): Set insn reg pressure info.
      	(update_register_pressure, setup_insn_max_reg_pressure,
      	update_reg_and_insn_max_reg_pressure,
      	sched_setup_bb_reg_pressure_info): New functions.
      	(schedule_insn): Add code for printing and updating reg pressure
      	info.
      	(find_set_reg_weight, find_insn_reg_weight): Remove.
      	(ok_for_early_queue_removal): Do nothing if pressure_only_p.
      	(debug_ready_list): Print reg pressure info.
      	(schedule_block): Ditto.  Check insn issue time.
      	(sched_init): Set up sched_pressure_p.  Allocate and set up some
      	reg pressure related info.
      	(sched_finish): Free some reg pressure related info.
      	(fix_tick_ready): Make insn always ready if pressure_p.
      	(init_h_i_d): Don't call find_insn_reg_weight.
      	(haifa_finish_h_i_d): Free insn reg pressure info.
      	
      	* ira-int.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
      	ira_memory_move_cost, ira_class_hard_regs,
      	ira_class_hard_regs_num, ira_no_alloc_regs,
      	ira_available_class_regs, ira_reg_class_cover_size,
      	ira_reg_class_cover, ira_class_translate): Move to ira.h.
      
      	* ira-lives.c (single_reg_class): Check mode to find how many
      	registers are necessary for operand.
      	(ira_implicitly_set_insn_hard_regs): New.
      
      	* common.opt (fsched-pressure): New options.
      	(fsched-reg-pressure-heuristic): Remove.
      
      	* ira.c (setup_eliminable_regset): Rename to
      	ira_setup_eliminable_regset.  Make it external.
      	(expand_reg_info): Pass cover class to setup_reg_classes.
      	(ira): Call resize_reg_info instead of allocate_reg_info.
      
      	* sched-deps.c: Include ira.h.
      	(implicit_reg_pending_clobbers, implicit_reg_pending_uses): New.
      	(create_insn_reg_use, create_insn_reg_set, setup_insn_reg_uses,
      	reg_pressure_info, insn_use_p, mark_insn_pseudo_birth,
      	mark_insn_hard_regno_birth, mark_insn_reg_birth,
      	mark_pseudo_death, mark_hard_regno_death, mark_reg_death,
      	mark_insn_reg_store, mark_insn_reg_clobber,
      	setup_insn_reg_pressure_info): New.
      	(sched_analyze_1): Update implicit_reg_pending_uses.
      	(sched_analyze_insn): Find implicit sets, uses, clobbers of regs.
      	Use them to create dependencies.  Set insn reg uses and pressure
      	info.  Process reg_pending_uses in one place.
      	(free_deps): Free implicit sets.
      	(remove_from_deps): Remove implicit sets if necessary.  Check
      	implicit sets when clearing reg_last_in_use.
      	(init_deps_global): Clear implicit_reg_pending_clobbers and
      	implicit_reg_pending_uses.
      	
      	* ira.h (ira_hard_regno_cover_class, ira_reg_class_nregs,
      	ira_memory_move_cost, ira_class_hard_regs,
      	ira_class_hard_regs_num, ira_no_alloc_regs,
      	ira_available_class_regs, ira_reg_class_cover_size,
      	ira_reg_class_cover, ira_class_translate): Move from ira-int.h.
      	(ira_setup_eliminable_regset, ira_set_pseudo_classes,
      	ira_implicitly_set_insn_hard_regs): New prototypes.
      	
      	* ira-costs.c (pseudo_classes_defined_p, allocno_p,
      	cost_elements_num): New variables.
      	(allocno_costs, total_costs): Rename to costs and
      	total_allocno_costs.
      	(COSTS_OF_ALLOCNO): Rename to COSTS.
      	(allocno_pref): Rename to pref.
      	(allocno_pref_buffer): Rename to pref_buffer.
      	(common_classes): Rename to regno_cover_class.
      	(COST_INDEX): New.
      	(record_reg_classes): Set allocno attributes only if allocno_p.
      	(record_address_regs): Ditto.  Use COST_INDEX instead of
      	ALLOCNO_NUM.
      	(scan_one_insn): Use COST_INDEX and COSTS instead of ALLOCNO_NUM
      	and COSTS_OF_ALLOCNO.
      	(print_costs): Rename to print_allocno_costs.
      	(print_pseudo_costs): New.
      	(process_bb_node_for_costs): Split into 2 functions with new
      	function process_bb_for_costs.  Pass BB to process_bb_for_costs.
      	(find_allocno_class_costs): Rename to find_costs_and_classes.  Add
      	new parameter dump_file.  Use cost_elements_num instead of
      	ira_allocnos_num.  Make one iteration if preferred classes were
      	already calculated for scheduler.  Make 2 versions of code
      	depending on allocno_p.
      	(setup_allocno_cover_class_and_costs): Check allocno_p.  Use
      	regno_cover_class and COSTS instead of common_classes and
      	COSTS_OF_ALLOCNO.
      	(init_costs, finish_costs): New.
      	(ira_costs): Set up allocno_p and cost_elements_num.  Call
      	init_costs and finish_costs.
      	(ira_set_pseudo_classes): New.
      
      	* rtl.h (allocate_reg_info): Remove.
      	(resize_reg_info): Change return type.
      	(reg_cover_class): New.
      	(setup_reg_classes): Add new parameter.
      	
      	* sched-int.h (struct deps_reg): New member implicit_sets.
      	(sched_pressure_p, sched_regno_cover_class): New external
      	definitions.
      	(INCREASE_BITS): New macro.
      	(struct reg_pressure_data, struct reg_use_data): New.
      	(struct _haifa_insn_data): Remove reg_weight.  Add members
      	reg_pressure, reg_use_list, reg_set_list, and
      	reg_pressure_excess_cost_change.
      	(struct deps): New member implicit_sets.
      	(pressure_p): New variable.
      	(COVER_CLASS_BITS, INCREASE_BITS): New macros.
      	(struct reg_pressure_data, struct reg_use_data): New.
      	(INSN_REG_WEIGHT): Remove.
      	(INSN_REG_PRESSURE, INSN_MAX_REG_PRESSURE, INSN_REG_USE_LIST,
      	INSN_REG_SET_LIST, INSN_REG_PRESSURE_EXCESS_COST_CHANGE): New
      	macros.
      	(sched_init_region_reg_pressure_info,
      	sched_setup_bb_reg_pressure_info): New prototypes.
      	
              * reginfo.c (struct reg_pref): New member coverclass.
      	(reg_cover_class): New function.
      	(reginfo_init, pass_reginfo_init): Move after free_reg_info.
      	(reg_info_size): New variable.
      	(allocate_reg_info): Make static.  Setup reg_info_size.
      	(resize_reg_info): Use reg_info_size.  Return flag of resizing.
      	(setup_reg_classes): Add a new parameter.  Setup cover class too.
      
      	* Makefile.in (reload.o, haifa-sched.o, sched-deps.o): Add ira.h to the
      	dependencies.
      
      	* sched-rgn.c (deps_join): Set up implicit_sets.
      	(schedule_region): Set up region and basic blocks pressure
      	relative info.
      	
      	* passes.c (init_optimization_passes): Move
      	pass_subregs_of_mode_init before pass_sched.
      
      From-SVN: r151348
      Vladimir Makarov committed
  29. 31 Jul, 2009 1 commit
    • New implementation of Graphite. · 204b560f
      2009-07-30  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* Makefile.in (OBJS-common): Added dependence on graphite-blocking.o,
      	graphite-clast-to-gimple.o, graphite-dependences.o,
      	graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
      	graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o.
      	(graphite-blocking.o,
      	graphite-clast-to-gimple.o, graphite-dependences.o,
      	graphite-interchange.o, graphite-poly.o, graphite-ppl.o,
      	graphite-scop-detection.o, graphite-sese-to-poly.o, and sese.o): New.
      	* cfgloop.c (alloc_loop): Set loop->can_be_parallel to false.
      	* cfgloop.h (struct loop): Add can_be_parallel field.
      	* common.opt (fgraphite-identity): Moved up.
      	(fgraphite-force-parallel): New flag.
      	* graphite.c: Rewrite.
      	* graphite.h: Rewrite.
      	* passes.c (init_optimization_passes): Schedule a pass of DCE and LIM
      	after Graphite.
      	* toplev.c (graphite_out_file): New file descriptor.
      	(graphite_in_file): New.
      	(process_options): flag_graphite_force_parallel cannot be used without
      	Graphite.
      	* tree-ssa-loop.c: Include toplev.h.
      	(gate_graphite_transforms): Enable flag_graphite for
      	flag_graphite_force_parallel.
      
      From-SVN: r150301
      Sebastian Pop committed
  30. 17 Jul, 2009 1 commit
    • re PR c/40401 (ICE: verify_gimple failed) · a406865a
      2009-07-17  Richard Guenther  <rguenther@suse.de>
      
      	PR c/40401
      	* tree-pass.h (pass_diagnose_omp_blocks): Declare.
      	(pass_warn_unused_result): Likewise.
      	(TODO_set_props): Remove.
      	* omp-low.c (diagnose_omp_structured_block_errors): Change to
      	run as a pass.
      	(pass_diagnose_omp_blocks): Define.
      	* c-decl.c (pop_file_scope): Do not finalize the CU here.
      	(c_gimple_diagnostics_recursively): Remove.
      	(finish_function): Do not call it.
      	(c_write_global_declarations): Continue after errors.
      	Finalize the CU here.
      	* c-gimplify.c (c_genericize): Do not gimplify here.
      	* c-common.c (c_warn_unused_result): Move ...
      	* tree-cfg.c (do_warn_unused_result): ... here.
      	(run_warn_unused_result): New function.
      	(gate_warn_unused_result): New function.
      	(pass_warn_unused_result): New pass.
      	* c-common.h (c_warn_unused_result): Remove.
      	* flags.h (flag_warn_unused_result): Declare.
      	* c-opts.c (c_common_init_options): Enable flag_warn_unused_result.
      	* opts.c (flag_warn_unused_result): Initialize to false.
      
      	* toplev.c (compile_file): Add comment.
      	* omp-low.c (create_omp_child_function): Do not register
      	the function with the frontend.
      	(diagnose_omp_structured_block_errors): Prepare to be
      	called as optimization pass.
      	(gate_diagnose_omp_blocks): New function.
      	(pass_diagnose_omp_blocks): New pass.
      	* cgraph.h (cgraph_optimize): Remove.
      	(cgraph_analyze_function): Likewise.
      	* cgraph.c (cgraph_add_new_function): Gimplify C++ thunks.
      	* cgraphunit.c (cgraph_lower_function): Lower nested functions
      	before their parents here.
      	(cgraph_finalize_function): Not here.
      	(cgraph_analyze_function): Gimplify functions here.
      	(cgraph_finalize_compilation_unit): Continue after errors.
      	Optimize the callgraph from here.
      	(cgraph_optimize): Make static.
      	* langhooks.c (write_global_declarations): Finalize the CU.
      	* gimplify.c (gimplify_asm_expr): Do not emit ASMs with errors.
      	(gimplify_function_tree): Assert we gimplify only once.
      	Set PROP_gimple_any property.
      	* tree-nested.c (gimplify_all_functions): New function.
      	(lower_nested_functions): Gimplify all nested functions.
      	* gimple.h (diagnose_omp_structured_block_errors): Remove.
      	* passes.c (init_optimization_passes): Add pass_warn_unused_result
      	and pass_diagnose_omp_blocks after gimplification.  Do not
      	set TODO_set_props on all_lowering_passes.
      	(execute_one_pass): Do not handle TODO_set_props.
      	* Makefile.in (cgraphunit.o): Add $(TREE_DUMP_H) dependency.
      	(gimplify.o): Add tree-pass.h dependency.
      	* tree-inline.c (copy_statement_list): Properly copy STATEMENT_LIST.
      	(copy_tree_body_r): Properly handle TARGET_EXPR like SAVE_EXPR.
      	(unsave_r): Likewise.
      	* c-omp.c (c_finish_omp_atomic): Set DECL_CONTEXT on the
      	temporary variable.
      
      	cp/
      	* decl.c (finish_function): Do not emit unused result warnings
      	from here.
      	* cp-objcp-common.h (LANG_HOOKS_POST_GIMPLIFY_PASS): Use
      	c_warn_unused_result_pass.
      	* semantics.c (expand_or_defer_fn): Adjust assertion about IL status.
      	* optimize.c (clone_body): Clone in GENERIC.
      	(maybe_clone_body): Do not clear DECL_SAVED_TREE.
      	* decl2.c (cp_write_global_declarations): Fix body test.
      	Do not call cgraph_optimize.
      	* Make-lang.in (optimize.o): Add tree-iterator.h dependency.
      	* method.c (use_thunk): Register thunk with
      	cgraph_finalize_function.
      	* error.c (function_category): Guard access of DECL_LANG_SPECIFIC.
      
      	java/
      	* java-gimplify.c (java_genericize): Do not gimplify here.
      	But replace all local references.
      	(java_gimplify_expr): Do not replace local references here.
      	(java_gimplify_modify_expr): Likewise.
      	* jcf-parse.c (java_parse_file): Do not finalize the CU or
      	optimize the cgraph here.
      	* decl.c (java_replace_reference): Make static.
      	(java_replace_references): New function.
      	(end_java_method): Clear base_decl_map.
      	* java-tree.h (java_replace_references): Declare.
      	(java_replace_reference): Remove.
      
      	ada/
      	* utils.c (end_subprog_body): Revert to pre-tuples state.  Remove
      	unused parameter.
      	(gnat_gimplify_function): Do not gimplify here.
      	Fold into its only caller and remove.
      	(gnat_builtin_function): Adjust for end_subprog_body signature change.
      	(gnat_write_global_declarations): Also finalize the CU.
      	* misc.c (gnat_parse_file): Do not finalize the CU here.
      	* trans.c (gigi): Revert to pre-tuples state.
      	(Subprogram_Body_to_gnu): Adjust for end_subprog_body signature
      	change.
      	* gigi.h (end_subprog_body): Remove unused parameter.
      
      	fortran/
      	* f95-lang.c (gfc_be_parse_file): Do not finalize the CU here.
      	* trans-decl.c (gfc_gimplify_function): Remove.
      	(build_entry_thunks): Do not gimplify here.
      	(create_main_function): Likewise.
      	(gfc_generate_function_code): Likewise.
      
      	* g++.dg/rtti/crash4.C: New testcase.
      	* g++.dg/torture/20090706-1.C: Likewise.
      	* gcc.dg/redecl-17.c: Likewise.
      
      	* gfortran.dg/missing_optional_dummy_5.f90: Adjust pattern.
      	* gcc.dg/declspec-9.c: Expect extra error.
      	* gcc.dg/declspec-10.c: Likewise.
      	* gcc.dg/declspec-11.c: Likewise.
      	* gcc.dg/redecl-10.c: Expect extra warnings.
      	* gcc.target/i386/pr39082-1.c: Adjust diagnostic location.
      	* gcc.target/i386/pr39545-1.c: Likewise.
      	* g++.dg/ext/asm3.C: Expect more errors.
      	* g++.dg/gomp/block-1.C: Likewise.
      	* g++.dg/gomp/block-2.C: Likewise.
      	* g++.dg/gomp/block-3.C: Likewise.
      	* g++.dg/gomp/block-5.C: Likewise.
      	* g++.old-deja/g++.jason/report.C: Expect extra warnings.
      	* g++.dg/warn/unused-result1.C: XFAIL.
      
      From-SVN: r149750
      Richard Guenther committed
  31. 07 Jul, 2009 1 commit
  32. 03 Jul, 2009 1 commit
    • loop-24.c: Update dump file matching; enable -O2. · 7351bcaa
      	* gcc.dg/tree-ssa/loop-24.c: Update dump file matching; enable -O2.
      	* gcc.dg/tree-ssa/loop-25.c: Likewise.
      	* gcc.dg/tree-ssa/loop-26.c: Likewise.
      	* gcc.dg/tree-ssa/pr32044.c: Likewise.
      	* gcc.dg/tree-ssa/loop-29.c: Likewise.
      	* gcc.dg/tree-ssa/loop-10.c: Likewise.
      	* gnat.dg/loop_optimization6.adb: Enable -O2.
      
      	* ipa-pure-const.c (analyze): Update loop optimizer init.
      	* tree-ssa-loop-iv-canon.c (empty_loop_p, remove_empty_loop,
      	try_remove_empty_loop, remove_empty_loops): Remove.
      	* tree-ssa-loop.c (tree_ssa_empty_loop, pass_empty_loop): Remove.
      	* tree-ssa-dce.c (find_obviously_necessary_stmts): Use finiteness info
      	to mark regular loops as neccesary.
      	(degenerate_phi_p): New function.
      	(propagate_necessity, remove_dead_phis): Use it.
      	(forward_edge_to_pdom): Likewise.
      	(eliminate_unnecessary_stmts): Take care to remove uses of results of
      	virtual PHI nodes that became unreachable.
      	(perform_tree_ssa_dce): Initialize/deinitialize loop optimizer.
      	* tree-flow.h (remove_empty_loops): Remove.
      	* passes.c (init_optimization_passes): Remove.
      
      From-SVN: r149206
      Jan Hubicka committed
  33. 27 Jun, 2009 2 commits
    • passes.c (execute_one_pass): Fix unintentional commit. · b9cafe60
      2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
      
      	* passes.c (execute_one_pass): Fix unintentional commit.
      
      From-SVN: r149012
      Paolo Bonzini committed
    • domwalk.h (struct dom_walk_data): Remove all callbacks except… · ccf5c864
      domwalk.h (struct dom_walk_data): Remove all callbacks except before_dom_children_before_stmts and...
      
      2009-06-27  Paolo Bonzini  <bonzini@gnu.org>
      
              * domwalk.h (struct dom_walk_data): Remove all callbacks except
              before_dom_children_before_stmts and after_dom_children_after_stmts.
              Rename the two remaining callbacks to just before_dom_children and 
              after_dom_children. Remove other GIMPLE statement walking bits.
              * domwalk.c (walk_dominator_tree): Remove now unsupported features.
              * graphite.c: Do not include domwalk.h.
              * tree-into-ssa.c (interesting_blocks): New global.
              (struct mark_def_sites_global_data): Remove it and names_to_rename.
              (mark_def_sites, rewrite_stmt, rewrite_add_phi_arguments,
              rewrite_update_stmt, rewrite_update_phi_arguments): Simplify
              now that they're not domwalk callbacks.
              (rewrite_initialize_block): Rename to...
              (rewrite_enter_block): ... this, place after called functions.  Test
              interesting_blocks, call rewrite_stmt and rewrite_add_phi_arguments.
              (rewrite_finalize_block): Rename to...
              (rewrite_leave_block): ... this, place after called functions.
              (rewrite_update_init_block): Rename to...
              (rewrite_update_enter_block): ... this, place after called functions.
              Test interesting_blocks, call rewrite_update_stmt and 
              rewrite_update_phi_arguments.
              (rewrite_update_fini_block): Rename to...
              (rewrite_leave_block): ... this, place after called functions.
              (rewrite_blocks): Remove last argument, simplify initialization of
              walk_data.
              (mark_def_sites_initialize_block): Rename to...
              (mark_def_sites_block): ... this, call mark_def_sites.
              (mark_def_sites_blocks): Remove argument, simplify initialization of
              walk_data.
              (rewrite_into_ssa): Adjust for interesting_blocks_being a global.
              (update_ssa): Likewise.
              * tree-ssa-dom.c (optimize_stmt): Simplify now that it's not a domwalk
              callback.
              (tree_ssa_dominator_optimize): Simplify initialization of walk_data.
              (dom_opt_initialize_block): Rename to...
              (dom_opt_enter_block): ... this, place after called functions.  Walk
              statements here, inline propagate_to_outgoing_edges.
              (dom_opt_finalize_block): Rename to...
              (dom_opt_leave_block): ... this, place after called functions.
              * tree-ssa-dse.c (dse_optimize_stmt): Simplify now that it's not a
              domwalk callback.
              (dse_enter_block, dse_record_phi): New.
              (dse_record_phis): Delete.
              (dse_finalize_block): Rename to...
              (dse_leave_block): ... this.
              (tree_ssa_dse): Simplify initialization of walk_data.
              * tree-ssa-loop-im.c (determine_invariantness, move_computations):
              Adjust initialization of walk_data.
              * tree-ssa-loop-unswitch.c: Do not include domwalk.h.
              * tree-ssa-loop-phiopt.c (get_non_trapping):
              Adjust initialization of walk_data.
              * tree-ssa-loop-threadedge.c: Do not include domwalk.h.
              * tree-ssa-uncprop.c (uncprop_into_successor_phis): Simplify now that
              it's not a domwalk callback.
              (uncprop_initialize_block): Rename to...
              (dse_enter_block): ... this, call uncprop_into_successor_phis.
              (dse_finalize_block): Rename to...
              (dse_leave_block): ... this.
              (tree_ssa_uncprop): Simplify initialization of walk_data.
              * Makefile.in: Adjust dependencies.
      
      From-SVN: r149008
      Paolo Bonzini committed
  34. 18 Jun, 2009 1 commit
  35. 14 Jun, 2009 1 commit
    • passes.c: Add bswap pass. · 03bd2f1a
      2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
      
      	* passes.c: Add bswap pass.
      	* tree-pass.h: Add pass_optimize_bswap declaration.
      	* tree-ssa-math-opts.c: Include diagnostics.h for print_gimple_stmt.
      	Include rtl.h, expr.h and optabs.h for optab_handler check.
      	(struct symbolic_number, pass_optimize_bswap): New definition.
      	(do_shift_rotate, verify_symbolic_number_p): New functions.
      	(find_bswap_1, find_bswap, execute_optimize_bswap): New functions.
      	(gate_optimize_bswap): New function.
      	* tree.c (widest_int_cst_value): New function.
      	* tree.h (widest_int_cst_value): Prototype added.
      
      2009-06-14  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
      
      	* gcc.dg/optimize-bswap-1.c: New testcase.
      
      From-SVN: r148471
      Andreas Krebbel committed