1. 03 Jul, 2010 1 commit
    • timevar.def (TV_OUT_OF_SSA, [...]): New timevars. · f029db69
      	* timevar.def (TV_OUT_OF_SSA, TV_VAR_EXPAND, TV_POST_EXPAND,
      	TV_VAR_TRACKING_DATAFLOW, TV_VAR_TRACKING_EMIT): New timevars.
      	* cfgexpand.c (gimple_expand_cfg): Use new timevars.
      	* var-tracking.c (vt_find_locations, variable_tracking_main_1):
      	Likewise.
      
      	* lto-stramer-out.c (pass_ipa_lto_gimple_out, pass_ipa_lto_finish_out):
      	Update timevars.V
      	* timevar.def (TV_IPA_LTO_GIMPLE_IO, TV_IPA_LTO_DECL_IO): Remove.
      	(TV_IPA_LTO_GIMPLE_IN, TV_IPA_LTO_GIMPLE_OUT, TV_IPA_LTO_DECL_IN,
      	TV_IPA_LTO_DECL_OUT): New.
      	* lto.c (read_cgraph_and_symbols, materialize_cgraph): Update timevars.
      
      From-SVN: r161779
      Jan Hubicka committed
  2. 25 Jun, 2010 1 commit
    • tree-pass.h (pass_split_functions): Declare. · 3e485f62
      	* tree-pass.h (pass_split_functions): Declare.
      	* opts.c (decode_options): Enable function splitting at -O2
      	* timevar.def (TV_IPA_FNSPLIT): New macro.
      	* ipa-split.c: New file.
      	* common.opt (-fpartial-inlining): New flag.
      	* Makefile.in (ipa-split.o): New object file.
      	* passes.c (init_optimization_passes): Add ipa-split.
      	* params.def (max-inline-insns-auto): Reduce max-inline-insns-auto to 40.
      	(partial-inlining-entry-probability): New parameters.
      	* doc/invoke.texi (-fpartial-inlining): New.
      	
      	* testsuite/gcc.dg/tree-ssa/ipa-split.c
      
      From-SVN: r161382
      Jan Hubicka committed
  3. 12 May, 2010 1 commit
    • implicit-zee.c: New file. · 87a0ebfd
      	* implicit-zee.c: New file.
      	* tree-pass.h (pass_implicit_zee): Declare.
      	* passes.c (init_optimization_passes): Add zee pass.
      	* common.opt (fzee): New flag.
      	* timevar.def (TV_ZEE): Define.
      	* config/i386/i386.c (optimization_options): Turn on ZEE for level 2
      	and beyond.
      	* Makefile.in (implicit-zee.o): Add new build file.
      	* gcc.target/i386/zee.c: New file.
      
      From-SVN: r159342
      Sriraman Tallam committed
  4. 29 Apr, 2010 1 commit
    • gengtype.c (open_base_files): Add lto-streamer.h · 49ba8180
      	* gengtype.c (open_base_files): Add lto-streamer.h
      	* cgraph.h (cgraph_local_info): lto_file_data is now in GGC.
      	(pass_ipa_cp): GGC collect.
      	* toplev. (compile_file): Do not output symbols.
      	* ipa-inline.c (pass_ipa_inline): Add ggc collect.
      	* timevar.def (TV_VARPOOL, TV_IPA_LTO_DECL_INIT_IO,
      	TV_IPA_LTO_DECL_MERGE, TV_IPA_LTO_CGRAPH_MERGE, TV_VAROUT): New.
      	* lto-section-in.c: Include ggc.h
      	(lto_new_in_decl_state): Alloc in GGC.
      	(lto_delete_in_decl_state): Likewise.
      	* ipa.c (pass_ipa_function_visibility, pass_ipa_whole_program): Collect.
      
      	* lto/lto.c (lto_read_in_decl_state): Use GGC.
      	(lto_wpa_write_files): Announce what we are writting.
      	(all_file_decl_data): New.
      	(read_cgraph_and_symbols): Use GGC; correct timevars.
      	(do_whole_program_analysis): Collect.
      	* lto/Make-lang.in (lto.o): Fix dependency.
      	* Makefile.in (GTFILES): Add lto-streamer.h.
      	* varpool.c (varpool_analyze_pending_decls): Use TV_VARPOOL.
      	(varpool_assemble_pending_decls): Use VAROUT.
      	* lto-streamer.h (lto_tree_ref_table): Annotate.
      	(lto_in_decl_state): Annotate.
      	(lto_file_decl_data): Annotate.
      
      From-SVN: r158912
      Jan Hubicka committed
  5. 28 Apr, 2010 1 commit
  6. 27 Apr, 2010 1 commit
    • invoke.texi (-fipa-profile): Document. · e65bb9be
      	* doc/invoke.texi (-fipa-profile): Document.
      	* opts.c (decode_options): Enable ipa-profile at -O1.
      	* timevar.def (TV_IPA_PROFILE): Define.
      	* common.opt (fipa-profile): Add.
      	* cgraph.c (cgraph_clone_node): Set local flag and clear vtable method flag
      	for clones.
      	(cgraph_propagate_frequency): Handle only local ones.
      	* tree-pass.h (pass_ipa_profile): Declare.
      	* ipa-profile.c (gate_profile): Use flag_ipa_profile.
      	(pass_ipa_profile): Use TV_IPA_PROFILE.
      	* ipa.c (ipa_profile): New function.
      	(gate_ipa_profile): Likewise.
      	(pass_ipa_profile): New global variable.
      	* passes.c (pass_ipa_profile): New.
      
      From-SVN: r158788
      Jan Hubicka committed
  7. 21 Apr, 2010 1 commit
    • 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
  8. 13 Apr, 2010 1 commit
    • Makefile.in (c-pch.o, [...]): Depend on timevar.h. · 10d43c2d
      2010-04-12  Diego Novillo  <dnovillo@google.com>
      
      	* Makefile.in (c-pch.o, ggc-common.o): Depend on timevar.h.
      	* c-pch.c: Include timevar.h.
      	(c_common_write_pch): Use TV_PCH_SAVE and TV_PCH_CPP_SAVE timers.
      	(c_common_read_pch): Use TV_PCH_RESTORE and TV_PCH_CPP_RESTORE
      	timers.
      	* ggc-common.c: Include timevar.h.
      	(gt_pch_save): Use TV_PCH_PTR_REALLOC and TV_PCH_PTR_SORT
      	timers.
      	* timevar.def (TV_PCH_SAVE): Define.
      	(TV_PCH_CPP_SAVE): Define.
      	(TV_PCH_PTR_REALLOC): Define.
      	(TV_PCH_PTR_SORT): Define.
      	(TV_PCH_RESTORE): Define.
      	(TV_PCH_CPP_RESTORE): Define.
      
      From-SVN: r158266
      Diego Novillo committed
  9. 27 Nov, 2009 1 commit
    • timevar.def (TV_LOOP_MOVE_INVARIANTS, [...]): New timevars. · b56ae8c7
      2009-11-27  Richard Guenther  <rguenther@suse.de>
      
      	* timevar.def (TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNSWITCH,
      	TV_LOOP_UNROLL, TV_LOOP_DOLOOP): New timevars.
      	* loop-init.c (pass_rtl_move_loop_invariants): Use
      	TV_LOOP_MOVE_INVARIANTS.
      	(pass_rtl_unswitch): Use TV_LOOP_UNSWITCH.
      	(pass_rtl_unroll_and_peel): Use TV_LOOP_UNROLL.
      	(pass_rtl_doloop): Use TV_LOOP_DOLOOP.
      
      From-SVN: r154703
      Richard Guenther committed
  10. 03 Oct, 2009 1 commit
  11. 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
  12. 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
  13. 12 Aug, 2009 1 commit
    • Measure time spent in DD analysis and in code gen. · 87d4d0ee
      2009-08-05  Sebastian Pop  <sebastian.pop@amd.com>
      
      	* graphite-clast-to-gimple.c (gloog): Add time to TV_GRAPHITE_CODE_GEN.
      	* graphite-dependences.c (graphite_legal_transform): Add time to
      	TV_GRAPHITE_DATA_DEPS.
      	(dependency_between_pbbs_p): Same.
      	* timevar.def (TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN): New.
      
      From-SVN: r150683
      Sebastian Pop committed
  14. 27 Jun, 2009 1 commit
    • re PR tree-optimization/26854 (Inordinate compile times on large routines) · c6741572
      2009-06-07  Paolo Bonzini  <bonzini@gnu.org>
      
      	PR rtl-optimization/26854
              * timevar.def: Remove TV_DF_RU, add TV_DF_MD.
              * df-problems.c (df_rd_add_problem): Fix comment.
              (df_md_set_bb_info, df_md_free_bb_info, df_md_alloc,
              df_md_simulate_artificial_defs_at_top,
              df_md_simulate_one_insn, df_md_bb_local_compute_process_def,
              df_md_bb_local_compute, df_md_local_compute, df_md_reset,
              df_md_transfer_function, df_md_init, df_md_confluence_0,
              df_md_confluence_n, df_md_free, df_md_top_dump, df_md_bottom_dump,
              problem_MD, df_md_add_problem): New.
              * df.h (DF_MD, DF_MD_BB_INFO, struct df_md_bb_info, df_md,
              df_md_get_bb_info): New.
              DF_LAST_PROBLEM_PLUS1): Adjust.
      
              * Makefile.in (fwprop.o): Include domwalk.h.
              * fwprop.c: Include domwalk.h.
              (reg_defs, reg_defs_stack): New.
              (bitmap_only_bit_between): Remove.
              (process_defs): New.
              (process_uses): Use reg_defs and local_md instead of
              bitmap_only_bit_between and local_rd.
              (single_def_use_enter_block): New, from build_single_def_use_links.
              (single_def_use_leave_block): New.
              (build_single_def_use_links): Remove code moved to
              single_def_use_enter_block, invoke domwalk.
              (use_killed_between): Adjust comment.
      
      From-SVN: r149010
      Paolo Bonzini committed
  15. 18 Jun, 2009 1 commit
  16. 12 Jun, 2009 1 commit
  17. 24 May, 2009 1 commit
    • passes.texi (Tree-SSA passes): Document SLP pass. · a70d6342
      	* doc/passes.texi (Tree-SSA passes): Document SLP pass.
      	* tree-pass.h (pass_slp_vectorize): New pass.
      	* params.h (SLP_MAX_INSNS_IN_BB): Define.
      	* timevar.def (TV_TREE_SLP_VECTORIZATION): Define.
      	* tree-vectorizer.c (timevar.h): Include.
      	(user_vect_verbosity_level): Declare.
      	(vect_location): Fix comment.
      	(vect_set_verbosity_level): Update user_vect_verbosity_level
      	instead of vect_verbosity_level.
      	(vect_set_dump_settings): Add an argument. Ignore user defined
      	verbosity if dump flags require higher level of verbosity. Print to
      	stderr only for loop vectorization.
      	(vectorize_loops): Update call to vect_set_dump_settings.
      	(execute_vect_slp): New function.
      	(gate_vect_slp): Likewise.
      	(struct gimple_opt_pass pass_slp_vectorize): New.
      	* tree-vectorizer.h (struct _bb_vec_info): Define along macros to
      	access its members.
      	(vec_info_for_bb): New function.
      	(struct _stmt_vec_info): Add bb_vinfo and a macro for its access.
      	(VECTORIZATION_ENABLED): New macro.
      	(SLP_ENABLED, SLP_DISABLED): Likewise.
      	(vect_is_simple_use): Add bb_vec_info argument.
      	(new_stmt_vec_info, vect_analyze_data_ref_dependences,
      	vect_analyze_data_refs_alignment, vect_verify_datarefs_alignment,
      	vect_analyze_data_ref_accesses, vect_analyze_data_refs,
      	vect_schedule_slp, vect_analyze_slp): Likewise.
      	(vect_analyze_stmt): Add slp_tree argument.
      	(find_bb_location): Declare.
      	(vect_slp_analyze_bb, vect_slp_transform_bb): Likewise.
      	* tree-vect-loop.c (new_loop_vec_info): Adjust function calls.
      	(vect_analyze_loop_operations, vect_analyze_loop,
      	get_initial_def_for_induction, vect_create_epilog_for_reduction,
      	vect_finalize_reduction, vectorizable_reduction,
      	vectorizable_live_operation, vect_transform_loop): Likewise.
      	* tree-data-ref.c (dr_analyze_innermost): Update comment,
      	skip evolution analysis if analyzing a basic block.
      	(dr_analyze_indices): Likewise.
      	(initialize_data_dependence_relation): Skip the test whether the
      	object is invariant for basic blocks.
      	(compute_all_dependences): Skip dependence analysis for data
      	references in basic blocks.
      	(find_data_references_in_stmt): Don't fail in case of invariant
      	access in basic block.
      	(find_data_references_in_bb): New function.
      	(find_data_references_in_loop): Move code to
      	find_data_references_in_bb    and add a call to it.
      	(compute_data_dependences_for_bb): New function.
      	* tree-data-ref.h (compute_data_dependences_for_bb): Declare.
      	* tree-vect-data-refs.c (vect_check_interleaving): Adjust to the case
      	that STEP is 0.
      	(vect_analyze_data_ref_dependence): Check for interleaving in case of
      	unknown dependence in basic block and fail in case of dependence in
      	basic block.
      	(vect_analyze_data_ref_dependences): Add bb_vinfo argument, get data
      	dependence instances from either loop or basic block vectorization
      	info.
      	(vect_compute_data_ref_alignment): Check if it is loop vectorization
      	before calling nested_in_vect_loop_p.
      	(vect_compute_data_refs_alignment): Add bb_vinfo argument, get data
      	dependence instances from either loop or basic block vectorization
      	info.
      	(vect_verify_datarefs_alignment): Likewise.
      	(vect_enhance_data_refs_alignment): Adjust function calls.
      	(vect_analyze_data_refs_alignment): Likewise.
      	(vect_analyze_group_access): Fix printing. Skip different checks if
      	DR_STEP is 0. Keep strided stores either in loop or basic block
      	vectorization data structure. Fix indentation.
      	(vect_analyze_data_ref_access): Fix comments, allow zero step in
      	basic blocks.
      	(vect_analyze_data_ref_accesses): Add bb_vinfo argument, get data
      	dependence instances from either loop or basic block vectorization
      	info.
      	(vect_analyze_data_refs): Update comment. Call
      	compute_data_dependences_for_bb to analyze basic blocks.
      	(vect_create_addr_base_for_vector_ref): Check for outer loop only in
      	case of loop vectorization. In case of basic block vectorization use
      	data-ref itself   as  a base.
      	(vect_create_data_ref_ptr): In case of basic block vectorization:
      	don't advance the pointer, add new statements before the current
      	statement.  Adjust function calls.
      	(vect_supportable_dr_alignment): Support only aligned accesses in
      	basic block vectorization.
      	* common.opt (ftree-slp-vectorize): New flag.
      	* tree-vect-patterns.c (widened_name_p): Adjust function calls.
      	(vect_pattern_recog_1): Likewise.
      	* tree-vect-stmts.c (process_use): Likewise.
      	(vect_init_vector): Add new statements in the beginning of the basic
      	block in case of basic block SLP.
      	(vect_get_vec_def_for_operand): Adjust function calls.
      	(vect_finish_stmt_generation): Likewise.
      	(vectorizable_call): Add assert that it is loop vectorization, adjust
      	function calls.
      	(vectorizable_conversion, vectorizable_assignment): Likewise.
      	(vectorizable_operation): In case of basic block SLP, take
      	vectorization factor from statement's type and skip the relevance
      	check. Adjust function calls.
      	(vectorizable_type_demotion): Add assert that it is loop
      	vectorization, adjust function calls.
      	(vectorizable_type_promotion): Likewise.
      	(vectorizable_store): Check for outer loop only in case of loop
      	vectorization. Adjust function calls. For basic blocks, skip the
      	relevance check and don't advance pointers.
      	(vectorizable_load): Likewise.
      	(vectorizable_condition): Add assert that it is loop vectorization,
      	adjust function calls.
      	(vect_analyze_stmt): Add argument. In case of basic block SLP, check
      	that it is not reduction, get vector type, call only supported
      	functions, skip loop    specific parts.
      	(vect_transform_stmt): Check for outer loop only in case of loop
      	vectorization.
      	(new_stmt_vec_info): Add new argument and initialize bb_vinfo.
      	(vect_is_simple_use): Fix comment, add new argument, fix conditions
      	for external definition.
      	* passes.c (pass_slp_vectorize): New pass.
      	* tree-vect-slp.c (find_bb_location): New function.
      	(vect_get_and_check_slp_defs): Add argument, adjust function calls,
      	check for patterns only in loops.
      	(vect_build_slp_tree): Add argument, adjust function calls, fail in
      	case of multiple types in basic block SLP.
      	(vect_mark_slp_stmts_relevant): New function.
      	(vect_supported_load_permutation_p): Fix comment.
      	(vect_analyze_slp_instance): Add argument. In case of basic block
      	SLP, take vectorization factor from statement's type, check that
      	unrolling factor is 1. Adjust function call. Save SLP instance in
      	either loop or basic block vectorization structure. Return FALSE,
      	if SLP failed.
      	(vect_analyze_slp): Add argument. Get strided stores groups from
      	either loop or basic block vectorization structure. Return FALSE
      	if basic block SLP failed.
      	(new_bb_vec_info): New function.
      	(destroy_bb_vec_info, vect_slp_analyze_node_operations,
      	vect_slp_analyze_operations, vect_slp_analyze_bb): Likewise.
      	(vect_schedule_slp): Add argument. Get SLP instances from either
      	loop or basic block vectorization structure. Set vectorization factor
      	to be 1 for basic block SLP.
      	(vect_slp_transform_bb): New function.
      	* params.def (PARAM_SLP_MAX_INSNS_IN_BB): Define.
      
      From-SVN: r147829
      Ira Rosen committed
  18. 07 May, 2009 1 commit
    • Makefile.in (OBJS-common): Add regcprop.o. · fac41238
      2009-05-07  Paolo Bonzini  <bonzini@gnu.org>
      
      	* Makefile.in (OBJS-common): Add regcprop.o.
      	(regcprop.o): New.
      	* timevar.def (TV_CPROP_REGISTERS): New.
      	* regrename.c (regrename_optimize): Return 0.
      	(rest_of_handle_regrename): Delete.
      	(pass_rename_registers): Point to regrename_optimize.
      	(struct value_data_entry, struct value_data, 
      	kill_value_one_regno, kill_value_regno, kill_value,
      	set_value_regno, init_value_data, kill_clobbered_value,
      	kill_set_value, kill_autoinc_value, copy_value,
      	mode_change_ok, maybe_mode_change, find_oldest_value_reg,
      	replace_oldest_value_reg, replace_oldest_value_addr,
      	replace_oldest_value_mem, copyprop_hardreg_forward_1,
      	debug_value_data, validate_value_data): Move...
      	* regcprop.c: ... here.
      	(rest_of_handle_cprop): Delete.
      	(pass_cprop_hardreg): Point to copyprop_hardreg_forward.
      
      From-SVN: r147243
      Paolo Bonzini committed
  19. 27 Apr, 2009 1 commit
    • dbgcnt.def (cprop1, [...]): Remove · 5f39ad47
      	* dbgcnt.def (cprop1, cprop2, gcse, jump_bypass): Remove
      	(cprop, hoist, pre, store_motion): New debug counters.
      	* tree-pass.h (pass_tracer): Move to list of gimple passes, it
      	is not an RTL pass anymore.
      	(pass_profiling): Remove extern decl for pass removed in 2005.
      	(pass_gcse, pass_jump_bypass): Remove.
      	* final.c (rest_of_clean_state): Set flag_rerun_cse_after_global_opts
      	to 0 for clean state.
      	* toplev.h (flag_rerun_cse_after_global_opts): Add extern declaration.
      	* cse.c (gate_handle_cse_after_global_opts,
      	rest_of_handle_cse_after_global_opts): New functions.
      	(pass_cse_after_global_opts): New pass, does local CSE.
      	* timevar.def (TV_GCSE, TV_CPROP1, TV_CPROP2, TV_BYPASS): Remove.
      	(TV_CPROP): New timevar.
      	* gcse.c (flag_rerun_cse_after_global_opts): New global variable.
      	(run_jump_opt_after_gcse, max_gcse_regno): Remove global vars.
      	(gcse_main, recompute_all_luids): Remove.
      	(compute_hash_table_work): Call max_reg_num instead of reading
      	max_gcse_regno.
      	(cprop_jump): Don't set run_jump_opt_after_gcse.
      	(constprop_register): Always allow to alter jumps.
      	(cprop_insn): Likewise.
      	(do_local_cprop): Likewise.
      	(local_cprop_pass): Likewise.  Return non-zero if something changed.
      	(cprop): Remove function, fold interesting bits into one_cprop_pass.
      	(find_implicit_sets): Add note about missed optimization opportunity.
      	(one_cprop_pass): Rewrite to be "the" CPROP pass, called from the
      	pass_rtl_cprop execute function.
      	Don't bother tracking the pass number, each pass gets its own dumpfile
      	now anyway.
      	Always allow to alter jumpsand bypass jumps.
      	(bypass_block): Don't ignore regno >= max_gcse_regno, find_bypass_set
      	will just find no suitable set.
      	(pre_edge_insert): Fix dumping, this function is for PRE only.
      	(one_pre_gcse_pass): Rewrite to be "the" PRE pass, called from the
      	pass_rtl_pre execute function.
      	(hoist_code): Return non-zero if something changed.  Keep track of
      	substitutions and insertions for statistics gathering similar to PRE.
      	(one_code_hoisting_pass): Rewrite to be "the" code hoisting pass,
      	called from the pass_rtl_hoist execute function.  Show pass statistics.
      	(compute_store_table): Use max_reg_num directly instead of using the
      	formerly global max_gcse_regno.
      	(build_store_vectors): Likewise.
      	(replace_store_insn): Fix dumping.
      	(store_motion): Rename to ...
      	(one_store_motion_pass): ... this.  Rewrite to be "the" STORE_MOTION
      	pass, called from the pass_rtl_store_motion execute function.  Keep
      	track of substitutions and insertions for statistics gathering similar
      	to PRE.
      	(bypass_jumps): Remove, fold interesting bits into ...
      	(one_cprop_pass): ... this.  Rewrite to be "the" CPROP pass, called
      	from the pass_rtl_cprop execute function.
      	(gate_handle_jump_bypass, rest_of_handle_jump_bypass,
      	pass_jump_bypass): Remove.
      	(gate_handle_gcse, rest_of_handle_gcse): Remove.
      	(gate_rtl_cprop, execute_rtl_cprop, pass_rtl_cprop): New.
      	(gate_rtl_pre, execute_rtl_pre, pass_rtl_pre): New.
      	(gate_rtl_hoist, execute_rtl_hoist, pass_rtl_hoist): New.
      	(gate_rtl_store_motion, execute_rtl_store_motion,
      	pass_rtl_store_motion): New.
      	* common.opt: Remove flag_cse_skip_blocks, adjust documentation to
      	make it clear that -fcse-skip-blocks is a no-op for backward compat.
      	* passes.c (init_optimization_passes): Remove pass_gcse and
      	pass_jump_bypass.  Schedule cprop, pre, hoist, cprop, store_motion,
      	and cse_after_global_opts in place of pass_gcse.  Schedule cprop
      	instead of pass_jump_bypass.
      
      From-SVN: r146848
      Steven Bosscher committed
  20. 14 Apr, 2009 1 commit
    • [multiple changes] · 68a607d8
      2009-04-14  Diego Novillo  <dnovillo@google.com>
      	    Le-Chun Wu  <lcwu@google.com>
      
      	* configure.ac: Add --enable-plugin support.
      	Define ENABLE_PLUGIN and PLUGINLIBS when specified.
      	* Makefile.in (PLUGIN_H): Define.
      	Export ENABLE_PLUGIN and GMPINC to site.exp.
      	Add PLUGINLIBS to link command.
      	Add/modify dependencies for plugin.o and files including plugin.h.
      	(plugin.o): New.
      	* config.in: Regenerate.
      	
      	* opts.c (common_handle_option): Handle OPT_fplugin_ and
      	OPT_fplugin_arg_.
      
      2009-04-14  Le-Chun Wu  <lcwu@google.com>
      
      	* tree-pass.h (register_one_dump_file): Add a prototype for
      	register_one_dump_file.
      	* toplev.c (compile_file): Call initialize_plugins.
      	(do_compile): Call invoke_plugin_callbacks.
      	(toplev_main): Call invoke_plugin_callbacks.
      	* common.opt: Add -fplugin= and -fplugin-arg-.
      	* gcc-plugin.h: New public header file for plugins to include.
      	* plugin.c: New source file.
      	* plugin.h: New internal header file.
      	* passes.c (register_one_dump_file): Make it external.
      	
      	* c-parser.c (c_parser_declspecs): Call invoke_plugin_callbacks.
      
      2009-04-14  Diego Novillo  <dnovillo@google.com>
      
      	* doc/plugins.texi: New.
      	* doc/gccint.texi: Add reference to Plugins chapter.
      	* doc/invoke.texi: Document -fplugin and -fplugin-arg
      	* diagnostic.c (diagnostic_report_diagnostic): Warn about
      	loaded plugins, if any.
      	* timevar.def (TV_PLUGIN_INIT): Define.
      	(TV_PLUGIN_RUN): Define.
      	* plugin.c: Include timevar.h
      	(plugins_active_p): New.
      	(dump_active_plugins): New.
      	(debug_active_plugins): New.
      
      
      cp/ChangeLog
      
      2009-04-14  Le-Chun Wu  <lcwu@google.com>
      
      	* Make-lang.in: Modify dependencies of files including plugin.h.
      	* decl.c (finish_function): Call invoke_plugin_callbacks.
      	* parser.c (cp_parser_type_specifier): Call invoke_plugin_callbacks.
      
      From-SVN: r146059
      Diego Novillo committed
  21. 03 Apr, 2009 1 commit
    • re PR middle-end/13146 (inheritance for nonoverlapping_component_refs_p) · 5006671f
      2009-04-03  Richard Guenther  <rguenther@suse.de>
      
      	PR middle-end/13146
      	PR tree-optimization/23940
      	PR tree-optimization/33237
      	PR middle-end/33974
      	PR middle-end/34093
      	PR tree-optimization/36201
      	PR tree-optimization/36230
      	PR tree-optimization/38049
      	PR tree-optimization/38207
      	PR tree-optimization/38230
      	PR tree-optimization/38301
      	PR tree-optimization/38585
      	PR middle-end/38895
      	PR tree-optimization/38985
      	PR tree-optimization/39299
      	* tree-ssa-structalias.h: Remove.
      	* tree-ssa-operands.h (NULL_USE_OPERAND_P): Make of type use_operand_p.
      	(NULL_DEF_OPERAND_P): Make of type def_operand_p.
      	(struct vuse_element_d): Remove.
      	(struct vuse_vec_d): Likewise.
      	(VUSE_VECT_NUM_ELEM, VUSE_VECT_ELEMENT_NC, VUSE_ELEMENT_PTR_NC,
      	VUSE_ELEMENT_VAR_NC, VUSE_VECT_ELEMENT, VUSE_ELEMENT_PTR,
      	SET_VUSE_VECT_ELEMENT, SET_VUSE_ELEMENT_VAR, SET_VUSE_ELEMENT_PTR,
      	VUSE_ELEMENT_VAR): Likewise.
      	(struct voptype_d): Likewise.
      	(NUM_VOP_FREE_BUCKETS): Likewise.
      	(struct ssa_operands): Remove vop_free_buckets and mpt_table fields.
      	(struct stmt_operands_d): Remove.
      	(VUSE_OP_PTR, VUSE_OP, SET_VUSE_OP, VUSE_NUM, VUSE_VECT,
      	VDEF_RESULT_PTR, VDEF_RESULT, VDEF_OP_PTR, VDEF_OP, SET_VDEF_OP,
      	VDEF_NUM, VDEF_VECT): Likewise.
      	(copy_virtual_operands): Remove.
      	(operand_build_cmp): Likewise.
      	(create_ssa_artificial_load_stmt): Likewise.
      	(enum ssa_op_iter_type): Remove ssa_op_iter_vdef.
      	(struct ssa_operand_iterator_d): Remove vuses, vdefs, mayusesm
      	vuse_index and mayuse_index members.  Pack and move done and iter_type
      	members to the front.
      	(SSA_OP_VMAYUSE): Remove.
      	(SSA_OP_VIRTUAL_USES): Adjust.
      	(FOR_EACH_SSA_VDEF_OPERAND): Remove.
      	(unlink_stmt_vdef): Declare.
      	(add_to_addressable_set): Remove.
      	* tree-vrp.c (stmt_interesting_for_vrp): Adjust.
      	(vrp_visit_stmt): Likewise.
      	* doc/tree-ssa.texi (Alias analysis): Update.
      	* doc/invoke.texi (max-aliased-vops): Remove docs.
      	(avg-aliased-vops): Likewise.
      	* tree-into-ssa.c (syms_to_rename): Remove.
      	(need_to_update_vops_p): Likewise.
      	(need_to_initialize_update_ssa_p): Rename to ...
      	(update_ssa_initialized_fn): ... this.  Track function we are
      	initialized for.
      	(symbol_marked_for_renaming): Simplify.
      	(add_new_name_mapping): Do not set need_to_update_vops_p.
      	(dump_currdefs): Use SYMS_TO_RENAME.
      	(rewrite_update_stmt): Always walk all uses/defs.
      	(dump_update_ssa): Adjust.
      	(init_update_ssa): Take function argument.  Track what we are
      	initialized for.
      	(delete_update_ssa): Reset SYMS_TO_RENAME and update_ssa_initialized_fn.
      	(create_new_def_for): Initialize for cfun, assert we are initialized
      	for cfun.
      	(mark_sym_for_renaming): Simplify.
      	(mark_set_for_renaming): Do not initialize update-ssa.
      	(need_ssa_update_p): Simplify.  Take function argument.
      	(name_mappings_registered_p): Assert we ask for the correct function.
      	(name_registered_for_update_p): Likewise.
      	(ssa_names_to_replace): Likewise.
      	(release_ssa_name_after_update_ssa): Likewise.
      	(update_ssa): Likewise.  Use SYMS_TO_RENAME.
      	(dump_decl_set): Do not print a newline.
      	(debug_decl_set): Do it here.
      	(dump_update_ssa): And here.
      	* tree-ssa-loop-im.c (move_computations): Adjust.
      	(movement_possibility): Likewise.
      	(determine_max_movement): Likewise.
      	(gather_mem_refs_stmt): Likewise.
      	* tree-dump.c (dequeue_and_dump): Do not handle SYMBOL_MEMORY_TAG
      	or NAME_MEMORY_TAG.
      	* tree-complex.c (update_all_vops): Remove.
      	(expand_complex_move): Adjust.
      	* tree-ssa-loop-niter.c (chain_of_csts_start): Use NULL_TREE.
      	Simplify test for memory referencing statement.  Exclude
      	non-invariant ADDR_EXPRs.
      	* tree-pretty-print.c (dump_generic_node): Do not handle memory tags.
      	* tree-loop-distribution.c (generate_memset_zero): Adjust.
      	(rdg_flag_uses): Likewise.
      	* tree-tailcall.c (suitable_for_tail_opt_p): Remove memory-tag
      	related code.
      	(tree_optimize_tail_calls_1): Also split the
      	edge from the entry block if we have degenerate PHI nodes in
      	the first basic block.
      	* tree.c (init_ttree): Remove memory-tag related code.
      	(tree_code_size): Likewise.
      	(tree_node_structure): Likewise.
      	(build7_stat): Re-write to be build6_stat.
      	* tree.h (MTAG_P, TREE_MEMORY_TAG_CHECK, TMR_TAG): Remove.
      	(SSA_VAR_P): Adjust.
      	(struct tree_memory_tag): Remove.
      	(struct tree_memory_partition_tag): Likewise.
      	(union tree_node): Adjust.
      	(build7): Re-write to be build6.
      	* tree-pass.h (pass_reset_cc_flags): Remove.
      	(TODO_update_address_taken): New flag.
      	(pass_simple_dse): Remove.
      	* ipa-cp.c (ipcp_update_callgraph): Update SSA form.
      	* params.h (MAX_ALIASED_VOPS): Remove.
      	(AVG_ALIASED_VOPS): Likewise.
      	* omp-low.c (expand_omp_taskreg): Update SSA form.
      	* tree-ssa-dse.c (dse_optimize_stmt): Properly query if the rhs
      	aliases the lhs in a copy stmt.
      	* tree-ssa-dse.c (struct address_walk_data): Remove.
      	(memory_ssa_name_same): Likewise.
      	(memory_address_same): Likewise.
      	(get_kill_of_stmt_lhs): Likewise.
      	(dse_possible_dead_store_p): Simplify, use the oracle.  Handle
      	unused stores.  Look through PHI nodes into post-dominated regions.
      	(dse_optimize_stmt): Simplify.  Properly remove stores.
      	(tree_ssa_dse): Compute dominators.
      	(execute_simple_dse): Remove.
      	(pass_simple_dse): Likewise.
      	* ipa-reference.c (scan_stmt_for_static_refs): Open-code
      	gimple_loaded_syms and gimple_stored_syms computation.
      	* toplev.c (dump_memory_report): Dump alias and pta stats.
      	* tree-ssa-sccvn.c (vn_reference_compute_hash): Simplify.
      	(vn_reference_eq): Likewise.
      	(vuses_to_vec, copy_vuses_from_stmt, vdefs_to_vec,
      	copy_vdefs_from_stmt, shared_lookup_vops, shared_vuses_from_stmt,
      	valueize_vuses): Remove.
      	(get_def_ref_stmt_vuses): Simplify.  Rename to ...
      	(get_def_ref_stmt_vuse): ... this.
      	(vn_reference_lookup_2): New function.
      	(vn_reference_lookup_pieces): Use walk_non_aliased_vuses for
      	walking equivalent vuses.  Simplify.
      	(vn_reference_lookup): Likewise.
      	(vn_reference_insert): Likewise.
      	(vn_reference_insert_pieces): Likewise.
      	(visit_reference_op_call): Simplify.
      	(visit_reference_op_load): Likewise.
      	(visit_reference_op_store): Likewise.
      	(init_scc_vn): Remove shared_lookup_vuses initialization.
      	(free_scc_vn): Remove shared_lookup_vuses freeing.
      	(sort_vuses, sort_vuses_heap): Remove.
      	(get_ref_from_reference_ops): Export.
      	* tree-ssa-sccvn.h (struct vn_reference_s): Replace vuses
      	vector with single vuse pointer.
      	(vn_reference_lookup_pieces, vn_reference_lookup,
      	vn_reference_insert, vn_reference_insert_pieces): Adjust prototypes.
      	(shared_vuses_from_stmt): Remove.
      	(get_ref_from_reference_ops): Declare.
      	* tree-ssa-loop-manip.c (slpeel_can_duplicate_loop_p): Adjust.
      	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Remove
      	memory-tag related code.
      	* tree-ssa-ccp.c (get_symbol_constant_value): Remove memory-tag code.
      	(likely_value): Add comment, skip static-chain of call statements.
      	(surely_varying_stmt_p): Adjust.
      	(gimplify_and_update_call_from_tree): Likewise.
      	(execute_fold_all_builtins): Do not rebuild alias info.
      	(gimplify_and_update_call_from_tree): Properly update VOPs.
      	* tree-ssa-loop-ivopts.c (get_ref_tag): Remove.
      	(copy_ref_info): Remove memory-tag related code.
      	* tree-call-cdce.c (tree_call_cdce): Rename the VOP.
      	* ipa-pure-const.c (check_decl): Remove memory-tag related code.
      	(check_stmt): Open-code gimple_loaded_syms and gimple_stored_syms
      	computation.
      	* tree-ssa-dom.c (gimple_p): Remove typedef.
      	(eliminate_redundant_computations): Adjust.
      	(record_equivalences_from_stmt): Likewise.
      	(avail_expr_hash): Likewise.
      	(avail_expr_eq): Likewise.
      	* tree-ssa-propagate.c (update_call_from_tree): Properly
      	update VOPs.
      	(stmt_makes_single_load): Likewise.
      	(stmt_makes_single_store): Likewise.
      	* tree-ssa-alias.c: Rewrite completely.
      	(debug_memory_partitions, dump_mem_ref_stats, debug_mem_ref_stats,
      	debug_mem_sym_stats, dump_mem_sym_stats_for_var,
      	debug_all_mem_sym_stats, debug_mp_info, update_mem_sym_stats_from_stmt,
      	delete_mem_ref_stats, create_tag_raw, dump_points_to_info,
      	dump_may_aliases_for, debug_may_aliases_for, new_type_alias):
      	Remove public functions.
      	(pass_reset_cc_flags): Remove.
      	(pass_build_alias): Move ...
      	* tree-ssa-structalias.c (pass_build_alias): ... here.
      	* tree-ssa-alias.c (may_be_aliased): Move ...
      	* tree-flow-inline.h (may_be_aliased): ... here.
      	tree-ssa-alias.c (struct count_ptr_d, count_ptr_derefs,
      	count_uses_and_derefs): Move ...
      	* gimple.c: ... here.
      	* gimple.h (count_uses_and_derefs): Declare.
      	* tree-ssa-alias.c (dump_alias_stats, ptr_deref_may_alias_global_p,
      	ptr_deref_may_alias_decl_p, ptr_derefs_may_alias_p,
      	same_type_for_tbaa, nonaliasing_component_refs_p, decl_refs_may_alias_p,
      	indirect_ref_may_alias_decl_p, indirect_refs_may_alias_p,
      	ref_maybe_used_by_call_p, ref_maybe_used_by_stmt_p,
      	call_may_clobber_ref_p, stmt_may_clobber_ref_p, maybe_skip_until,
      	get_continuation_for_phi, walk_non_aliased_vuses, walk_aliased_vdefs):
      	New functions.
      	* tree-dfa.c (refs_may_alias_p): Move ...
      	* tree-ssa-alias.c (refs_may_alias_p): ... here.  Extend.
      	* tree-ssa-alias.h: New file.
      	* tree-ssa-sink.c (is_hidden_global_store): Adjust.
      	(statement_sink_location): Likewise.
      	* opts.c (decode_options): Do not adjust max-aliased-vops or
      	avg-aliased-vops values.
      	* timevar.def (TV_TREE_MAY_ALIAS): Remove.
      	(TV_CALL_CLOBBER): Likewise.
      	(TV_FLOW_SENSITIVE): Likewise.
      	(TV_FLOW_INSENSITIVE): Likewise.
      	(TV_MEMORY_PARTITIONING): Likewise.
      	(TV_ALIAS_STMT_WALK): New timevar.
      	* tree-ssa-loop-ivcanon.c (empty_loop_p): Adjust.
      	* tree-ssa-address.c (create_mem_ref_raw): Use build6.
      	(get_address_description): Remove memory-tag related code.
      	* tree-ssa-ifcombine.c (bb_no_side_effects_p): Adjust.
      	* treestruct.def (TS_MEMORY_TAG, TS_MEMORY_PARTITION_TAG): Remove.
      	* tree-eh.c (cleanup_empty_eh): Do not leave stale SSA_NAMEs
      	and immediate uses in statements.  Document.
      	* gimple-pretty-print.c (dump_gimple_mem_ops): Adjust.
      	(dump_symbols): Remove.
      	(dump_gimple_mem_ops): Do not dump loaded or stored syms.
      	* alias.c (get_deref_alias_set): New function split out from ...
      	(get_alias_set): ... here.
      	* alias.h (get_deref_alias_set): Declare.
      	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Remove unused
      	type parameter.  Remove restrict pointer handling.  Create a
      	ref-all pointer in case type-based alias sets do not conflict.
      	(vect_analyze_data_refs): Remove SMT related code.
      	* tree-vect-stmts.c (vectorizable_store): Re-instantiate TBAA assert.
      	(vectorizable_load): Likewise.
      	* tree-data-ref.h (struct dr_alias): Remove symbol_tag field.
      	(DR_SYMBOL_TAG, DR_VOPS): Remove.
      	* tree-data-ref.c (dr_may_alias_p): Use the alias-oracle.
      	Ignore vops and SMTs.
      	(dr_analyze_alias): Likewise..
      	(free_data_ref): Likewise.
      	(create_data_ref): Likewise.
      	(analyze_all_data_dependences): Likewise.
      	(get_references_in_stmt): Adjust.
      	* tree-flow-inline.h (gimple_aliases_computed_p,
      	gimple_addressable_vars, gimple_call_clobbered_vars,
      	gimple_call_used_vars, gimple_global_var, may_aliases, memory_partition,
      	factoring_name_p, mark_call_clobbered, clear_call_clobbered,
      	compare_ssa_operands_equal, symbol_mem_tag, set_symbol_mem_tag,
      	gimple_mem_ref_stats): Remove.
      	(gimple_vop): New function.
      	(op_iter_next_use): Remove vuses and mayuses cases.
      	(op_iter_next_def): Remove vdefs case.
      	(op_iter_next_tree): Remove vuses, mayuses and vdefs cases.
      	(clear_and_done_ssa_iter): Do not set removed fields.
      	(op_iter_init): Likewise.  Skip vuse and/or vdef if requested.
      	Assert we are not iterating over vuses or vdefs if not also
      	iterating over uses or defs.
      	(op_iter_init_use): Likewise.
      	(op_iter_init_def): Likewise.
      	(op_iter_next_vdef): Remove.
      	(op_iter_next_mustdef): Likewise.
      	(op_iter_init_vdef): Likewise.
      	(compare_ssa_operands_equal): Likewise.
      	(link_use_stmts_after): Handle vuse operand.
      	(is_call_used): Use is_call_clobbered.
      	(is_call_clobbered): Global variables are always call clobbered,
      	query the call-clobbers bitmap.
      	(mark_call_clobbered): Ignore global variables.
      	(clear_call_clobbered): Likewise.
      	* tree-ssa-coalesce.c (create_outofssa_var_map): Adjust
      	virtual operands sanity check.
      	* tree.def (NAME_MEMORY_TAG, SYMBOL_MEMORY_TAG, MEMORY_PARTITION_TAG):
      	Remove.
      	(TARGET_MEM_REF): Remove TMR_TAG operand.
      	* tree-dfa.c (add_referenced_var): Initialize call-clobber state.
      	Remove call-clobber related code.
      	(remove_referenced_var): Likewise.  Do not clear mpt or symbol_mem_tag.
      	(dump_variable): Do not dump SMTs, memory stats, may-aliases or
      	partitions or escape reason.
      	(get_single_def_stmt, get_single_def_stmt_from_phi,
      	get_single_def_stmt_with_phi): Remove.
      	(dump_referenced_vars): Tidy.
      	(get_ref_base_and_extent): Allow bare decls.
      	(collect_dfa_stats): Adjust.
      	* graphite.c (rename_variables_in_stmt): Adjust.
      	(graphite_copy_stmts_from_block): Likewise.
      	(translate_clast): Likewise.
      	* tree-ssa-pre.c (struct bb_bitmap_sets): Add expr_dies bitmap.
      	(EXPR_DIES): New.
      	(translate_vuse_through_block): Use the oracle.
      	(phi_translate_1): Adjust.
      	(value_dies_in_block_x): Use the oracle.  Cache the outcome
      	in EXPR_DIES.
      	(valid_in_sets): Check if the VUSE for
      	a REFERENCE is available.
      	(eliminate): Do not remove stmts during elimination,
      	instead queue and remove them afterwards.
      	(do_pre): Do not rebuild alias info.
      	(pass_pre): Run TODO_rebuild_alias before PRE.
      	* tree-ssa-live.c (remove_unused_locals): Remove memory-tag code.
      	* tree-sra.c (sra_walk_function): Use gimple_references_memory_p.
      	(mark_all_v_defs_stmt): Remove.
      	(mark_all_v_defs_seq): Adjust.
      	(sra_replace): Likewise.
      	(scalarize_use): Likewise.
      	(scalarize_copy): Likewise.
      	(scalarize_init): Likewise.
      	(scalarize_ldst): Likewise.
      	(todoflags): Remove.
      	(tree_sra): Do not rebuild alias info.
      	(tree_sra_early): Adjust.
      	(pass_sra): Run TODO_update_address_taken before SRA.
      	* tree-predcom.c (set_alias_info): Remove.
      	(prepare_initializers_chain): Do not call it.
      	(mark_virtual_ops_for_renaming): Adjust.
      	(mark_virtual_ops_for_renaming_list): Remove.
      	(initialize_root_vars): Adjust.
      	(initialize_root_vars_lm): Likewise.
      	(prepare_initializers_chain): Likewise.
      	* tree-ssa-copy.c (may_propagate_copy): Remove memory-tag related code.
      	(may_propagate_copy_into_stmt): Likewise.
      	(merge_alias_info): Do nothing for now.
      	(propagate_tree_value_into_stmt): Adjust.
      	(stmt_may_generate_copy): Likewise.
      	* tree-ssa-forwprop.c (tidy_after_forward_propagate_addr): Do
      	not mark symbols for renaming.
      	(forward_propagate_addr_expr): Match up push/pop_stmt_changes
      	with the same statement, make sure to update the new pointed-to one.
      	* tree-ssa-dce.c (eliminate_unnecessary_stmts): Do not copy
      	call statements, do not mark symbols for renaming.
      	(mark_operand_necessary): Dump something.
      	(ref_may_be_aliased): New function.
      	(mark_aliased_reaching_defs_necessary_1): New helper function.
      	(mark_aliased_reaching_defs_necessary): Likewise.
      	(mark_all_reaching_defs_necessary_1): Likewise.
      	(mark_all_reaching_defs_necessary): Likewise.
      	(propagate_necessity): Do not process virtual PHIs.  For
      	non-aliased loads mark all reaching definitions as necessary.
      	For aliased loads and stores mark the immediate dominating
      	aliased clobbers as necessary.
      	(visited): New global static.
      	(perform_tree_ssa_dce): Free visited bitmap after propagating
      	necessity.
      	(remove_dead_phis): Perform simple dead virtual PHI removal.
      	(remove_dead_stmt): Properly unlink virtual operands when
      	removing stores.
      	(eliminate_unnecessary_stmts): Schedule PHI removal after
      	stmt removal.
      	* tree-ssa-ter.c (is_replaceable_p): Adjust.
      	(process_replaceable): Likewise.
      	(find_replaceable_in_bb): Likewise.
      	* tree-ssa.c (verify_ssa_name): Verify all VOPs are
      	based on the single gimple vop.
      	(verify_flow_insensitive_alias_info): Remove.
      	(verify_flow_sensitive_alias_info): Likewise.
      	(verify_call_clobbering): Likewise.
      	(verify_memory_partitions): Likewise.
      	(verify_alias_info): Likewise.
      	(verify_ssa): Adjust..
      	(execute_update_addresses_taken): Export.  Update SSA
      	manually.  Optimize only when optimizing.  Use a local bitmap.
      	(pass_update_address_taken): Remove TODO_update_ssa, add
      	TODO_dump_func.
      	(pass_update_address_taken): Just use TODO_update_address_taken.
      	(init_tree_ssa): Do not initialize addressable_vars.
      	(verify_ssa): Verify new VUSE / VDEF properties.
      	Verify that all stmts definitions have the stmt as SSA_NAME_DEF_STMT.
      	Do not call verify_alias_info.
      	(delete_tree_ssa): Clear the VUSE, VDEF operands.
      	Do not free the loaded and stored syms bitmaps.  Reset the escaped
      	and callused solutions.  Do not free addressable_vars.
      	Remove memory-tag related code.
      	(warn_uninitialized_var): Aliases are always available.
      	* tree-ssa-loop-prefetch.c (gather_memory_references): Adjust.
      	* lambda-code.c (can_put_in_inner_loop): Adjust.
      	(can_put_after_inner_loop): Likewise.
      	(perfect_nestify): Likewise.
      	* tree-vect-stmts.c (vect_stmt_relevant_p): Adjust.
      	(vect_gen_widened_results_half): Remove CALL_EXPR handling.
      	(vectorizable_conversion): Do not mark symbols for renaming.
      	* tree-inline.c (remap_gimple_stmt): Clear VUSE/VDEF.
      	(expand_call_inline): Unlink the calls virtual operands before
      	replacing it.
      	(tree_function_versioning): Do not call update_ssa if we are not
      	updating clones.  Simplify.
      	* tree-ssa-phiprop.c (phivn_valid_p): Adjust.
      	(propagate_with_phi): Likewise..
      	* tree-outof-ssa.c (create_temp): Remove memory tag and call
      	clobber code.  Assert we are not aliased or global.
      	* tree-flow.h: Include tree-ssa-alias.h
      	(enum escape_type): Remove.
      	(struct mem_sym_stats_d): Likewise.
      	(struct mem_ref_stats_d): Likewise.
      	(struct gimple_df): Add vop member.  Remove global_var,
      	call_clobbered_vars, call_used_vars, addressable_vars,
      	aliases_compted_p and mem_ref_stats members.  Add syms_to_rename,
      	escaped and callused members.
      	(struct ptr_info_def): Remove all members, add points-to solution
      	member pt.
      	(struct var_ann_d): Remove in_vuse_list, in_vdef_list,
      	call_clobbered, escape_mask, mpt and symbol_mem_tag members.
      	* Makefile.in (TREE_FLOW_H): Add tree-ssa-alias.h.
      	(tree-ssa-structalias.o): Remove tree-ssa-structalias.h.
      	(tree-ssa-alias.o): Likewise.
      	(toplev.o): Add tree-ssa-alias.h
      	(GTFILES): Remove tree-ssa-structalias.h, add tree-ssa-alias.h.
      	* gimple.c (gimple_set_bb): Fix off-by-one error.
      	(is_gimple_reg): Do not handle memory tags.
      	(gimple_copy): Also copy virtual operands.
      	Delay updating the statement.  Do not reset loaded and stored syms.
      	(gimple_set_stored_syms): Remove.
      	(gimple_set_loaded_syms): Likewise.
      	(gimple_call_copy_skip_args): Copy the virtual operands
      	and mark the new statement modified.
      	* tree-ssa-structalias.c (may_alias_p): Remove.
      	(set_uids_in_ptset): Take the alias set to prune with as
      	parameter.  Fold in the alias test of may_alias_p.
      	(compute_points_to_sets): Compute whether a ptr is dereferenced
      	in a local sbitmap.
      	(process_constraint): Deal with &ANYTHING on the lhs, reject all
      	other ADDRESSOF constraints on the lhs.
      	(get_constraint_for_component_ref): Assert that we don't get
      	ADDRESSOF constraints from the base of the reference.
      	Properly generate UNKNOWN_OFFSET for DEREF if needed.
      	(struct variable_info): Remove collapsed_to member.
      	(get_varinfo_fc): Remove.
      	(new_var_info): Do not set collapsed_to.
      	(dump_constraint): Do not follow cycles.
      	(dump_constraint_graph): Likewise.
      	(build_pred_graph): Likewise.
      	(build_succ_graph): Likewise.
      	(rewrite_constraints): Likewise.
      	(do_simple_structure_copy): Remove.
      	(do_rhs_deref_structure_copy): Remove.
      	(do_lhs_deref_structure_copy): Remove.
      	(collapse_rest_of_var): Remove.
      	(do_structure_copy): Re-implement.
      	(pta_stats): New global variable.
      	(dump_pta_stats): New function.
      	(struct constraint_expr): Make offset signed.
      	(UNKNOWN_OFFSET): Define special value.
      	(dump_constraint): Dump UNKNOWN_OFFSET as UNKNOWN.
      	(solution_set_expand): New helper function split out from ...
      	(do_sd_constraint): ... here.
      	(solution_set_add): Handle UNKNOWN_OFFSET.  Handle negative offsets.
      	(do_ds_constraint): Likewise.
      	(do_sd_constraint): Likewise.  Do not special-case ESCAPED = *ESCAPED
      	and CALLUSED = *CALLUSED.
      	(set_union_with_increment): Make inc argument signed.
      	(type_safe): Remove.
      	(get_constraint_for_ptr_offset): Handle unknown and negative
      	constant offsets.
      	(first_vi_for_offset): Handle offsets before start.  Bail
      	out early for offsets beyond the variable extent.
      	(first_or_preceding_vi_for_offset): New function.
      	(init_base_vars): Add ESCAPED = ESCAPED + UNKNOWN_OFFSET constraint.
      	Together with ESCAPED = *ESCAPED this properly computes reachability.
      	(find_what_var_points_to): New function.
      	(find_what_p_points_to): Implement in terms of find_what_var_points_to.
      	(pt_solution_reset, pt_solution_empty_p, pt_solution_includes_global,
      	pt_solution_includes_1, pt_solution_includes, pt_solutions_intersect_1,
      	pt_solutions_intersect): New functions.
      	(compute_call_used_vars): Remove.
      	(compute_may_aliases): New main entry into PTA computation.
      	* gimple.h (gimple_p): New typedef.
      	(struct gimple_statement_base): Remove references_memory_p.
      	(struct gimple_statement_with_memory_ops_base): Remove
      	vdef_ops, vuse_ops, stores and loads members.  Add vdef and vuse
      	members.
      	(gimple_vuse_ops, gimple_set_vuse_ops, gimple_vdef_ops,
      	gimple_set_vdef_ops, gimple_loaded_syms, gimple_stored_syms,
      	gimple_set_references_memory): Remove.
      	(gimple_vuse_op, gimple_vdef_op, gimple_vuse, gimple_vdef,
      	gimple_vuse_ptr, gimple_vdef_ptri, gimple_set_vuse, gimple_set_vdef):
      	New functions.
      	* tree-cfg.c (move_block_to_fn): Fix off-by-one error.
      	(verify_expr): Allow RESULT_DECL.
      	(gimple_duplicate_bb): Do not copy virtual operands.
      	(gimple_duplicate_sese_region): Adjust.
      	(gimple_duplicate_sese_tail): Likewise.
      	(mark_virtual_ops_in_region): Remove.
      	(move_sese_region_to_fn): Do not call it.
      	* passes.c (init_optimization_passes): Remove pass_reset_cc_flags
      	and pass_simple_dse.
      	(execute_function_todo): Handle TODO_update_address_taken,
      	call execute_update_addresses_taken for TODO_rebuild_alias.
      	(execute_todo): Adjust.
      	(execute_one_pass): Init dump files early.
      	* ipa-struct-reorg.c (finalize_var_creation): Do not mark vars
      	call-clobbered.
      	(create_general_new_stmt): Clear vops.
      	* tree-ssa-reassoc.c (get_rank): Adjust.
      	* tree-vect-slp.c (vect_create_mask_and_perm): Do not mark
      	symbols for renaming.
      	* params.def (PARAM_MAX_ALIASED_VOPS): Remove.
      	(PARAM_AVG_ALIASED_VOPS): Likewise.
      	* tree-ssanames.c (init_ssanames): Allocate SYMS_TO_RENAME.
      	(duplicate_ssa_name_ptr_info): No need to copy the shared bitmaps.
      	* tree-ssa-operands.c: Simplify for new virtual operand
      	representation.
      	(operand_build_cmp, copy_virtual_operands,
      	create_ssa_artificial_load_stmt, add_to_addressable_set,
      	gimple_add_to_addresses_taken): Remove public functions.
      	(unlink_stmt_vdef): New function.
      
      	* gcc.dg/pr19633-1.c: Adjust.
      	* gcc.dg/torture/pta-callused-1.c: Likewise.
      	* gcc.dg/torture/pr39074-2.c: Likewise.
      	* gcc.dg/torture/pr39074.c: Likewise.
      	* gcc.dg/torture/pta-ptrarith-3.c: New testcase.
      	* gcc.dg/torture/pr30375.c: Adjust.
      	* gcc.dg/torture/pr33563.c: Likewise.
      	* gcc.dg/torture/pr33870.c: Likewise.
      	* gcc.dg/torture/pr33560.c: Likewise.
      	* gcc.dg/torture/pta-structcopy-1.c: New testcase.
      	* gcc.dg/torture/ssa-pta-fn-1.c: Likewise.
      	* gcc.dg/tree-ssa/alias-15.c: Remove.
      	* gcc.dg/tree-ssa/ssa-dce-4.c: New testcase.
      	* gcc.dg/tree-ssa/pr26421.c: Adjust.
      	* gcc.dg/tree-ssa/ssa-fre-10.c: XFAIL.
      	* gcc.dg/tree-ssa/ssa-dce-5.c: New testcase.
      	* gcc.dg/tree-ssa/pr23382.c: Adjust.
      	* gcc.dg/tree-ssa/ssa-fre-20.c: New testcase.
      	* gcc.dg/tree-ssa/alias-16.c: Adjust.
      	* gcc.dg/tree-ssa/ssa-fre-13.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-14.c: Likewise.
      	* gcc.dg/tree-ssa/alias-18.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-15.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-lim-3.c: Likewise.
      	* gcc.dg/tree-ssa/alias-19.c: Likewise.
      	* gcc.dg/tree-ssa/pta-ptrarith-1.c: New testcase.
      	* gcc.dg/tree-ssa/pr13146.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-pre-23.c: Likewise.
      	* gcc.dg/tree-ssa/pta-ptrarith-2.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-fre-18.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-pre-24.c: New XFAILed testcase.
      	* gcc.dg/tree-ssa/ssa-fre-19.c: New testcase.
      	* gcc.dg/tree-ssa/alias-20.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-dse-12.c: Likewise.
      	* gcc.dg/tree-ssa/pr38895.c: Likewise.
      	* gcc.dg/uninit-B.c: XFAIL.
      	* gcc.dg/vect/no-vfa-vect-43.c: Adjust.
      	* gcc.dg/uninit-pr19430.c: XFAIL.
      	* g++.dg/tree-ssa/pr13146.C: New testcase.
      	* g++.dg/opt/pr36187.C: Adjust.
      	* g++.dg/torture/20090329-1.C: New testcase.
      
      From-SVN: r145494
      Richard Guenther committed
  22. 20 Feb, 2009 1 commit
  23. 02 Sep, 2008 1 commit
    • backport: configure: Regenerate. · f8bf9252
      2008-09-02  Sebastian Pop  <sebastian.pop@amd.com>
      	    Tobias Grosser  <grosser@fim.uni-passau.de>
      	    Jan Sjodin  <jan.sjodin@amd.com>
      	    Harsha Jagasia  <harsha.jagasia@amd.com>
      	    Dwarakanath Rajagopal  <dwarak.rajagopal@amd.com>
      	    Konrad Trifunovic  <konrad.trifunovic@inria.fr>
      	    Adrien Eliche  <aeliche@isty.uvsq.fr>
      
      	Merge from graphite branch.
      	* configure: Regenerate.
      	* Makefile.in: Regenerate.
      	* configure.ac (host_libs): Add ppl and cloog.
      	Add checks for PPL and CLooG.
      	* Makefile.def (ppl, cloog): Added modules and dependences.
      	* Makefile.tpl (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): New.
      	(HOST_PPLLIBS, HOST_PPLINC, HOST_CLOOGLIBS, HOST_CLOOGINC): New.
      
      gcc/
      	* graphite.c: New.
      	* graphite.h: New.
      	* tree-loop-linear.c (perfect_loop_nest_depth): Export.
      	* doc/invoke.texi (-floop-block, -floop-interchange,
      	-floop-strip-mine): Document new flags.
      	* tree-into-ssa.c (gimple_vec): Moved...
      	* tree-loop-distribution.c (rdg_component): Moved...
      	* cfgloopmanip.c: Include tree-flow.h.
      	(update_dominators_in_loop): New.
      	(create_empty_if_region_on_edge): New.
      	(create_empty_loop_on_edge): New.
      	(loopify): Use update_dominators_in_loop.
      	* tree-pass.h (pass_graphite_transforms): Declared.
      	* configure: Regenerate.
      	* tree-phinodes.c (make_phi_node): Export.
      	(add_phi_node_to_bb): New, split from create_phi_node.
      	* tree-chrec.c (for_each_scev_op): New.
      	* tree-chrec.h (for_each_scev_op): Declared.
      	* tree-ssa-loop-ivopts.c (get_phi_with_result): New.
      	(remove_statement): Call get_phi_with_result.
      	* config.in (HAVE_cloog): Undef.
      	* gdbinit.in (pgg): New.
      	* timevar.def (TV_GRAPHITE_TRANSFORMS): New.
      	* tree-ssa-loop.c (graphite_transforms): New.
      	(gate_graphite_transforms): New.
      	(pass_graphite_transforms): New.
      	* configure.ac (PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC,
      	HAVE_cloog): Defined.
      	* tree-vectorizer.c (rename_variables_in_bb): Export.
      	* tree-data-ref.c (dr_may_alias_p): Export.
      	(stmt_simple_memref_p): New.
      	(find_data_references_in_stmt): Export.
      	(find_data_references_in_loop): Export.
      	(create_rdg_edge_for_ddr): Initialize RDGE_RELATION.
      	(create_rdg_edges_for_scalar): Initialize RDGE_RELATION.
      	(create_rdg_vertices): Export.
      	(build_empty_rdg): New.
      	(build_rdg): Call build_empty_rdg.  Free dependence_relations.
      	* tree-data-ref.h (rdg_component): ... here.
      	(scop_p): New.
      	(struct data_reference): Add a field scop.
      	(DR_SCOP): New.
      	(find_data_references_in_loop): Declared.
      	(find_data_references_in_stmt): Declared.
      	(create_rdg_vertices): Declared.
      	(dr_may_alias_p): Declared.
      	(stmt_simple_memref_p): Declared.
      	(struct rdg_edge): Add a field ddr_p relation.
      	(build_empty_rdg): Declared.
      	* lambda.h (lambda_matrix): Declare a VEC of.
      	(find_induction_var_from_exit_cond): Declared.
      	(lambda_vector_compare): New.
      	* common.opt (fgraphite, floop-strip-mine,
      	floop-interchange, floop-block): New flags.
      	* lambda-code.c (find_induction_var_from_exit_cond): Export.
      	* cfgloop.c (is_loop_exit): New.
      	* cfgloop.h (is_loop_exit): Declared.
      	(create_empty_if_region_on_edge): Declared.
      	(create_empty_loop_on_edge): Declared.
      	* tree-flow.h (add_phi_node_to_bb): Declared.
      	(make_phi_node): Declared.
      	(rename_variables_in_bb): Declared.
      	(perfect_loop_nest_depth): Declared.
      	(graphite_transform_loops): Declared.
      	* Makefile.in (cfgloopmanip.o): Depend on TREE_FLOW_H.
      	(graphite.o-warn): Add -Wno-error.
      	(PPLLIBS, PPLINC, CLOOGLIBS, CLOOGINC): Declared.
      	(LIBS): Add GMPLIBS, CLOOGLIBS, PPLLIBS.
      	(INCLUDES): Add PPLINC, CLOOGINC.
      	(OBJS-common): Add graphite.o.
      	(graphite.o): Add rule.
      	* gimple.h (gimple_vec): ... here.
      	* tree-cfg.c (print_loops): Start printing at ENTRY_BLOCK_PTR.
      	* passes.c (init_optimization_passes): Schedule 
      	pass_graphite_transforms.
      
      testsuite/
      
      	* gcc.dg/graphite/scop-{0,1,2,3,4,5,6,7,8,9,
      	10,11,12,13,14,15,16,17,18}.c: New.
      	* gcc.dg/graphite/graphite.exp: New.
      	* gcc.dg/graphite/scop-matmult.c: New.
      	* gcc.dg/graphite/block-0.c: New.
      	* lib/target-supports.exp (check_effective_target_fgraphite): New.
      	* gfortran.dg/graphite/block-1.f90: New.
      	* gfortran.dg/graphite/scop-{1,2}.f: New.
      	* gfortran.dg/graphite/block-{1,3,4}.f90: New.
      	* gfortran.dg/graphite/graphite.exp: New.
      
      
      Co-Authored-By: Adrien Eliche <aeliche@isty.uvsq.fr>
      Co-Authored-By: Dwarakanath Rajagopal <dwarak.rajagopal@amd.com>
      Co-Authored-By: Harsha Jagasia <harsha.jagasia@amd.com>
      Co-Authored-By: Jan Sjodin <jan.sjodin@amd.com>
      Co-Authored-By: Konrad Trifunovic <konrad.trifunovic@inria.fr>
      Co-Authored-By: Tobias Grosser <grosser@fim.uni-passau.de>
      
      From-SVN: r139893
      Sebastian Pop committed
  24. 26 Aug, 2008 1 commit
    • [multiple changes] · 058e97ec
      2008-08-26  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* ira-build.c, ira-color.c, ira-costs.c, ira.h, ira-lives.c,
      	ira.c, ira-conflicts.c, ira-emit.c, ira-int.h: New files.
      
      	* doc/passes.texi: Describe IRA.
      
      	* doc/tm.texi (IRA_COVER_CLASSES,
      	IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Describe the new macros.
      
      	* doc/invoke.texi (ira-max-loops-num): Describe the new parameter.
      	(-fira, -fira-algorithm, -fira-coalesce, -fno-ira-move-spills,
      	-fira-propagate-cost, -fno-ira-share-save-slots,
      	-fno-ira-share-spill-slots, -fira-verbose): Describe new options.
      
      	* flags.h (ira_algorithm): New enumeration.
      	(flag_ira_algorithm, flag_ira_verbose): New external variable
      	declarations.
      
      	* postreload.c (gate_handle_postreload): Don't do post reload
      	optimizations unless the reload is completed.
      
      	* reload.c (push_reload, find_dummy_reload): Use DF_LR_OUT for
      	IRA.
      
      	* tree-pass.h (pass_ira): New external variable declaration.
      
      	* reload.h: Add 2008 to the Copyright.
          
      	* cfgloopanal.c: Include params.h.
      	(estimate_reg_pressure_cost): Decrease cost for IRA optimization
      	mode.
          
      	* params.h (IRA_MAX_LOOPS_NUM): New macro.
      
      	* toplev.c (ira.h): New include.
      	(flag_ira_algorithm, flag_ira_verbose): New external variables.
      	(backend_init_target): Call ira_init.
      	(backend_init): Call ira_init_once.
      	(finalize): Call finish_ira_once.
      
      	* toplev.h (flag_ira, flag_ira_coalesce, flag_ira_move_spills,
      	flag_ira_share_save_slots, flag_ira_share_spill_slots): New
      	external variables.
      
      	* regs.h (contains_reg_of_mode, move_cost, may_move_in_cost,
      	may_move_out_cost): New external variable declarations.
      	(move_table): New typedef.
          
      	* caller-save.c: Include headers output.h and ira.h.
      	(no_caller_save_reg_set): New global variable.
      	(save_slots_num, save_slots): New variables.
      	(reg_save_code, reg_restore_code, add_stored_regs): Add
      	prototypes.
      	(init_caller_save): Set up no_caller_save_reg_set.
      	(init_save_areas): Reset save_slots_num.
      	(saved_hard_reg): New structure.
      	(hard_reg_map, saved_regs_num, all_saved_regs): New variables.
      	(initiate_saved_hard_regs, new_saved_hard_reg,
      	finish_saved_hard_regs, saved_hard_reg_compare_func): New
      	functions.
      	(setup_save_areas): Add code for sharing stack slots.
      	(all_blocks): New variable.
      	(save_call_clobbered_regs): Process pseudo-register too.
      	(mark_set_regs): Process pseudo-register too.
      	(insert_one_insn): Put the insn after bb note in a empty basic
      	block.  Add insn check.
          
      	* global.c (eliminable_regset): Make it external.
      	(mark_elimination): Use DF_LR_IN for IRA.
      	(pseudo_for_reload_consideration_p): New.
      	(build_insn_chain): Make it external.  Don't ignore spilled
      	pseudos for IRA.  Use pseudo_for_reload_consideration_p.
      	(gate_handle_global_alloc): New function.
      	(pass_global_alloc): Add the gate function.
      
      	* opts.c (decode_options): Set up flag_ira.  Print the warning for
      	-fira.
      	(common_handle_option): Process -fira-algorithm and -fira-verbose.
      
      	* timevar.def (TV_IRA, TV_RELOAD): New passes.
      
      	* regmove.c (regmove_optimize): Don't do replacement of output for
      	IRA.
      
      	* hard-reg-set.h (no_caller_save_reg_set, reg_class_subclasses):
      	New external variable declarations.
      
      	* local-alloc.c (update_equiv_regs): Make it external.  Return
      	true if jump label rebuilding should be done.  Rescan new_insn for
      	notes.
      	(gate_handle_local_alloc): New function.
      	(pass_local_alloc): Add the gate function.
      
      	* alias.c (value_addr_p, stack_addr_p): New functions.
      	(nonoverlapping_memrefs_p): Use them for IRA.
      
      	* common.opt (fira, fira-algorithm, fira-coalesce,
      	fira-move-spills, fira-share-save-slots, fira-share-spill-slots,
      	fira-verbose): New options.
      
      	* regclass.c (reg_class_subclasses, contains_reg_of_mode,
      	move_cost, may_move_in_cost, may_move_out_cost): Make the
      	variables external.
      	(move_table): Remove typedef.
      	(init_move_cost): Make it external.
      	(allocate_reg_info, resize_reg_info, setup_reg_classes): New
      	functions.
      
      	* rtl.h (init_move_cost, allocate_reg_info, resize_reg_info,
      	setup_reg_classes): New function prototypes.
      	(eliminable_regset): New external variable declaration.
      	(build_insn_chain, update_equiv_regs): New function prototypes.
          
      	* Makefile.in (IRA_INT_H): New definition.
      	(OBJS-common): Add ira.o, ira-build.o, ira-costs.o,
      	ira-conflicts.o, ira-color.o, ira-emit.o, and ira-lives.o.
      	(reload1.o, toplev.o): Add dependence on ira.h.
      	(cfgloopanal.o): Add PARAMS_H.
      	(caller-save.o): Add dependence on output.h and ira.h.
      	(ira.o, ira-build.o, ira-costs.o, ira-conflicts.o, ira-color.o,
      	ira-emit.o, ira-lives.o): New entries.
      
      	* passes.c (pass_ira): New pass.
      
      	* params.def (PARAM_IRA_MAX_LOOPS_NUM): New parameter.
      
      	* reload1.c (ira.h): Include the header.
      	(changed_allocation_pseudos): New bitmap.
      	(init_reload): Initiate the bitmap.
      	(compute_use_by_pseudos): Permits spilled registers in FROM.
      	(temp_pseudo_reg_arr): New variable.
      	(reload): Allocate and free temp_pseudo_reg_arr.  Sort pseudos for
      	IRA.  Call alter_reg with the additional parameter.  Don't clear
      	spilled_pseudos for IRA.  Restore original insn chain for IRA.
      	Clear changed_allocation_pseudos at the end of reload.
      	(calculate_needs_all_insns): Call IRA's mark_memory_move_deletion.
      	(hard_regno_to_pseudo_regno): New variable.
      	(count_pseudo): Check spilled pseudos.  Set up
      	hard_regno_to_pseudo_regno.
      	(count_spilled_pseudo): Check spilled pseudos. Update
      	hard_regno_to_pseudo_regno.
      	(find_reg): Use better_spill_reload_regno_p.  Check
      	hard_regno_to_pseudo_regno.
      	(alter_reg): Set up spilled_pseudos.  Add a new parameter.  Add
      	code for IRA.
      	(eliminate_regs_1): Use additional parameter for alter_reg.
      	(finish_spills): Set up pseudo_previous_regs only for spilled
      	pseudos.  Call reassign_pseudos once for all spilled pseudos, pass
      	more arguments.  Don't clear live_throughout and dead_or_set for
      	spilled pseudos.  Use additional parameter for alter_reg.  Call
      	mark_allocation_change.  Set up changed_allocation_pseudos.
      	Remove sanity check.
      	(emit_input_reload_insns, delete_output_reload): Use additional
      	parameter for alter_reg.  Call mark_allocation_change.
      	(substitute, gen_reload_chain_without_interm_reg_p): New
      	functions.
      	(reloads_conflict): Use gen_reload_chain_without_interm_reg_p.
          
      	* testsuite/gcc.dg/20080410-1.c: New file.
      	
      	* config/s390/s390.h (IRA_COVER_CLASSES,
      	IRA_HARD_REGNO_ADD_COST_MULTIPLIER): Define.
      
      	* config/sparc/sparc.h (IRA_COVER_CLASSES): New macro.
      
      	* config/i386/i386.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/ia64/ia64.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/rs6000/rs6000.h (IRA_COVER_CLASSES): Ditto.
      
      	* config/arm/arm.h (IRA_COVER_CLASSES): Ditto.
          
      	* config/alpha/alpha.h (IRA_COVER_CLASSES): Ditto.
          
      	2008-08-24  Jeff Law  <law@redhat.com>
      	* ira.c (setup_reg_class_intersect_union): Prefer smallest class
      	when ignoring unavailable registers.
      
      	2008-08-24  Jeff Law  <law@redhat.com>
      	* ira-color.c (coalesced_pseudo_reg_slot_compare): Check
      	FRAME_GROWS_DOWNWARD and STACK_GROWS_DOWNWARD.
      	* ira.c (setup_eliminable_regset): Check stack_realign_needed.
      	* config/mn10300/mn10300.h (IRA_COVER_CLASSES): New macro.
      
      	2008-06-03 Steve Chamberlain <steve.chamberlain@gmail.com>
      	* ira-build.c (allocno_range_compare_func): Stabilize sort.
      
      	2008-05-29 Andy Hutchinson <hutchinsonandy@aim.com>
      	* config/avr/avr.h (IRA_COVER_CLASSES): New macro.
      	* reload1.c (find_reg): Process registers in register allocation order.
      
      	2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
      	* toplev.c (backend_init_target): Move ira_init call from
      	here...
      	(lang_dependent_init_target): ...to here.
      
      	2008-05-10 Richard Sandiford <rsandifo@nildram.co.uk>
      	* ira.c (setup_class_subset_and_memory_move_costs): Don't
      	calculate memory move costs for NO_REGS.
      
      	2008-05-05 Kaz Kojima <kkojima@gcc.gnu.org>
      	* ira-color.c (ira_fast_allocation): Use no_stack_reg_p only if
      	STACK_REGS is defined.
      
      	2008-04-08 Andrew Pinski <andrew_pinski@playstation.sony.com>
      	* config/spu/spu.h (IRA_COVER_CLASSES): New macro.
      
      	2008-04-04 Bernd Schmidt <bernd.schmidt@analog.com>
      	* config/bfin/bfin.h (IRA_COVER_CLASSES): New macro.
      
      	2008-04-04 Kaz Kojima <kkojima@gcc.gnu.org>
      	* config/sh/sh.h (IRA_COVER_CLASSES): Define.
      	* config/sh/sh.md (movsicc_true+3): Check if emit returns a
      	barrier.
      
      From-SVN: r139590
      Vladimir Makarov committed
  25. 02 Jul, 2008 1 commit
  26. 04 Jun, 2008 1 commit
    • tree-call-cdce.c: New file. · c2699190
      2008-06-04  Xinliang David Li  <davidxl@google.com>
      
      	* tree-call-cdce.c: New file. 
      	(cond_dead_built_in_calls): New static variable.
      	(input_domain): New struct.
      	(check_pow): New function.
      	(check_builtin_call): Ditto.
      	(check_target_format): Ditto.
      	(is_call_dce_candidate): Ditto.
      	(gen_one_condition): Ditto.
      	(gen_conditions_for_domain): Ditto.
      	(get_domain): Ditto.
      	(gen_conditions_for_pow_cst_base): Ditto.
      	(gen_conditions_for_pow_int_base): Ditto.
      	(gen_conditions_for_pow): Ditto.
      	(get_no_error_domain): Ditto.
      	(gen_shrink_wrap_conditions): Ditto.
      	(shrink_wrap_one_built_in_call): Ditto.
      	(shink_wrap_conditional_dead_built_in_calls): Ditto.
      	(tree_call_cdce): Ditto.
      	(gate_call_cdce): Ditto.
      	(pass_call_cdce): New gimple pass.
      	* passes.c: (init_optimization_passes): New pass.
      	* tree-pass.h: New pass declaration.
      	* opts.c (decode_options): New flag setting.
      	* common.opt: Add -ftree-builtin-call-dce flag.
      	* Makefile.in: Add new source file.
      	* tempvar.def: New tv_id.
      	* doc/invoke.texi (-ftree-builtin-call-dce): New flag.
      
      2008-06-04  Xinliang David Li  <davidxl@google.com>
      	* gcc.dg/cdce1.c: New test.
      	* gcc.dg/cdce2.c: Ditto.
      	* g++.dg/cdce3.C: Ditto.
      
      From-SVN: r136374
      Xinliang David Li committed
  27. 21 Apr, 2008 1 commit
    • dbgcnt.def (ra_byte_scan): Added. · cc806ac1
      2008-04-24  Richard Sandiford  <rsandifo@nildram.co.uk>
      	    Kenneth Zadeck <zadeck@naturalbridge.com>
      
      	* dbgcnt.def (ra_byte_scan): Added.
      	* dbgcnt.c (dbg_cnt): Added code to print message to dump_file
      	when the last hit happens for a counter.  
      	* timevar.def (TV_DF_BYTE_LR): New variable.
      	* tree-pass.h (pass_fast_rtl_byte_dce): New pass.
      	* passes.c (pass_fast_rtl_byte_dce): New pass.
      	* fwprop.c (update_df): Added mode to call df_ref_create.
      	Renamed DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
      	DF_REF_EXTRACT_OFFSET.
      	* df.h (DF_BYTE_LR, DF_BYTE_LR_BB_INFO, DF_BYTE_LR_IN, 
      	DF_BYTE_LR_OUT, df_byte_lr): New macro.
      	(df_mm): New enum.
      	(df_ref_extract): Added mode field.
      	(DF_REF_WIDTH, DF_REF_OFFSET) Renamed to DF_REF_EXTRACT_WIDTH and
      	DF_REF_EXTRACT_OFFSET.
      	(DF_REF_EXTRACT_MODE): New macro.
      	(df_byte_lr_bb_info): New structure.
      	(df_print_byte_regset, df_compute_accessed_bytes, 
      	df_byte_lr_add_problem, df_byte_lr_get_regno_start,
      	df_byte_lr_get_regno_len, df_byte_lr_simulate_defs,
      	df_byte_lr_simulate_uses,
      	df_byte_lr_simulate_artificial_refs_at_top,
      	df_byte_lr_simulate_artificial_refs_at_end,
      	df_compute_accessed_bytes): New function.
      	(df_ref_create): Add parameter.
      	(df_byte_lr_get_bb_info): New inline function.
      	* df-scan.c (df_ref_record, df_uses_record,
      	df_ref_create_structure): Added mode parameter.
      	(df_ref_create, df_notes_rescan, df_ref_record, df_def_record_1, 
      	df_defs_record, df_uses_record, df_get_conditional_uses,
      	df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect, 
      	df_entry_block_defs_collect, df_exit_block_uses_collect):
      	Added mode parameter to calls to df_ref_record, df_uses_record,
      	df_ref_create_structure.
             	(df_ref_equal_p, df_ref_compare): Added test for modes.
      	(df_ref_create_structure): Added code to set mode.  Renamed
      	DF_REF_WIDTH and DF_REF_OFFSET to DF_REF_EXTRACT_WIDTH and
      	DF_REF_EXTRACT_OFFSET.
      	* df-core.c (df_print_byte_regset): New function.
      	* df-byte-scan.c: New file.
      	* df-problems.c (df_rd_transfer_function): Removed unnecessary
      	calls to BITMAP_FREE.  
      	(df_byte_lr_problem_data, df_problem problem_BYTE_LR): New structure.
      	(df_byte_lr_get_regno_start, df_byte_lr_get_regno_len,
      	df_byte_lr_set_bb_info, df_byte_lr_free_bb_info, 
      	df_byte_lr_check_regs, df_byte_lr_expand_bitmap, 
      	df_byte_lr_alloc, df_byte_lr_reset, df_byte_lr_bb_local_compute,
      	df_byte_lr_local_compute, df_byte_lr_init,
      	df_byte_lr_confluence_0, df_byte_lr_confluence_n, 
      	df_byte_lr_transfer_function, df_byte_lr_free, 
      	df_byte_lr_top_dump, df_byte_lr_bottom_dump,
      	df_byte_lr_add_problem, df_byte_lr_simulate_defs, 
      	df_byte_lr_simulate_uses,
      	df_byte_lr_simulate_artificial_refs_at_top,
      	df_byte_lr_simulate_artificial_refs_at_end): New function.
      	* dce.c (byte_dce_process_block): New function.
      	(dce_process_block): au is now passed in rather than computed
      	locally.  Changed loops that look at artificial defs to not look
      	for conditional or partial ones, because there never are any.  
      	(fast_dce): Now is able to drive byte_dce_process_block or 
      	dce_process_block depending on the kind of dce being done.
      	(rest_of_handle_fast_dce): Add parameter to fast_dce.
      	(rest_of_handle_fast_byte_dce): New function.
      	(rtl_opt_pass pass_fast_rtl_byte_dce): New pass.
      	* Makefile.in (df-byte-scan.o, debugcnt.o): Added dependencies.
      
      
      
      
      Co-Authored-By: Kenneth Zadeck <zadeck@naturalbridge.com>
      
      From-SVN: r134523
      Richard Sandiford committed
  28. 12 Mar, 2008 1 commit
    • Makefile.in (OBJS-common): Add tree-ssa-phiprop.o · 67514449
      2008-03-12  Richard Guenther  <rguenther@suse.de>
      
      	* Makefile.in (OBJS-common): Add tree-ssa-phiprop.o
      	(tree-ssa-phiprop.o): Copy dependencies from tree-ssa-forwprop.o.
      	* timevar.def (TV_TREE_PHIPROP): Add.
      	* tree-ssa-phiprop.c: Split from tree-ssa-forwprop.c, added
      	pass description.  Use TV_TREE_PHIPROP.
      	* tree-ssa-forwprop.c: Remove phiprop code.
      
      From-SVN: r133140
      Richard Guenther committed
  29. 28 Feb, 2008 1 commit
    • invoke.texi: Document -ftree-loop-distribution. · dea61d92
      	* doc/invoke.texi: Document -ftree-loop-distribution.
      	* tree-loop-distribution.c: New.
      	* tree-pass.h (pass_loop_distribution): New.
      	* graphds.h (struct graph): Add htab_t indices.
      	* timevar.def (TV_TREE_LOOP_DISTRIBUTION): New.
      	* tree-vectorizer.c (rename_variables_in_loop): Extern.
      	(slpeel_tree_duplicate_loop_to_edge_cfg): Init PENDING_STMT to NULL.
      	* tree-vectorizer.h (tree_duplicate_loop_on_edge): Declared.
      	* tree-data-ref.c (debug_data_dependence_relations): New.
      	(dump_data_dependence_relation): Also print data references.
      	(free_data_ref): Extern.
      	(same_access_functions): Moved...
      	(find_vertex_for_stmt): Renamed rdg_vertex_for_stmt.
      	(dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
      	debug_rdg_component, dump_rdg, debug_rdg, dot_rdg_1, dot_rdg,
      	struct rdg_vertex_info, rdg_vertex_for_stmt): New.
      	(create_rdg_edge_for_ddr, create_rdg_vertices): Cleaned up.
      	(stmts_from_loop): Skip LABEL_EXPR.
      	(hash_stmt_vertex_info, eq_stmt_vertex_info, hash_stmt_vertex_del): New.
      	(build_rdg): Initialize rdg->indices htab.
      	(free_rdg, stores_from_loop, ref_base_address,
      	rdg_defs_used_in_other_loops_p, have_similar_memory_accesses,
      	have_similar_memory_accesses_1, ref_base_address_1,
      	remove_similar_memory_refs): New.
      	* tree-data-ref.h: Depend on tree-chrec.h.
      	(debug_data_dependence_relations, free_data_ref): Declared.
      	(same_access_functions): ... here.
      	(ddr_is_anti_dependent, ddrs_have_anti_deps, ddr_dependence_level): New.
      	(struct rdg_vertex): Add has_mem_write and has_mem_reads.
      	(RDGV_HAS_MEM_WRITE, RDGV_HAS_MEM_READS, RDG_STMT,
      	RDG_MEM_WRITE_STMT, RDG_MEM_READS_STMT): New.
      	(dump_rdg_vertex, debug_rdg_vertex, dump_rdg_component,
      	debug_rdg_component, dump_rdg, debug_rdg, dot_rdg,
      	rdg_vertex_for_stmt): Declared.
      	(struct rdg_edge): Add level.
      	(RDGE_LEVEL): New.
      	(free_rdg, stores_from_loop, remove_similar_memory_refs,
      	rdg_defs_used_in_other_loops_p, have_similar_memory_accesses): Declared.
      	(rdg_has_similar_memory_accesses): New.
      	* tree-vect-analyze.c: Remove unused static decls.
      	* lambda.h (dependence_level): New.
      	* common.opt (ftree-loop-distribution): New.
      	* tree-flow.h (mark_virtual_ops_in_bb, 
      	slpeel_tree_duplicate_loop_to_edge_cfg,
      	rename_variables_in_loop): Declared.
      	* Makefile.in (TREE_DATA_REF_H): Depend on tree-chrec.h.
      	(OBJS-common): Add tree-loop-distribution.o.
      	(tree-loop-distribution.o): New rule.
      	* tree-cfg.c (mark_virtual_ops_in_bb): New.
      	(mark_virtual_ops_in_region): Use mark_virtual_ops_in_bb.
      	* passes.c (init_optimization_passes): Schedule pass_loop_distribution.
      
      	* testsuite/gcc.dg/tree-ssa/ldist-{1..12}.c: New.
      
      From-SVN: r132745
      Sebastian Pop committed
  30. 15 Sep, 2007 1 commit
    • tree-parloops.c: New file. · 5f40b3cb
      	* tree-parloops.c: New file.
      	* tree-ssa-operands.h (free_stmt_operands): Declare.
      	* tree-ssa-loop-manip.c (split_loop_exit_edge): Return the new basic
      	block.
      	* tree-pass.h (pass_parallelize_loops): Declare.
      	* omp-low.c (expand_omp_parallel, expand_omp_for): Update SSA form for
      	virtual operands.
      	(build_omp_regions_1): Allow analysing just a single OMP region and
      	its subregions.
      	( build_omp_regions_root, omp_expand_local): New functions.
      	(build_omp_regions): Add argument to build_omp_regions_1 call.
      	* builtins.def (DEF_GOMP_BUILTIN): Initialize OMP builtins when
      	autoparallelization is run.
      	* timevar.def (TV_TREE_PARALLELIZE_LOOPS): New.
      	* tree-ssa-loop.c (gate_tree_parallelize_loops, tree_parallelize_loops,
      	pass_parallelize_loops): New.
      	* common.opt (ftree-parallelize-loops): New.
      	* tree-flow.h (omp_expand_local, tree_duplicate_sese_tail,
      	parallelize_loops): Declare.
      	(add_phi_args_after_copy, split_loop_exit_edge): Declaration changed.
      	* Makefile.in (tree-parloops.o): Added.
      	* tree-cfg.c (add_phi_args_after_copy_edge, tree_duplicate_sese_tail):
      	New functions.
      	(add_phi_args_after_copy_bb): Use add_phi_args_after_copy_edge.
      	(add_phi_args_after_copy): Call add_phi_args_after_copy_edge for
      	one extra edge as well.
      	(tree_duplicate_sese_region): Add argument to add_phi_args_after_copy.
      	Use VEC_free to free doms vector.
      	(move_block_to_fn): Update loop info. Remove phi nodes for virtual
      	operands.  Recompute operand caches in the new function.
      	(move_sese_region_to_fn): Update loop info.
      	* passes.c (init_optimization_passes): Add pass_parallelize_loops.
      	* tree-ssa-operands.c (free_stmt_operands): New function.
      
      	* doc/passes.texi: Document autoparallelization.
      	* doc/invoke.texi (-ftree-parallelize-loops): New option.
      
      	* gcc.dg/tree-ssa/parallelization-1.c: New test.
      
      From-SVN: r128517
      Zdenek Dvorak committed
  31. 28 Jul, 2007 1 commit
  32. 26 Jul, 2007 1 commit
  33. 12 Jun, 2007 1 commit
    • re PR tree-optimization/15353 ([tree-ssa] Merge two "if"s if one subsumes the other.) · 18d08014
      2007-06-12  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/15353
      	PR tree-optimization/31657
      	* passes.c (init_optimization_passes): Add pass_tree_ifcombine.
      	* timevar.def: Add TV_TREE_IFCOMBINE.
      	* tree-pass.h (pass_tree_ifcombine): Declare.
      	* tree-ssa-ifcombine.c: New file.
      	* tree-ssa-phiopt.c (blocks_in_phiopt_order): Export.
      	* tree-flow.h (blocks_in_phiopt_order): Declare.
      	* Makefile.in (OBJS-common): Add tree-ssa-ifcombine.o.
      	(tree-ssa-ifcombine.o): New dependencies.
      
      	* gcc.c-torture/execute/20070424-1.c: New testcase.
      	* gcc.dg/tree-ssa/ssa-ifcombine-1.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-2.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-3.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-4.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-5.c: Likewise.
      
      From-SVN: r125644
      Richard Guenther committed
  34. 11 Jun, 2007 1 commit
  35. 24 May, 2007 1 commit
    • passes.texi: Document predictive commoning. · bbc8a8dc
      	* doc/passes.texi: Document predictive commoning.
      	* doc/invoke.texi (-fpredictive-commoning): Document.
      	* opts.c (decode_options): Enable flag_predictive_commoning on -O3.
      	* tree-ssa-loop-im.c (get_lsm_tmp_name): Export.  Allow
      	adding indices to the generated name.
      	(schedule_sm): Pass 0 to get_lsm_tmp_name.
      	* tree-ssa-loop-niter.c (stmt_dominates_stmt_p): Export.
      	* tree-pretty-print.c (op_symbol_1): Renamed to ...
      	(op_symbol_code): ... and exported.
      	(dump_omp_clause, op_symbol): Use op_symbol_code
      	instead of op_symbol_1.
      	* tree-pass.h (pass_predcom): Declare.
      	* timevar.def (TV_PREDCOM): New timevar.
      	* tree-ssa-loop.c (run_tree_predictive_commoning,
      	gate_tree_predictive_commoning, pass_predcom): New.
      	* tree-data-ref.c (find_data_references_in_loop): Find the
      	references in dominance order.
      	(canonicalize_base_object_address): Ensure that the result has
      	pointer type.
      	(dr_analyze_innermost): Export.
      	(create_data_ref): Code to fail for references with invariant
      	address moved ...
      	(find_data_references_in_stmt): ... here.
      	* tree-data-ref.h (dr_analyze_innermost): Declare.
      	* tree-affine.c: Include tree-gimple.h and hashtab.h.
      	(aff_combination_find_elt, name_expansion_hash,
      	name_expansion_eq, tree_to_aff_combination_expand,
      	double_int_constant_multiple_p, aff_combination_constant_multiple_p):
      	New functions.
      	* tree-affine.h (aff_combination_constant_multiple_p,
      	tree_to_aff_combination_expand): Declare.
      	* tree-predcom.c: New file.
      	* common.opt (fpredictive-commoning): New option.
      	* tree-flow.h (op_symbol_code, tree_predictive_commoning,
      	stmt_dominates_stmt_p, get_lsm_tmp_name): Declare.
      	* Makefile.in (tree-predcom.o): Add.
      	(tree-affine.o): Add TREE_GIMPLE_H dependency.
      	* passes.c (init_optimization_passes):  Add dceloop after
      	copy propagation in loop optimizer.  Add predictive commoning
      	to loop optimizer passes.
      
      	* gcc.dg/tree-ssa/predcom-1.c: New test.
      	* gcc.dg/tree-ssa/predcom-2.c: New test.
      	* gcc.dg/tree-ssa/predcom-3.c: New test.
      	* gcc.dg/tree-ssa/predcom-4.c: New test.
      	* gcc.dg/tree-ssa/predcom-5.c: New test.
      	* gcc.dg/vect/dump-tree-dceloop-pr26359.c: Test dceloop2 dumps.
      
      From-SVN: r125030
      Zdenek Dvorak committed
  36. 09 Mar, 2007 1 commit
    • loop.texi: Document the Omega linear constraints solver. · 3d8864c0
      	* doc/loop.texi: Document the Omega linear constraints solver.
      	* doc/invoke.texi: Document -fcheck-data-deps, omega-max-vars,
      	omega-max-geqs, omega-max-eqs, omega-max-wild-cards, 
      	omega-hash-table-size, omega-max-keys, and 
      	omega-eliminate-redundant-constraints.
      	* tree-pass.h (pass_check_data_deps): Declared.
      	* omega.c: New.
      	* omega.h: New.
      	* timevar.def (TV_CHECK_DATA_DEPS): Declared.
      	* tree-ssa-loop.c (check_data_deps, gate_check_data_deps, 
      	pass_check_data_deps): New.
      	* tree-data-ref.c (init_data_ref): Remove declaration.
      	(dump_data_dependence_relation): Dump DDR_INNER_LOOP.
      	(analyze_array): Renamed init_array_ref, move up initializations.
      	(init_data_ref): Renamed init_pointer_ref.  Moved before its call.
      	Removed arguments that are set to NULL.
      	(analyze_indirect_ref): Correct indentation, correct call to 
      	init_pointer_ref.
      	(object_analysis): Call init_array_ref instead of analyze_array.
      	(initialize_data_dependence_relation): Initialize DDR_INNER_LOOP.
      	(access_functions_are_affine_or_constant_p): Use DR_ACCESS_FNS instead
      	of DR_ACCESS_FNS_ADDR.
      	(init_omega_eq_with_af, omega_extract_distance_vectors, 
      	omega_setup_subscript, init_omega_for_ddr_1, init_omega_for_ddr,
      	ddr_consistent_p): New.
      	(compute_affine_dependence): Check consistency of ddrs when 
      	flag_check_data_deps is passed.
      	(analyze_all_data_dependences): Uncomment.
      	(tree_check_data_deps): New.
      	* tree-data-ref.h: Include omega.h.
      	(DR_ACCESS_FNS_ADDR): Removed.
      	(data_dependence_relation): Add inner_loop.
      	(DDR_INNER_LOOP): New.
      	* common.opt (fcheck-data-deps): New.
      	* tree-flow.h (tree_check_data_deps): Declare.
      	* Makefile.in (TREE_DATA_REF_H): Depend on omega.h.
      	(OBJS-common): Depend on omega.o.
      	(omega.o): Define.
      	* passes.c (pass_check_data_deps): Scheduled.
      	* params.def (PARAM_OMEGA_MAX_VARS, PARAM_OMEGA_MAX_GEQS, 
      	PARAM_OMEGA_MAX_EQS, PARAM_OMEGA_MAX_WILD_CARDS,
      	PARAM_OMEGA_HASH_TABLE_SIZE, PARAM_OMEGA_MAX_KEYS,
      	PARAM_VECT_MAX_VERSION_CHECKS,
      	PARAM_OMEGA_ELIMINATE_REDUNDANT_CONSTRAINTS): New.
      
      From-SVN: r122749
      Sebastian Pop committed
  37. 01 Feb, 2007 1 commit
    • lower-subreg.c: New file. · e53a16e7
      gcc/:
      	* lower-subreg.c: New file.
      	* rtl.def (CONCATN): Define.
      	* passes.c (init_optimization_passes): Add pass_lower_subreg and
      	pass_lower_subreg2.
      	* emit-rtl.c (update_reg_offset): New static function, broken out
      	of gen_rtx_REG_offset.
      	(gen_rtx_REG_offset): Call update_reg_offset.
      	(gen_reg_rtx_offset): New function.
      	* regclass.c: Revert patch of 2006-03-05, restoring
      	reg_scan_update.
      	(clear_reg_info_regno): New function.
      	* dwarf2out.c (concatn_loc_descriptor): New static function.
      	(loc_descriptor): Handle CONCATN.
      	* common.opt (fsplit_wide_types): New option.
      	* opts.c (decode_options): Set flag_split_wide_types when
      	optimizing.
      	* timevar.def (TV_LOWER_SUBREG): Define.
      	* rtl.h (gen_reg_rtx_offset): Declare.
      	(reg_scan_update): Declare.
      	* regs.h (clear_reg_info_regno): Declare.
      	* tree-pass.h (pass_lower_subreg): Declare.
      	(pass_lower_subreg2): Declare.
      	* doc/invoke.texi (Option Summary): List -fno-split-wide-types.
      	(Optimize Options): Add -fsplit-wide-types to -O1 list.  Document
      	-fsplit-wide-types.
      	* doc/rtl.texi (Regs and Memory): Document concat and concatn.
      	* Makefile.in (OBJS-common): Add lower-subreg.o.
      	(lower-subreg.o): New target.
      gcc/testsuite/:
      	* gcc.dg/lower-subreg-1.c (test): New test.
      
      From-SVN: r121453
      Ian Lance Taylor committed
  38. 12 Dec, 2006 1 commit
    • [multiple changes] · 38635499
      2006-12-11  Diego Novillo  <dnovillo@redhat.com>
      
      	* doc/tree-ssa.texi: Update documentation for virtual operands
      	and the use of push_stmt_changes/pop_stmt_changes.
      	* doc/invoke.texi: Remove documentation for params
      	global-var-threshold.
      	Update documentation on max-aliased-vops.
      
      	* tree-into-ssa.c: Cleanup comments, variables and
      	spacing in various functions.
      	(regs_to_rename): Declare.
      	(mem_syms_to_rename): Declare.
      	(dump_update_ssa): Declare.
      	(debug_update_ssa): Declare.
      	(dump_names_replaced_by): Declare.
      	(debug_names_replaced_by): Declare.
      	(dump_def_blocks): Declare.
      	(debug_def_blocks): Declare.
      	(dump_defs_stack): Declare.
      	(debug_defs_stack): Declare.
      	(dump_currdefs): Declare.
      	(debug_currdefs): Declare.
      	(mark_def_sites): Do not handle virtual operands.
      	(compute_idf): Rename from find_idf.  Update users.
      	(register_new_def): Make local.  Convert second argument
      	to 'tree'.
      	Use BLOCK_DEFS_STACK directly.
      	If pushing a non-register, also push the underlying
      	symbol.
      	(rewrite_stmt): Do not handle virtual operands.
      	(dump_tree_ssa): Call dump_def_blocks, dump_defs_stack,
      	dump_currdefs and dump_tree_ssa_stats.
      	(dump_tree_ssa_stats): Also dump REPL_TBL.
      	(replace_use): Remove.  Update all users to call SET_USE
      	instead.
      	(rewrite_blocks): Move code to free memory to
      	fini_ssa_renamer.
      	(mark_def_site_blocks): Move initialization code to
      	init_ssa_renamer.
      	(init_ssa_renamer): New.
      	(fini_ssa_renamer): New.
      	(rewrite_into_ssa): Call them.
      	(prepare_block_for_update): Process SSA_OP_ALL_USES first
      	and SSA_OP_ALL_DEFS later.  Do not process virtual
      	operands separately.
      	(dump_update_ssa): Call dump_decl_set.
      	(init_update_ssa): Initialize regs_to_rename and
      	mem_syms_to_rename.
      	Call init_ssa_renamer.
      	(delete_update_ssa): Call fini_ssa_renamer.
      	Free blocks_with_phis_to_rewrite.
      	(mark_sym_for_renaming): If the variable has
      	sub-variables, also mark them.
      	If the variable belongs to a partition, also mark it.
      	(mark_set_for_renaming): Call mark_sym_for_renaming on
      	every symbol in the set.
      	(switch_virtuals_to_full_rewrite): Call
      	mark_set_for_renaming.
      	(update_ssa): Separate syms_to_rename into regs_to_rename
      	and mem_syms_to_rename.
      
      	* tree-dump.c (dump_options): Add TDF_MEMSYMS.
      	* tree-pretty-print.c (debug_generic_expr): Add TDF_MEMSYMS.
      	(debug_generic_stmt): Likewise.
      	(debug_tree_chain): Likewise.
      	(dump_symbols): New.
      	(dump_generic_node): Check for TDF_MEMSYMS.
      	Handle MEMORY_PARTITION_TAG.
      	If the statement references memory and TDF_MEMSYMS is
      	given, call dump_symbols.
      	Indicate default names with (D).
      	(dump_vops): Update for new virtual operator format.
      
      	* tree.c (init_ttree): Add MEMORY_PARTITION_TAG to
      	tree_contains_struct.
      	(tree_code_size): Handle MEMORY_PARTITION_TAG.
      	(tree_node_structure): Likewise.
      	(needs_to_live_in_memory): Handle SSA names.
      	* tree.h (MTAG_P): Likewise.
      	(struct tree_memory_partition_tag): Declare.
      	(MPT_SYMBOLS): Define.
      	(union tree_node): Add field 'mpt'.
      	* treestruct.def (TS_MEMORY_PARTITION_TAG): Define.
      	* tree.def (MEMORY_PARTITION_TAG): Define.
      
      	* tree-pass.h (TDF_MEMSYMS): Define.
      
      	* params.h (GLOBAL_VAR_THRESHOLD): Remove.
      
      	* tree-ssa-alias.c: Include pointer-set.h
      	(struct alias_map_d): Remove fields total_alias_vops,
      	grouped_p and may_aliases.  Update all users.
      	(struct mp_info_def): Declare.
      	(mp_info_t): New type.
      	(get_smt_for): Rename from get_tmt_for.  Update all
      	users.
      	(add_may_alias): Add argument ALREADY_ADDED.  If given,
      	use it to avoid adding duplicate entries to alias sets.
      	(replace_may_alias): Remove.  Update all users.
      	(total_alias_vops_cmp): Remove.  Update all users.
      	(group_aliases_into): Remove.  Update all users.
      	(tree_pointer_compare): Remove.  Update all users.
      	(compact_name_tags): Remove.  Update all users.
      	(group_aliases): Remove.  Update all users.
      	(mark_non_addressable): Move from tree-flow-inline.h.
      	Remove the symbol from the partition holding it, if
      	needed.
      	(dump_mp_info): New.
      	(debug_mp_info): New.
      	(sort_mp_info): New.
      	(create_partition_for): New.
      	(rewrite_alias_set_for): New.
      	(compute_memory_partitions): New.
      	(compute_may_aliases): Call it.
      	(init_alias_info): If computing aliases for the first
      	time, mark every memory symbol for renaming.
      	(have_common_aliases_p): New.
      	(compute_flow_insensitive_aliasing): Call it.
      	(setup_pointers_and_addressables): Do not cache
      	num_referenced_vars.
      	For register promoted symbols, mark their former
      	partition for renaming.
      	(maybe_create_global_var): Only create .GLOBAL_VAR if
      	there are no call-clobbered variables and a mix of pure
      	and non-pure functions were found.
      	(may_alias_p): Tidy comments.
      	(create_tag_raw): Remove unused variable new_type.
      	(dump_alias_info): call dump_memory_partitions.
      	(dump_points_to_info_for): Call dump_decl_set.
      	(may_be_aliased): Tidy comments and formatting.
      
      	* timevar.def (TV_MEMORY_PARTITIONING): Define.
      	* tree-vectorizer.c (vect_memsyms_to_rename): Rename from
      	vect_vnames_to_rename.  Set DECL_UIDs instead of SSA name
      	versions in it.
      	(slpeel_update_phi_nodes_for_guard1): Ignore memory PHIs.
      	* tree-vect-transform.c (vect_transform_loop): Call
      	mark_set_for_renaming with vect_memsyms_to_rename.
      	* tree-flow-inline.h (zero_imm_uses_p): New.
      	(memory_partition): New.
      	(set_memory_partition): New.
      	(factoring_name_p): New.
      	(symbol_mem_tag): New.  Update every function that used
      	to access the annotation directly.
      	(set_symbol_mem_tag): Likewise.
      
      	* tree-ssa-copy.c (may_propagate_copy): Allow copies
      	between a partition and a symbol as long as the symbol
      	belongs to the partition.
      	(merge_alias_info): Ignore merge requests when memory
      	partitions are involved.
      
      	* tree-ssa.c (verify_ssa_name): Check that default
      	definitions have empty defining statements.
      	(verify_use): Remove argument IS_VIRTUAL.
      	Don't call verify_ssa_name.
      	(verify_phi_args): Call verify_ssa_name.
      	(verify_flow_insensitive_alias_info): Handle MPTs.
      	(verify_flow_sensitive_alias_info): Likewise.
      	(verify_name_tags): Likewise.
      	(verify_call_clobbering): Likewise.
      	(verify_ssa): Check for VOPs only after aliasing
      	information is available.
      	Check virtuals and real operands separately.
      	Call verify_ssa_name on every operand.
      	(stmt_references_memory_p): Move to tree-ssa-operands.c.
      	(walk_use_def_chains_1): Guard against NULL PHI
      	arguments.
      
      	* tree-ssa-operands.c (stmt_references_memory_p): Move from
      	tree-ssa.c.
      	(get_mpt_for): New.
      	(dump_memory_partitions): New.
      	(debug_memory_partitions): New.
      
      	* tree-flow.h (struct var_ann_d): Add field mpt.
      	(struct stmt_ann_d): Add bitfield references_memory.
      	* Makefile.in (tree-ssa-structalias.o): Include
      	pointer-set.h
      	(tree-ssa-alias.o): Likewise.
      	* tree-ssa-structalias.c: (update_alias_info): Use
      	STORED_SYMS to determine which variables are being
      	written to by the store operation.
      	* tree-ssa-structalias.h (struct alias_info)
      	<total_alias_vops>: Remove.  Update all users.
      	<written_vars>: Change to a pointer set.  Update all
      	users.
      	<dereferenced_ptrs_store>: Likewise.
      	<dereferenced_ptrs_load>: Likewise.
      	(NUM_REFERENCES): Remove.  Update all users.
      	(NUM_REFERENCES_CLEAR): Remove.  Update all users.
      	(NUM_REFERENCES_INC): Remove.  Update all users.
      	(NUM_REFERENCES_SET): Remove.  Update all users.
      
      	* params.def (PARAM_GLOBAL_VAR_THRESHOLD): Remove.
      	Update all users.
      	(PARAM_MAX_ALIASED_VOPS): Set to 10.
      	* tree-ssanames.c (make_ssa_name): Initialize
      	SSA_NAME_IS_DEFAULT_DEF to 0.
      
      2006-12-11  Aldy Hernandez  <aldyh@redhat.com>
      
      	* tree-ssa-dse.c (aggregate_vardecl_d): New.
      	(dse_global_data): Add aggregate_vardecl field.
      	(dse_possible_dead_store_p): New.
      	Add prev_defvar variable.
      	Allow immediate uses and previous immediate uses to differ
      	if they are setting different parts of the whole.
      	(get_aggregate_vardecl): New.
      	(dse_record_partial_aggregate_store): New.
      	(dse_whole_aggregate_clobbered_p): New.
      	(dse_partial_kill_p): New.
      	(dse_optimize_stmt): Abstract code checking a possible dead store
      	into new function dse_possible_dead_store_p().
      	Call dse_maybe_record_aggregate_store().
      	When checking whether a STMT and its USE_STMT refer to the
      	same memory address, check also for partial kills that clobber
      	the whole.
      	Move some variable definitions to the block where they are used.
      	(aggregate_vardecl_hash): New.
      	(aggregate_vardecl_eq): New.
      	(aggregate_vardecl_free): New.
      	(aggregate_whole_store_p): New.
      	(tree_ssa_dse): Initialize and free aggregate_vardecl.
      	Mark which aggregate stores we care about.
      
      2006-12-11  Andrew Macleod  <amacleod@redhat.com>
      
      	* tree-ssa-operands.h (struct vuse_element_d): Declare.
      	(vuse_element_t): Declare.
      	(struct vuse_vec_d): Declare.
      	(vuse_vec_p): Declare.
      	(VUSE_VECT_NUM_ELEM): Define.
      	(VUSE_VECT_ELEMENT_NC): Define.
      	(VUSE_ELEMENT_PTR_NC): Define.
      	(VUSE_ELEMENT_VAR_NC): Define.
      	(VUSE_VECT_ELEMENT): Define.
      	(VUSE_ELEMENT_PTR): Define.
      	(VUSE_ELEMENT_VAR): Define.
      	(struct maydef_optype_d) <use_var>: Remove.
      	<use_ptr>: Remove.
      	<usev>: Add.
      	(struct vuse_optype_d) <kill_var>: Remove.
      	<use_ptr>: Remove.
      	<usev>: Add.
      	(struct mustdef_optype_d) <kill_var>: Remove.
      	<use_ptr>: Remove.
      	<usev>: Add.
      	(VUSE_OP_PTR): Add argument.  Use VUSE_ELEMENT_PTR.
      	(VUSE_OP): Add argument.  Use VUSE_ELEMENT_PTR.
      	(VUSE_NUM): Define.
      	(VUSE_VECT): Define.
      	(MAYDEF_OP_PTR): Add argument.  Use VUSE_OP_PTR.
      	(MAYDEF_OP): Add argument.  Use VUSE_OP.
      	(MAYDEF_NUM): Define.
      	(MAYDEF_VECT): Define.
      	(MUSTDEF_KILL_PTR): Use VUSE_OP_PTR.
      	(MUSTDEF_KILL): Use VUSE_OP.
      	(MUSTDEF_NUM): Define.
      	(MUSTDEF_VECT): Define.
      	(realloc_maydef): Declare.
      	(realloc_vuse): Declare.
      	(struct ssa_operand_iterator_d) <vuse_index>: Add.
      	<mayuse_index>: Add.
      	(LOADED_SYMS): Define.
      	(STORED_SYMS): Define.
      	(FOR_EACH_SSA_MUSTDEF_OPERAND): Call op_iter_next_mustdef.
      	* tree-into-ssa.c: Adapt for multi-operand V_MAY_DEF and VUSE
      	operators.
      	* tree-pretty-print.c: Likewise.
      	* tree-ssa-dse.c: Likewise.
      	* tree-flow-inline.h: Likewise.
      	(op_iter_next_mustdef): New.
      	* tree-ssa-operands.c: Likewise.
      	(ALLOC_OPTYPE): Remove.
      	Update all users.
      	(alloc_def): New.
      	(alloc_use): New.
      	(alloc_maydef): New.
      	(alloc_vuse): New.
      	(alloc_mustdef): New.
      	(realloc_maydef): New.
      	(realloc_vuse): New.
      
      2006-12-11  Aldy Hernandez  <aldyh@redhat.com>
      
      	* tree-ssa-operands.c: Remove build_v_must_defs.
      	(init_ssa_operands): Delete build_v_must_defs.
      	(finalize_ssa_v_must_def_ops): Remove.
      	(finalize_ssa_v_must_defs): Remove.
      	(finalize_ssa_stmt_operands): Do not call
      	finalize_ssa_v_must_defs.
      	(start_ssa_stmt_operands): Do not check build_v_must_defs.
      	(append_v_must_def): Delete.
      	(copy_virtual_operands): Do not copy V_MUST_DEFs.
      	(get_modify_expr_operands): Remove reference to V_MUST_DEF from
      	comment.  Remove opf_kill_def.
      	(build_ssa_operands): Remove references to v_must_defs.
      	(copy_virtual_operands): Same.
      	(copy_virtual_operands): Same.
      	(fini_ssa_operands): Same.
      	(free_ssa_operands): Same.
      	(add_mustdef_op): Remove.
      	Remove mustdef_optype_p.
      	(alloc_mustdef): Remove.
      	Remove references to V_MUST_DEFs in comment at top of file.
      	(get_expr_operands): Remove opf_kill_def.
      	(opf_kill_def): Remove.
      	(add_virtual_operand): Remove opf_kill_def.
      	(get_indirect_ref_operands): Same.
      	(get_tmr_operands): Same.
      
      	* tree-vectorizer.c (rename_variables_in_bb): Remove
      	SSA_OP_ALL_KILLS.
      
      	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Remove
      	SSA_OP_ALL_KILLS.
      	(check_loop_closed_ssa_stmt): Same.
      
      	* tree-ssa.c (verify_def): Remove V_MUST_DEF from comment.
      	(verify_use): Same.
      	(verify_ssa): Remove V_MUST_DEFs traces.
      	(verify_ssa): Remove SSA_OP_ALL_KILLS.
      
      	* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTDEF to
      	SSA_OP_VMAYDEF.
      	(rewrite_update_stmt): Remove SSA_OP_VIRTUAL_KILLS.
      	(rewrite_stmt): Remove SSA_OP_ALL_KILLS.
      
      	* tree-ssa-operands.h (struct stmt_operands_d): Remove V_MUST_DEF
      	references.
      	(MUSTDEF_OPS): Remove.
      	(SSA_OP_VMUSTDEF): Remove.
      	(FOR_EACH_SSA_MUSTDEF_OPERAND): Remove.
      	(struct mustdef_optype_d): Remove.
      	Remove mustdef_optype_p.
      	(struct stmt_operands_d): Remove mustdef_ops.
      	(ssa_operand_iterator_d): Remove mustdefs and mustkills.
      	(SSA_OP_VIRTUAL_DEFS): Remove SSA_OP_VMUSTDEF.
      	(MUSTDEF_RESULT_PTR): Remove.
      	(MUSTDEF_RESULT): Remove.
      	(MUSTDEF_KILL_PTR): Remove.
      	(MUSTDEF_KILL): Remove.
      	(MUSTDEF_NUM): Remove.
      	(MUSTDEF_VECT): Remove.
      	(SSA_OP_VIRTUAL_KILLS): Remove.
      	(SSA_OP_ALL_VIRTUALS): Remove SSA_OP_VIRTUAL_KILLS.
      	(SSA_OP_VMUSTKILL): Remove.
      	(SSA_OP_ALL_KILLS): Remove.
      	(SSA_OP_ALL_OPERANDS): Remove SSA_OP_ALL_KILLS.
      
      	* tree-flow-inline.h (op_iter_init_def): Remove
      	SSA_OP_VIRTUAL_KILLS.
      	(delink_stmt_imm_use): Remove SSA_OP_ALL_KILLS.
      
      	* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
      	SSA_OP_VIRTUAL_KILLS.
      
      	* tree-ssa-loop-im.c (determine_max_movement): Remove
      	SSA_OP_VIRTUAL_KILLS.
      	(gather_mem_refs_stmt): Same.
      	(gather_mem_refs_stmt): Same.
      
      	* tree-ssa-dce.c (mark_really_necessary_kill_operand_phis): Delete.
      	(perform_tree_ssa_dce): Remove call to
      	mark_really_necessary_kill_operand_phis.
      
      	* tree-flow-inline.h (op_iter_init): Remove setting of mustdefs
      	and mustkills.
      	(op_iter_next_use): Do not check mustkills.
      	(op_iter_next_def): Do not check mustdefs.
      	(op_iter_next_tree): Do not check mustkills or mustdefs.
      	(clear_and_done_ssa_iter): Do not set mustdefs or mustkills.
      	(op_iter_next_maymustdef): Do not check mustkills.
      	(op_iter_init_must_and_may_def): Remove SSA_OP_VMUSTKILL.
      	(op_iter_init_mustdef): Remove.
      
      	* tree-ssa-live.c (create_ssa_var_map): Change SSA_OP_VMUSTDEF to
      	SSA_OP_VMAYDEF.
      
      	* tree-ssa-dse.c (dse_optimize_stmt): Remove SSA_OP_VMUSTDEF.
      
      	* tree-ssa-ccp.c: Remove V_MUST_DEF traces from comments.
      	(visit_assignment): Same.
      
      	* tree-ssa-copy.c (copy_prop_visit_assignment): Same.
      
      	* tree-sra.c (mark_all_v_defs_1): Remove V_MUST_DEF from comment.
      
      	* tree-outof-ssa.c (check_replaceable): Remove SSA_OP_VMUSTDEF.
      
      	* tree-pretty-print.c (dump_vops): Remove printing of V_MUST_DEF.
      	Remove kill_p variable.
      
      	* tree-dfa.c (struct dfa_stats_d): Remove num_v_must_defs.
      	(dump_dfa_stats): Remove code related to V_MUST_DEFs.
      	(collect_dfa_stats_r): Do not set num_v_must_defs.
      	(mark_new_vars_to_rename): Remove v_must_defs_{before,after}
      	code.
      
      	* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTKILL to
      	SSA_OP_VMAYUSE.
      
      	* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
      	SSA_OP_VMUSTDEF and SSA_OP_VMUSTKILL.
      
      	* tree-ssa-propagate.c (stmt_makes_single_store): Remove
      	SSA_OP_VMUSTDEF.
      
      From-SVN: r119760
      Diego Novillo committed
  39. 04 Nov, 2006 1 commit
    • fwprop.c: New file. · a52b023a
      2006-11-03  Paolo Bonzini  <bonzini@gnu.org>
                  Steven Bosscher  <stevenb.gcc@gmail.com>
      
              * fwprop.c: New file.
              * Makefile.in: Add fwprop.o.
              * tree-pass.h (pass_rtl_fwprop, pass_rtl_fwprop_with_addr): New.
              * passes.c (init_optimization_passes): Schedule forward propagation.
              * rtlanal.c (loc_mentioned_in_p): Support NULL value of the second
              parameter.
              * timevar.def (TV_FWPROP): New.
              * common.opt (-fforward-propagate): New.
              * opts.c (decode_options): Enable forward propagation at -O2.
              * gcse.c (one_cprop_pass): Do not run local cprop unless touching jumps.
              * cse.c (fold_rtx_subreg, fold_rtx_mem, fold_rtx_mem_1, find_best_addr,
              canon_for_address, table_size): Remove.
              (new_basic_block, insert, remove_from_table): Remove references to
              table_size.
              (fold_rtx): Process SUBREGs and MEMs with equiv_constant, make
              simplification loop more straightforward by not calling fold_rtx
              recursively.
              (equiv_constant): Move here a small part of fold_rtx_subreg,
              do not call fold_rtx.  Call avoid_constant_pool_reference
              to process MEMs.
              * recog.c (canonicalize_change_group): New.
              * recog.h (canonicalize_change_group): New.
      
              * doc/invoke.texi (Optimization Options): Document fwprop.
              * doc/passes.texi (RTL passes): Document fwprop.
      
      
      Co-Authored-By: Steven Bosscher <stevenb.gcc@gmail.com>
      
      From-SVN: r118475
      Paolo Bonzini committed
  40. 04 May, 2006 1 commit
    • [multiple changes] · 8cd37d0b
      2006-05-04  Leehod Baruch  <leehod@il.ibm.com>
      
              * see.c: New file.
              * Makefile.in (OBJS-common): Add see.o.
              (see.o): Add dependencies.
              * common.opt (fsee): New flag for the see optimization was added.
              * opts.c (flag_see): Initialized.
              * passes.c (init_optimization_passes, pass_see): New pass.
              * rtl.h (see_main): Declaration as extern.
              * timevar.def (TV_SEE): New.
              * tree-pass.h (pass_see): Declaration as extern.
              * invoke.texi (-fsee): Document.
              * recog.c (validate_simplify_insn): New function.
              * recog.h (validate_simplify_insn): Declaration as extern.
              * df-problems.c (df_chain_dump): Check for NULL.
      
      2006-05-04  Kenneth Zadeck <zadeck@naturalbridge.com>
                  Daniel Berlin  <dberlin@dberlin.org>
      
              * cfgrtl.c (insert_insn_bb_end_new): New function.
              * basic-block.h (insert_insn_bb_end_new): Declaration as extern.
      
      2006-05-04  Leehod Baruch  <leehod.baruch@weizmann.ac.il>
      
              * df.h (struct web_entry): Moved from web.c.
              (union_defs): Declaration as extern.
              (unionfind_root): Likewise.
              (unionfind_union): Likewise.
              * web.c (struct web_entry): Moved to df.h.
              (unionfind_root): Remove static declaration.
              (unionfind_union): Likewise.
              (union_defs): Likewise and generalize to use callback function.
              (web_main): Update arguments for union_defs function call.
      
      From-SVN: r113518
      Razya Ladelsky committed