summaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.c
Commit message (Collapse)AuthorAgeFilesLines
* 2005-04-05 Andrew MacLeod <amacleod@redhat.com>amacleod2005-04-051-17/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use update_stmt. Use immediate use iterator. (stmt_is_bumper_for_loop): Use immediate use iterator. * predict.c (strip_builtin_expect): Use update_stmt. * tree-cfg.c (update_modified_stmts): New. Call update_stmt_if_modified on all elements of a STATEMENT_LIST. (bsi_insert_before, bsi_insert_after): Call update_modified_stmts. (bsi_remove): Remove imm_use links and mark the stmt as modified. (bsi_replace): Mark stmt as modified and the update it. * tree-complex.c (update_complex_assignment): Call mark_stmt_modified. (expand_complex_libcal): Call update_stmt. (expand_complex_comparison): Call mark_stmt_modified. (expand_complex_operations_1): Call update_stmt_if_modified. (expand_vector_operations_1): Call mark_stmt_modified. * tree-dfa.c (compute_immediate_uses, free_df_for_stmt, free_df, compute_immediate_uses_for_phi, compute_immediate_uses_for_stmt, add_immediate_use, redirect_immediate_use, redirect_immediate_uses, dump_immediate_uses, debug_immediate_uses, dump_immediate_uses_for, debug_immediate_uses_for): Delete. (mark_new_vars_to_rename): Call update_stmt. * tree-dump.c (dump_option_value_in): Add "stmtaddr". * tree-flow-inline.h (modify_stmt): Rename to mark_stmt_modified. Ignore PHI nodes. (unmodify_stmt): Delete. (update_stmt): New. Force an update of a stmt. (update_stmt_if_modified): update a stmt if it is out of date. (get_stmt_operands): Verify stmt is NOT modified. (stmt_modified_p): Update comment. (delink_imm_use): Remove a use node from its immuse list. (link_imm_use_to_list): Link a use node to a specific list. (link_imm_use): Link a node to the correct list. (set_ssa_use_from_ptr): Set a use node to a specific value, and insert it in the correct list, if appropriate. (link_imm_use_stmt): Link a use node, and set the stmt pointer. (relink_imm_use): Link a use node in place of another node in a list. (relink_imm_use_stmt): LInk a node in place of another node, and set the stmt pointer. (end_safe_imm_use_traverse): New. Terminate a safe immuse iterator. (end_safe_imm_use_p): New. Check for the end of a safe immuse iterator. (first_safe_imm_use): New. Initialize a safe immuse iterator. (next_safe_imm_use): New. Proceed to next safe immuse iterator value. (end_readonly_imm_use_p): New. Check for end of a fast immuse iterator. (first_readonly_imm_use): New. Initialize a fast immuse iterator. (next_readonly_imm_use): New. Get the next fast immuse iterator value. (has_zero_uses): New. Return true if there are no uses of a var. (has_single_use): New. Return true if there is only a single use of a variable. (single_imm_use): New. Return the simgle immediate use. (num_imm_uses): New. Return the number of immediate uses. (get_v_must_def_ops): Use is now a pointer. (use_operand_p, get_v_may_def_op_ptr, get_vuse_op_ptr, get_v_must_def_kill_ptr, get_phi_arg_def_ptr): Return the address of the use node. (get_immediate_uses, num_immediate_uses, immediate_use): Delete. (delink_stmt_imm_use): Delink all immuses from a stmt. (phi_arg_index_from_use): New. Return a phi arg index for a use. * tree-flow.h (struct dataflow_d): Delete. (immediate_use_iterator_d): New. Immediate use iterator struct. (FOR_EACH_IMM_USE_FAST): New. Macro for read only immuse iteration. (FOR_EACH_IMM_USE_SAFE): New. Macro for write-safe immuse iteration. (BREAK_FROM_SAFE_IMM_USE): New. Macro for earlyu exit from write-safe iteration. (struct stmt_ann_d): Remove dataflow_t from struct. * tree-if-conv.c (tree_if_conversion). Don't call free_df. (if_convertible_phi_p): Use FAST immuse iterator. (if_convertible_loop_p): Don't call compute_immediate_uses. (replace_phi_with_cond_modify_expr): Call update_stmt. * tree-into-ssa.c (mark_def_sites, ssa_mark_def_sites): Call update_stmt_if_modified. (rewrite_all_into_ssa): Initialize ssa operands. * tree-loop-linear.c (linear_transform_loops): Don't call free_df or compute_immediate_uses. * tree-optimize.c (execute_todo): Call verify_ssa whenever the ssa_property is available. (execute_one_pass): Change parameters passed to execute_todo. * tree-outof-ssa.c (rewrite_trees): Don't call modify_stmt. (remove_ssa_form): Call fini_ssa_operands. (insert_backedge_copies): Delete call to modify_stmt. * tree-phinodes.c (make_phi_node): Initialize use nodes. (release_phi_node): Delink any use nodes before releasing. (resize_phi_node): Relink any use nodes. (remove_phi_arg_num): Delink the use node. (remove_phi_node): Release the ssa_name AFTER releasing the phi node. (remove_all_phi_nodes_for): Release phi node first. * tree-pretty-print.c (dump_generic_node): Print stmt address. * tree-sra.c (mark_all_v_defs): Call update_stmt_if_modified. (scalarize_use, scalarize_copy): Call update_stmt. * tree-ssa-alias.c (compute_may_aliases): Update all modified stmts. (compute_points_to_and_addr_escape): Call mark_stmt_modified. * tree-ssa-cpp.c (need_imm_uses_for): Delete. (ccp_initialize): Remove call to compute_immediate_uses. (substitute_and_fold, execute_fold_all_builtins): Call update_stmt. * tree-ssa-dom.c (tree_ssa_dominator_optimize): Update all modified stmts. (simplify_cond_and_lookup_avail_expr): Call mark_stmt_modified. (simplify_switch_and_lookup_avail_expr): Call mark_stmt_modified. (eliminate_redundant_computations): Call mark_stmt_modified. (cprop_operand): Call mark_stmt_modified. (optimize_stmt): Call update_stmt_if_modified and mark_stmt_modified. * tree-ssa-dse.c (fix_phi_uses, fix_stmt_v_may_defs): Delete. (dse_optimize_stmt): Use new immuse interface. (tree_ssa_dse): Remove calls to compute_immediate_uses and free_df. * tree-ssa-forwprop.c (need_imm_uses_for): Delete. (substitute_single_use_vars): Use new immuse interface. (tree_ssa_forward_propagate_single_use_vars): Remove calls to free_df and compute_immediate_uses. * tree-ssa-loop-im.c (single_reachable_address): Use new immuse interface. (rewrite_mem_refs): Call update_stmt. (determine_lsm): Remove call to compute_imm_uses and free_df. * tree-ssa-loop-ivcanon.c (create_canonical_iv): Call update_stmt. (try_unroll_loop_completely): Call update_stmt. * tree-ssa-loop-ivopts.c (rewrite_address_base): Call update_stmt. (rewrite_use_compare): Call update_stmt. (compute_phi_arg_on_exit): Insert each stmt before trying to process. (rewrite_use) : Call update_stmt. * tree-ssa-loop-manip.c (verify_loop_closed_ssa): Add arg to call. * tree-ssa-loop-unswitch.c (tree_unswitch_single_loop): Call update_stmt. * tree-ssa-operands.c (NULL_USE_OPERAND_P): Remove declaration. (allocate_use_optype, allocate_vuse_optype): Adjust allocation size. (free_uses, free_vuses, free_v_may_defs, free_v_must_defs): Delink use nodes. (initialize_vuse_operand): New. Initialize a vuse operand. (initialize_v_may_def_operand): New. Initialize a maydef operand. (initialize_v_must_def_operand): New. Initialize a mustdef operand. (finalize_ssa_defs): Use stmt parameter. (correct_use_link): Ensure a use node is in the correct list, and has the correct stmt pointer. (finalize_ssa_uses, finalize_ssa_v_may_defs, finalize_ssa_vuses, finalize_ssa_v_must_defs): Also initialize use nodes. (finalize_ssa_stmt_operands): Pass extra stmt operands. (build_ssa_operands): Seperate parsing from final operand construction. (parse_ssa_operands): New. Parse entry point for operand building. (swap_tree_operands): New. Swap 2 tree operands. (update_stmt_operands): Ranamed from get_stmt_operands. Always builds operands. (get_expr_operands): Call swap_tree_operands when needed. (copy_virtual_operands): Use initialize routines for virtual use ops. (create_ssa_artficial_load_stmt): Add extra stmt parameter. (verify_abort): New. Issue imm_use error. (verify_imm_links): New Verify imm_use links for a var. (dump_immediate_uses_for): New. Dump imm_uses for a var to file. (dump_immediate_uses): New. Dump imm_uses for all vars to file. (debug_immediate_uses): New. Dump imm_uses for all vars to stderr. (debug_immediate_uses_for): New. Dump imm_uses for a var to stderr. * tree-ssa-operands.h (struct use_operand_ptr): Delete. (NULL_USE_OPERAND_P) Define. (use_optype_d, v_def_use_operand_type, vuse_optype_d): Add immediate use node. (struct vuse_operand_type): New struct. (SET_USE): Call set_ssa_use_from_ptr. (USE_STMT): Define. (PHI_ARG_INDEX_FROM_USE): Define. * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Set the phi argument via SET_USE, not PHI_ARG_DEF_TREE. * tree-ssa-pre.c (eliminate): Call update_stmt. * tree-ssa-propagate.c (cfg_blocks_get): Use imm_use iterators. Don't call free_df. * tree-ssa-sink.c (all_immediate_uses_same_place): Use imm_use iterator. (nearest_common_dominator_of_uses): Use imm_use iterator. (statement_sink_location): Use imm_use iterator and interface. (execute_sink_code): Don't call compute_immediate_uses or free-df. * tree-ssa-threadupdate.c (create_edge_and_update_destination_phis): Use PHI_ARG_DEF, not PHI_ARG_DEF_TREE. * tree-ssa.c (verify_use, verify_phi_args): Verify some imm_use info. (verify_ssa): Ensure no stmt is marked modify after optimization pass if new parameter is true. (init_tree_ssa): Don't initialize operand cache here. (delete_tree_ssa): Don't destroy operand cache here. (propagate_into_addr): Pass in a use pointer, return true if anything was changed. (replace_immediate_uses): Use imm_use iterator, call update_stmt. (check_phi_redundancy): Use imm_use iterator. (kill_redundant_phi_nodes): Don't call compute_immediate_uses or free_df. * tree-ssanames.c (make_ssa_name): Initialize imm_use node. (release_ssa_name): Delink node and all elements in its imm_use list. * tree-tailcall.c (adjust_return_value): Call update_stmt. * tree-vect-analyze.c (vect_stmt_relevant_p): Use imm_use iterator. * tree-vectorizer.c (need_imm_uses_for): Delete. (vectorize_loops): Dont call compute_immediate_uses or free_df. * tree.h (struct ssa_imm_use_d): Define. (SSA_NAME_IMM_USE_NODE): Define. (struct tree_ssa_name): Add imm_use node. (PHI_DF): Delete. (PHI_ARG_IMM_USE_NODE): Define. (struct phi_arg_d): Add imm_use node. (struct tree_phi_node): Remove struct dataflow_d element. (TDF_STMTADDR): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97648 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c: Fix comment typos.kazu2005-03-301-3/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97258 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (slpeel_update_phi_nodes_for_guard): Removed.dorit2005-03-291-84/+362
| | | | | | | | | | | | | (slpeel_update_phi_nodes_for_guard1): New function. (slpeel_update_phi_nodes_for_guard2): New function. (slpeel_tree_peel_loop_to_edge): Call above new functions instead of slpeel_update_phi_nodes_for_guard. (vectorize_loops): Remove call to loop_closed_rewrite. * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Remove assertion. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97195 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-ssanames.c (duplicate_ssa_name_ptr_info): New function.dorit2005-03-291-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (duplicate_ssa_name): Call duplicate_ssa_name_ptr_info. * tree-vect-analyze.c (vect_object_analysis): additional parm pass back a "struct ptr_info_def *" with the points-to info. (vect_analyze_data_refs): set the STMT_VINFO_PTR_INFO for the statement using info returned from vect_object_analysis. * tree-vect-transform.c (update_vuses_to_preheader): New function. (vect_create_data_ref_ptr): Remove updates to vars_to_rename for virtual uses and defs when creating a replacement vector reference. Call duplicate_ssa_name_ptr_info to define points-to info for vector pointer replacement using STMT_VINFO_PTR_INFO. (vectorizable_store): copy_virtual_operands and update definition statements. (vectorizable_load): copy_virtual_operands. Remove call to mark_call_clobbered_vars_to_rename for call to "const" builtin. * tree-vectorizer.c (vectorize_loops): Remove calls to rewrite_into_ssa and bitmap_clear (vars_to_rename). (new_stmt_vec_info): initialize STMT_VINFO_PTR_INFO for stmt. * tree-vectorizer.h (_stmt_vec_info): add field ptr_info and define macro STMT_VINFO_PTR_INFO for use in accessing. * tree.h add export of duplicate_ssa_name_ptr_info. * rs6000.c (altivec_init_builtins): Declare builtin function __builtin_altivec_mask_for_load to be "const". git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@97164 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-03-16 Daniel Berlin <dberlin@dberlin.org>dberlin2005-03-161-0/+1
| | | | | | | | | * tree-vectorizer.c (new_vec_stmt_info): Initialize STMT_VINFO_SUBVARS to NULL. * tree-vect-analyze.c (vect_analyze_data_refs): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96581 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.h (unknown_alignment_for_access_p): Replaced bydorit2005-03-151-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | known_alignment_for_access_p. (known_alignment_for_access_p): New. (do_peeling_for_alignment): Field made int instead of bool and renamed to peeling_for_alignment. (LOOP_DO_PEELING_FOR_ALIGNMENT): Renamed to LOOP_PEELING_FOR_ALIGNMENT. * tree-vect-analyze.c (vect_determine_vectorization_factor): New. This functionality used to be in vect_analyze_operations. (vect_analyze_operations): Code to determine vectorization factor was moved to vect_determine_vectorization_factor. (vect_enhance_data_refs_alignment): Update to correct alignment when it is known instead of -1. Set LOOP_PEELING_FOR_ALIGNMENT to peeling factor. (vect_analyze_loop): Call vect_determine_vectorization_factor (used to be part of vect_analyze_operations). * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Use fold when creating the guard condition, as the number of iterations may be constant. (slpeel_tree_peel_loop_to_edge): Use new name of LOOP_DO_PEELING_FOR_ALIGNMENT. Set it to 0 instead of false. * tree-vect-transform.c (vect_gen_niters_for_prolog_loop): Handle known alignment case more efficiently. Use LOOP_PEELING_FOR_ALIGNMENT. (vect_do_peeling_for_alignment): Use fold. (vect_transform_loop): Use new name of LOOP_DO_PEELING_FOR_ALIGNMENT. (vect_update_inits_of_dr): Renamed to vect_update_init_of_dr. (vect_update_inits_of_drs): Use new name of vect_update_inits_of_dr. (vectorizable_store): Fix assertion to use == instead of =. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96526 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h (single_succ_p, single_pred_p, single_succ_edge,rakdver2005-03-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | single_pred_edge, single_succ, single_pred): New inline functions. * bb-reorder.c (rotate_loop, find_traces_1_round, add_labels_and_missing_jumps, fix_up_fall_thru_edges, duplicate_computed_gotos): Use the single_succ/pred functions. * cfganal.c (forwarder_block_p): Ditto. * cfgbuild.c (compute_outgoing_frequencies): Ditto. * cfgcleanup.c (try_simplify_condjump, try_forward_edges, outgoing_edges_match, try_crossjump_to_edge, try_optimize_cfg, merge_seq_blocks): Ditto. * cfghooks.c (split_edge, tidy_fallthru_edges): Ditto. * cfglayout.c (fixup_reorder_chain): Ditto. * cfgloop.c (mark_single_exit_loops, update_latch_info, canonicalize_loop_headers, verify_loop_structure): Ditto. * cfgloopmanip.c (remove_path, unloop, loop_delete_branch_edge, mfb_update_loops, create_preheader, force_single_succ_latches, create_loop_notes): Ditto. * cfgrtl.c (rtl_can_merge_blocks, try_redirect_by_replacing_jump, force_nonfallthru_and_redirect, rtl_tidy_fallthru_edge, commit_one_edge_insertion, purge_dead_edges, cfg_layout_can_merge_blocks_p): Ditto. * except.c (sjlj_emit_function_enter): Ditto. * flow.c (init_propagate_block_info): Ditto. * function.c (thread_prologue_and_epilogue_insns): Ditto. * gcse.c (find_implicit_sets, bypass_conditional_jumps, insert_insn_end_bb): Ditto. * ifcvt.c (merge_if_block, find_if_block, find_if_case_1, find_if_case_2): Ditto. * lambda-code.c (perfect_nestify): Ditto. * lcm.c (optimize_mode_switching): Ditto. * loop-doloop.c (doloop_modify): Ditto. * loop-init.c (loop_optimizer_init): Ditto. * loop-iv.c (simplify_using_initial_values): Ditto. * loop-unroll.c (unroll_loop_runtime_iterations): Ditto. * loop-unswitch.c (unswitch_loop): Ditto. * modulo-sched.c (generate_prolog_epilog): Ditto. * predict.c (combine_predictions_for_insn, estimate_probability, tree_estimate_probability, last_basic_block_p, estimate_bb_frequencies): Ditto. * profile.c (branch_prob): Ditto. * regrename.c (copyprop_hardreg_forward): Ditto. * sched-rgn.c (is_cfg_nonregular, find_rgns, update_live): Ditto. * tracer.c (layout_superblocks): Ditto. * tree-cfg.c (tree_can_merge_blocks_p, tree_merge_blocks, cfg_remove_useless_stmts_bb, cleanup_control_flow, cleanup_control_expr_graph, disband_implicit_edges, tree_find_edge_insert_loc, bsi_commit_edge_inserts, tree_verify_flow_info, tree_make_forwarder_block, tree_forwarder_block_p, remove_forwarder_block, remove_forwarder_block_with_phi, merge_phi_nodes): Ditto. * tree-if-conv.c (tree_if_conversion): Ditto. * tree-mudflap.c (mf_build_check_statement_for): Ditto. * tree-ssa-dce.c (remove_dead_stmt): Ditto. * tree-ssa-dom.c (dom_opt_finalize_block): Ditto. * tree-ssa-loop-ch.c (should_duplicate_loop_header_p, copy_loop_headers): Ditto. * tree-ssa-loop-im.c (loop_commit_inserts): Ditto. * tree-ssa-loop-ivopts.c (compute_phi_arg_on_exit): Ditto. * tree-ssa-loop-manip.c (split_loop_exit_edge, ip_normal_pos, lv_adjust_loop_entry_edge, tree_ssa_loop_version): Ditto. * tree-ssa-loop-niter.c (simplify_using_initial_conditions): Ditto. * tree-ssa-loop-unswitch.c (simplify_using_entry_checks): Ditto. * tree-ssa-phiopt.c (tree_ssa_phiopt, value_replacement): Ditto. * tree-ssa-pre.c (compute_antic_aux, insert_aux, init_pre): Ditto. * tree-ssa-threadupdate.c (redirect_edges): Ditto. * tree-tailcall.c (independent_of_stmt_p, find_tail_calls, eliminate_tail_call, tree_optimize_tail_calls_1): Ditto. * tree-vect-analyze.c (vect_analyze_loop_form): Ditto. * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Ditto. * tree-vectorizer.c (slpeel_update_phi_nodes_for_guard, slpeel_add_loop_guard): Ditto. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96292 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (tree-optimize.o): Add CFGLOOP_H dependence.rakdver2005-03-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * cfgloop.c (flow_loop_nodes_find): Export. * cfgloop.h (flow_loop_nodes_find, fix_loop_structure): Declare. * cfgloopmanip.c (fix_loop_structure): New function. * predict.c (predict_loops): Clean up the loops information. * tree-cfg.c (cleanup_tree_cfg_loop): New function. (tree_can_merge_blocks_p, remove_bb, tree_forwarder_block_p): Respect loop structure. * tree-flow.h (cleanup_tree_cfg_loop): Declare. (rewrite_into_loop_closed_ssa): Declaration changed. * tree-loop-linear.c (linear_transform_loops): Add argument to rewrite_into_loop_closed_ssa call. * tree-ssa-loop-ch.c (copy_loop_headers): Ditto. * tree-ssa-loop-im.c (move_computations): Ditto. * tree-ssa-loop.c (tree_loop_optimizer_init): Ditto. * tree-vectorizer.c (vectorize_loops): Ditto. * tree-optimize.c: Include cfgloop.h. (execute_todo): Choose whether to call cleanup_tree_cfg or cleanup_tree_cfg_loop. * tree-ssa-loop-ivcanon.c (canonicalize_loop_induction_variables, (tree_unroll_loops_completely): Enable cleanup_tree_cfg_loop call. * tree-ssa-loop-unswitch.c (tree_ssa_unswitch_loops): Enable cleanup_tree_cfg_loop call. * tree-ssa-loop-manip.c (find_uses_to_rename_bb): New function. (find_uses_to_rename, rewrite_into_loop_closed_ssa): Support work on part of cfg. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96232 138bc75d-0d04-0410-961f-82ee72b054a4
* * cfgloop.c (flow_loop_entry_edges_find, flow_loop_exit_edges_find,rakdver2005-03-011-27/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | flow_loop_pre_header_scan, flow_loop_pre_header_find, flow_loop_scan): Removed. (flow_loop_dump): Do not dump removed fields. (flow_loop_free): Do not free removed fields. (flow_loops_find): Flags argument removed. Do not call flow_loop_scan. (loop_exit_edge_p): New function. * cfgloop.h (struct loop): Removed fields pre_header, pre_header_edges, num_pre_header_edges, entry_edges, num_entries, exit_edges, num_exits, exits_doms. (LOOP_TREE, LOOP_PRE_HEADER, LOOP_ENTRY_EDGES, LOOP_EXIT_EDGES, LOOP_EDGES, LOOP_ALL): Removed. (flow_loop_scan): Declaration removed. (loop_exit_edge_p, mark_loop_exit_edges): Declare. * cfgloopmanip.c (create_loop_notes): Do not pass flags to flow_loops_find. * ifcvt.c (mark_loop_exit_edges): Moved to cfgloopanal.c. (if_convert): Call flow_loops_find and flow_loops_free when calling mark_loop_exit_edges. * cfgloopanal.c (mark_loop_exit_edges): Moved from ifcvt.c. Removed the flow_loops_find, flow_loops_free and free_dominance_info calls. * loop-init.c (flow_loops_find): Ditto. * passes.c (rest_of_handle_branch_prob): Ditto. * lambda-code.c (perfect_nestify): Do not call flow_loops_find. * loop-unroll.c (analyze_insns_in_loop): Do not use EDGE_LOOP_EXIT. * predict.c (predict_loops): Do not call flow_loop_scan. Use get_loop_exit_edges. (tree_estimate_probability): Do not pass flags to flow_loops_find. * tree-if-conv.c (bb_with_exit_edge_p): Take loop as argument. Do not use EDGE_LOOP_EXIT. (tree_if_convert_cond_expr, if_convertible_modify_expr_p): Pass loop to bb_with_exit_edge_p. (if_convertible_loop_p): Do not call flow_loop_scan. Use loop->single_exit. Do not use EDGE_LOOP_EXIT. Pass loop to bb_with_exit_edge_p. (combine_blocks): Pass loop to bb_with_exit_edge_p. Do not use EDGE_LOOP_EXIT. * tree-loop-linear.c (linear_transform_loops): Do not call flow_loop_scan. Use loop->single_exit. * tree-vect-analyze.c (vect_analyze_operations): Use loop->single_exit. (vect_analyze_loop_form): Do not call flow_loop_scan. * tree-vect-transform.c (vect_update_ivs_after_vectorizer): Use loop->single_exit. (vect_do_peeling_for_loop_bound): Use loop_preheader_edge and loop->single_exit. * tree-vectorizer.c (slpeel_update_phis_for_duplicate_loop, slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p, slpeel_tree_duplicate_loop_to_edge_cfg, slpeel_verify_cfg_after_peeling, slpeel_tree_peel_loop_to_edge): Use loop_preheader_edge and loop->single_exit. Do not call flow_loop_scan. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95738 138bc75d-0d04-0410-961f-82ee72b054a4
* * bitmap.h (BITMAP_XMALLOC, BITMAP_XFREE): Remove.nathan2005-02-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * bb-reorder.c (duplicate_computed_gotos): Use BITMAP_ALLOC and BITMAP_FREE. * bt-load.c (btr_def_live_range, combine_btr_defs, migrate_btr_def, migrate_btr_defs): Likewise. * cfgcleanup.c (thread_jump): Likewise. * cfgloop.c (get_loop_body_in_bfs_order): Likewise. * df.c (df_insn_table_realloc, df_bitmaps_alloc, df_bitmaps_free, df_alloc, df_free, df_du_chain_create, df_bb_rd_local_compute, df_rd_local_compute, df_reg_info_compute): Likewise. * dominance.c (init_dom_info, free_dom_info): Likewise. * flow.c (init_propagate_block_info, free_propagate_block_info): Likewise. * gcse.c (alloc_gcse_mem, free_gcse_mem): Likewise. * global.c (allocate_bb_info, free_bb_info, calculate_reg_pav, modify_reg_pav): Likewise. * loop-invariant.c (find_defs, find_invariant_insn, find_invariants, free_inv_motion_data): Likewise. * predict.c (tree_predict_by_opcode, estimate_bb_frequencies): Likewise. * stmt.c (expand_case): Likewise. * tree-cfg.c (tree_duplicate_sese_region): Likewise. * tree-dfa.c (mark_new_vars_to_rename): Likewise. * tree-if-conv.c (get_loop_body_in_if_conv_order): Likewise. * tree-into-ssa.c (insert_phi_nodes_for, def_blocks_free, get_def_blocks_for, mark_def_site_blocks, rewrite_into_ssa, rewrite_ssa_into_ssa): Likewise. * tree-optimize.c (tree_rest_of_compilation): Likewise. * tree-outof-ssa.c (new_temp_expr_table, free_temp_expr_table, analyze_edges_for_bb, perform_edge_inserts): Likewise. * tree-scalar-evolution.c (scev_initialize, scev_finalize): Likewise. * tree-sra.c (tree_sra): Likewise. * tree-ssa-alias.c (init_alias_info, delete_alias_info): Likewise. * tree-ssa-ccp.c (ccp_fold_builtin): Likewise. * tree-ssa-dce.c (tree_dce_init, tree_dce_done): Likewise. * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise. * tree-ssa-dse.c (tree_ssa_dse): Likewise. * tree-ssa-forwprop.c (tree_ssa_forward_propagate_single_use_var): Likewise. * tree-ssa-live.c (new_tree_live_info, delete_tree_live_info, calculate_live_on_entry, calculate_live_on_exit, build_tree_conflict_graph): Likewise. * tree-ssa-loop-ivopts.c (tree_ssa_iv_optimize_init, record_use, record_important_candidates, set_use_iv_cost, find_depends, determine_use_iv_costs, iv_ca_new, iv_ca_free, free_loop_data, tree_ssa_iv_optimize_finalize): Likewise. * tree-ssa-loop-manip.c (add_exit_phis_var, get_loops_exit, find_uses_to_rename_use, rewrite_into_loop_closed_ssa, tree_duplicate_loop_to_header_edge): Likewise. * tree-ssa-pre.c (init_pre, fini_pre): Likewise. * tree-ssa.c (verify_flow_insensitive_alias_info, verify_name_tags, verify_ssa, init_tree_ssa, delete_tree_ssa): Likewise. * tree-ssanames.c (marked_ssa_names, init_ssanames, fini_ssanames): Likewise. * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95172 138bc75d-0d04-0410-961f-82ee72b054a4
* * Makefile.in (tree-vect-analyze.o, tree-vect-transform.o): New.dorit2005-02-171-4254/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (tree-vectorizer.o): Added missing dependencies. * tree-vectorizer.h (vect_dump, vect_verbosity_level): Added extern decleration. (slpeel_tree_peel_loop_to_edge): Function externalized (had a static declaration in tree-vectorizer.c, now has an extern declaration in tree-vectorizer.h). (slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling, vect_strip_conversion, get_vectype_for_scalar_type, vect_is_simple_use, vect_is_simple_iv_evolution, vect_can_force_dr_alignment_p, vect_supportable_dr_alignment, new_loop_vec_info, destroy_loop_vec_info, new_stmt_vec_info, vect_analyze_loop, vectorizable_load, vectorizable_store, vectorizable_operation, vectorizable_assignment, vect_transform_loop, vect_print_dump_info, vect_set_verbosity_level, find_loop_location): Likewise. * tree-vectorizer.c (langhooks.h): #include removed. (slpeel_tree_peel_loop_to_edge): Function externalized. Declaration moved to tree-vectorized.h. (slpeel_make_loop_iterate_ntimes, slpeel_can_duplicate_loop_p, slpeel_verify_cfg_after_peeling, vect_strip_conversion, get_vectype_for_scalar_type, vect_is_simple_use, vect_is_simple_iv_evolution, vect_can_force_dr_alignment_p, vect_supportable_dr_alignment, new_loop_vec_info, destroy_loop_vec_info, new_stmt_vec_info, vect_print_dump_info, vect_set_verbosity_level, find_loop_location): Likewise. (vect_analyze_loop): Function externalized. Declaration moved to tree-vectorized.h. Function definition moved to tree-vect-analyze.c. (vect_analyze_loop_form): Moved to tree-vect-analyze.c. (vect_mark_stmts_to_be_vectorized, vect_analyze_scalar_cycles, vect_analyze_data_ref_accesses, vect_analyze_data_ref_dependences, vect_analyze_data_refs_alignment, vect_compute_data_refs_alignment, vect_enhance_data_refs_alignment, vect_analyze_operations, exist_non_indexing_operands_for_use_p, vect_mark_relevant, vect_stmt_relevant_p, vect_get_loop_niters, vect_analyze_data_ref_dependence, vect_compute_data_ref_alignment, vect_analyze_data_ref_access, vect_analyze_pointer_ref_access, vect_can_advance_ivs_p, vect_get_ptr_offset, vect_analyze_offset_expr, vect_base_addr_differ_p, vect_object_analysis, vect_address_analysis, vect_get_memtag): Likewise. (vectorizable_load): Function externalized. Declaration moved to tree-vectorized.h. Function definition moved to tree-vect-transform.c. (vectorizable_store, vectorizable_operation, vectorizable_assignment, vect_transform_loop): Likewise. (vect_transform_stmt): Moved to tree-vect-transform.c. (vect_align_data_ref, vect_create_destination_var, vect_create_data_ref_ptr, vect_create_index_for_vector_ref, vect_create_addr_base_for_vector_ref, vect_get_new_vect_var, vect_get_vec_def_for_operand, vect_init_vector, vect_finish_stmt_generation, vect_generate_tmps_on_preheader, vect_build_loop_niters, vect_update_ivs_after_vectorizer, vect_gen_niters_for_prolog_loop, vect_update_inits_of_dr, vect_update_inits_of_drs, vect_do_peeling_for_alignment, vect_do_peeling_for_loop_bound): Likewise. * tree-vect-analyze.c: New file. * tree-vect-transform.c: New file. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@95153 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_get_base_and_offset): Remove.dorit2005-02-121-435/+422
| | | | | | | | | | | | | | | | | | | | (vect_is_simple_iv_evolution): Remove redundant parameter and step check. (vect_analyze_scalar_cycles): Call vect_is_simple_iv_evolution without last parameter. (vect_analyze_pointer_ref_access): Get access_fn as parameter. Return pointer step. Call vect_is_simple_iv_evolution without last parameter. Check only that the step is multiple of size type. Remove stmt_vinfo updates. (vect_get_memtag_and_dr): Remove. (vect_get_memtag): New function. (vect_address_analysis): New function. (vect_object_analysis): New function. (vect_analyze_data_refs): Call vect_object_analysis and vect_get_memtag. Update stmt_vinfo fields. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94934 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-data-ref.c (array_base_name_differ_p): Check that the basesdorit2005-02-121-12/+73
| | | | | | | | | | | | | | | exist and are objects. Remove checks for pointer. * tree-vectorizer.c (vect_create_addr_base_for_vector_ref): Use STMT_VINFO_VECT_DR_BASE_ADDRESS instead of DR_BASE_NAME. (vect_create_data_ref_ptr): Likewise. (vect_base_addr_differ_p): New function. (vect_analyze_data_ref_dependence): Call vect_base_addr_differ_p. (vect_analyze_pointer_ref_access): Add output parameter - ptr_init. Don't set the DR_BASE_NAME field of data-ref. (vect_get_memtag_and_dr): Use ptr_init instead of DR_BASE_NAME. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94932 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-02-13 Ira Rosen <irar@il.ibm.com>dorit2005-02-121-33/+8
| | | | | | | | | | | | | | | | | * tree-vectorizer.h (struct _stmt_vec_info): Rename a field: base to base_address. * tree-vectorizer.c (new_stmt_vec_info): Rename the above field of stmt_vec_info. (vect_get_base_and_offset): Always return an address. (vect_create_addr_base_for_vector_ref): Remove treatment for different data reference types. (vect_compute_data_ref_alignment): Rename base to base_address in stmt_vec_info. Get the object in order to force its alignment. (vect_get_memtag_and_dr): Rename base to base_address in stmt_vec_info. Extract the object for memtag analysis. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94930 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_set_dump_settings): Check that dump_filedorit2005-02-091-2/+4
| | | | | | | exists. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94768 138bc75d-0d04-0410-961f-82ee72b054a4
* * doc/invoke.texi (ftree-vectorizer-verbose): New.dorit2005-02-071-450/+513
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * opts.c (OPT_ftree_vectorizer_verbose_): New case for switch. * common.opt (ftree-vectorizer-verbose): New Flag for the vectorizer was added. * tree.h (vect_set_verbosity_level): New extern function declaration added. * tree-vectorizer.h (verbosity_levels): New enum type. * tree-vectorizer.c (vect_debug_stats): Function removed. (vect_debug_details): Likewise. (vect_verbosity_level): Global variable was defined and initialized. (vect_dump): Global variable definition. (vect_print_dump_info): New function. (vect_set_dump_settings): New function. (vect_set_verbosity_level): New function. (vectorize_loops): Add call to vect_set_dump_settings. (slpeel_make_loop_iterate_ntimes): Dump condition was changed. (slpeel_tree_duplicate_loop_to_edge_cfg): Likewise. (slpeel_tree_peel_loop_to_edge): Likewise. (vect_analyze_offset_expr): Call to vect_print_dump_info with appropriate verbosity level instead of call to vect_debug_details or vect_debug_stats. (vect_get_base_and_offset): (vect_create_addr_base_for_vector_ref): (get_vectype_for_scalar_type): (vect_create_data_ref_ptr): (vect_init_vector): (vect_get_vec_def_for_operand): (vect_finish_stmt_generation): (vectorizable_assignment): (vectorizable_operation): (vectorizable_store): (vectorizable_load): (vect_transform_stmt): (vect_update_ivs_after_vectorizer): (vect_do_peeling_for_loop_bound): (vect_update_inits_of_drs): (vect_do_peeling_for_alignment): (vect_transform_loop): (vect_is_simple_use): (vect_analyze_operations): (vect_is_simple_iv_evolution): (vect_analyze_scalar_cycles): (vect_analyze_data_ref_dependence): (vect_analyze_data_ref_dependences): (vect_compute_data_ref_alignment): (vect_enhance_data_refs_alignment): (vect_analyze_data_refs_alignment): (vect_analyze_data_ref_access): (vect_analyze_data_ref_accesses): (vect_analyze_pointer_ref_access): (vect_get_memtag_and_dr): (vect_analyze_data_refs): (vect_mark_relevant): (vect_stmt_relevant_p): (vect_mark_stmts_to_be_vectorized): (vect_can_advance_ivs_p): (vect_get_loop_niters): (vect_analyze_loop_form): (vect_analyze_loop): (vectorize_loops): Likewise. (vect_do_peeling_for_loop_bound): Dump format slightly changed. (vect_update_inits_of_drs): (vect_do_peeling_for_alignment): (vect_transform_loop): (vect_analyze_operations): (vect_analyze_scalar_cycles): (vect_analyze_data_ref_dependences): (vect_analyze_data_refs_alignment): (vect_analyze_data_ref_accesses): (vect_analyze_data_refs): (vect_mark_stmts_to_be_vectorized): (vect_get_loop_niters): (vect_analyze_loop_form): (vect_analyze_loop): Likewise. (vect_mark_stmts_to_be_vectorized): Add call to print_generic_expr. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94697 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.h (LOC): New type.dorit2005-02-031-219/+256
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (UNKNOWN_LOC, EXPR_LOC, LOC_FILE, LOC_LINE): New macros. (loop_line_number): New field in struct _loop_vec_info. (LOOP_VINFO_LOC, LOOP_LOC): New macros. * tree-vectorizer.c (input.h): Included. (find_loop_location): New function. (vect_debug_stats): Argument changed from loop to LOC. Computation of loop line number removed. (vect_debug_details): Likewise. (new_loop_vec_info): Initialize new field LOOP_VINFO_LOC. (slpeel_make_loop_iterate_ntimes): Call find_loop_location. Argument in call to vect_debug_details/stats changed from loop to loop_loc. (slpeel_tree_duplicate_loop_to_edge_cfg): Likewise. (slpeel_tree_peel_loop_to_edge): Likewise. (vect_analyze_offset_expr): Argument in call to vect_debug_details/stats changed from NULL to UNKNOWN_LOC. (vect_get_base_and_offset): (vect_create_addr_base_for_vector_ref): (get_vectype_for_scalar_type): (vect_create_data_ref_ptr): (vect_init_vector): (vect_get_vec_def_for_operand): (vect_finish_stmt_generation): (vectorizable_assignment): (vectorizable_operation): (vectorizable_store): (vectorizable_load): (vect_transform_stmt): (vect_update_ivs_after_vectorizer): (vect_do_peeling_for_loop_bound): (vect_do_peeling_for_alignment): (vect_transform_loop): (vect_is_simple_use): (vect_analyze_operations): (vect_is_simple_iv_evolution): (vect_analyze_scalar_cycles): (vect_analyze_data_ref_dependences): (vect_compute_data_ref_alignment): (vect_enhance_data_refs_alignment): (vect_analyze_data_ref_access): (vect_analyze_data_ref_accesses): (vect_analyze_pointer_ref_access): (vect_get_memtag_and_dr): (vect_analyze_data_refs): (vect_mark_relevant): (vect_stmt_relevant_p): (vect_mark_stmts_to_be_vectorized): (vect_can_advance_ivs_p): (vect_get_loop_niters): (vect_analyze_loop): (vectorize_loops): Likewise. (vectorizable_load): Argument in call to vect_debug_details/stats changed from loop to LOOP_LOC (loop_vinfo). (vect_transform_loop): (vect_analyze_operations): (vect_analyze_scalar_cycles): (vect_analyze_data_ref_dependence): (vect_enhance_data_refs_alignment): (vect_analyze_data_ref_accesses): (vect_analyze_pointer_ref_access): (vect_analyze_data_refs): (vect_analyze_loop): Likewise. (vect_analyze_loop_form): Argument in call to vect_debug_details/stats changed from loop to loop_loc. (vect_enhance_data_refs_alignment): Removed unused variable loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94662 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_analyze_data_ref_dependence): Functiondorit2005-02-031-59/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | declaration added. (vect_analyze_data_ref_dependences): Likewise. (vect_is_simple_use): Argument changed from loop structure to loop_vect_info structure. (vect_can_advance_ivs_p): Likewise. (vect_create_index_for_vector_ref): Likewise. (vect_update_ivs_after_vectorizer): Likewise. (new_stmt_vec_info): Likewise. (new_loop_vec_info): Second argument in call to new_stmt_vec_info was changed from loop to loop_vinfo. (vect_create_data_ref_ptr): First argument in call to vect_create_index_for_vector_ref was changed from loop to loop_vinfo. (vectorizable_assignment): Second argument in call to vect_is_simple_use was changed from loop to loop_vinfo. (vectorizable_operation): Likewise. (vectorizable_store): Likewise. (vect_mark_stmts_to_be_vectorized): Likewise. (vect_do_peeling_for_loop_bound): First argument in call to vect_update_ivs_after_vectorizer was changed from loop to loop_vinfo. (vect_analyze_operations): Argument in call to vect_can_advance_ivs_p was changed from loop to loop_vinfo. (vect_analyze_data_ref_dependences): Third argument in call to vect_analyze_data_ref_dependence was changed from loop to loop_vinfo. (vect_create_index_for_vector_ref): Get the loop from loop_vinfo. (vect_create_data_ref_ptr): Likewise. (vect_init_vector): Likewise. (vect_get_vec_def_for_operand): Likewise. (vectorizable_assignment): Likewise. (vectorizable_operation): Likewise. (vectorizable_store): Likewise. (vectorizable_load): Likewise. (vect_update_ivs_after_vectorizer): Likewise. (vect_is_simple_use): Likewise. (vect_analyze_data_ref_dependence): Likewise. (vect_analyze_pointer_ref_access): Likewise. (vect_can_advance_ivs_p): Likewise. * tree-vectorizer.h: (_loop_vec_info): Definition and macros moved before _stmt_vec_info. (_stmt_vec_info): Loop field replaced by loop_vec_info. (STMT_VINFO_LOOP): Replaced with STMT_VINFO_LOOP_VINFO. (new_stmt_vec_info): Argument changed from loop structure to loop_vect_info structure (vect_analyze_data_ref_dependences): Unnecessary line was removed. (vect_analyze_offset_expr): Avoid 80 columns overflow. (vect_create_addr_base_for_vector_ref): Likewise. (vect_analyze_pointer_ref_access): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94661 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Copydorit2005-02-031-23/+54
| | | | | | | | | | | | | | | | | | | | | | | | EXPR_LOCUS from orig_cond to the new cond_stmt. (vect_finish_stmt_generation): Copy EXPR_LOCUS from stmt to the new vec_stmt. * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Call standard_iv_increment_position. Remove call to bsi_next (no need to bump the iterator anymore). (vect_create_index_for_vector_ref): Call standard_iv_increment_position. Remove second function argument. (vect_finish_stmt_generation): Remove call to bsi_next (no need to bump the iterator anymore). (vect_create_data_ref_ptr): Remove second argument (bsi) in call to vect_create_index_for_vector_ref. * tree-vectorizer.c (vect_mark_stmts_to_be_vectorized): Check if phis are used out of the loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94651 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-01-31 Ira Rosen <irar@il.ibm.com>dorit2005-01-311-44/+45
| | | | | | | | | | | | | * tree-vectorizer.c (vect_analyze_offset_expr): Use ssizetype instead sizetype. (vect_get_base_and_offset): Use ssizetype instead sizetype. Remove redundant fold. Fix misalignment for MINUS_EXPR. (vect_compute_data_ref_alignment): Use ssizetype instead sizetype. (vect_analyze_pointer_ref_access): Likewise. (vect_get_memtag_and_dr): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94480 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-flow-inline.h (phi_arg_from_edge): Remove.kazu2005-01-241-4/+3
| | | | | | | | | * tree-flow.h: Remove the corresponding prototype. * tree-ssa-operands.h, tree-ssa-threadupdate.c, tree-ssa.c, tree-vectorizer.c: Use dest_idx instead of phi_arg_from_edge. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94183 138bc75d-0d04-0410-961f-82ee72b054a4
* * alias.c, c-common.h, c-incpath.c, c-incpath.h, expr.c,kazu2005-01-231-3/+3
| | | | | | | | | | | | | | | fold-const.c, gimplify.c, params.h, tree-data-ref.c, tree-if-conv.c, tree-nested.c, tree-outof-ssa.c, tree-ssa-dom.c, tree-vectorizer.c, tree.def, config/darwin.c, config/freebsd-spec.h, config/arm/arm.h, config/h8300/h8300.md, config/i386/i386.md, config/i386/predicates.md, config/i386/sse.md, config/ia64/ia64.c, config/ip2k/ip2k.c, config/s390/s390.c, config/vax/vax.md: Fix comment typos. Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94112 138bc75d-0d04-0410-961f-82ee72b054a4
* * basic-block.h, c-common.c, c-cppbuiltin.c, c-lang.c,kazu2005-01-181-1/+1
| | | | | | | | | | | | | | | | | | | | c-tree.h, cfgbuild.c, cgraph.c, cgraph.h, collect2.c, combine.c, config.gcc, coverage.h, cse.c, cselib.c, defaults.h, df.c, dwarf2asm.c, dwarf2out.c, explow.c, expr.c, flow.c, fold-const.c, gcse.c, ggc-page.c, gimple-low.c, gimplify.c, ifcvt.c, langhooks-def.h, lcm.c, optabs.h, output.h, postreload-gcse.c, postreload.c, recog.c, resource.c, rtl.def, rtlanal.c, sched-deps.c, sched-rgn.c, targhooks.h, toplev.c, tree-data-ref.c, tree-eh.c, tree-flow.h, tree-loop-linear.c, tree-mudflap.h, tree-nrv.c, tree-optimize.c, tree-outof-ssa.c, tree-pass.h, tree-scalar-evolution.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dse.c, tree-ssa-loop-ivopts.c, tree-ssa-operands.c, tree-ssa-pre.c, tree-ssa.c, tree-vectorizer.c, tree.def, unwind-dw2-fde-darwin.c, var-tracking.c: Update copyright. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93827 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c, tree.def: Fix comment typos.kazu2005-01-101-3/+3
| | | | git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93153 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_enhance_data_refs_alignment): Add dump prints.dorit2005-01-091-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (vect_analyze_data_refs_alignment): Add dump prints. * gcc.dg/vect/pr18400.c: Add checks for alignment prints. * gcc.dg/vect/pr18425.c: Add checks for alignment prints. * gcc.dg/vect/pr18536.c: Add checks for alignment prints. * gcc.dg/vect/vect-1.c: Add checks for alignment prints. * gcc.dg/vect/vect-2.c: Add checks for alignment prints. * gcc.dg/vect/vect-3.c: Add checks for alignment prints. * gcc.dg/vect/vect-4.c: Add checks for alignment prints. * gcc.dg/vect/vect-5.c: Add checks for alignment prints. * gcc.dg/vect/vect-6.c: Add checks for alignment prints. * gcc.dg/vect/vect-7.c: Add checks for alignment prints. * gcc.dg/vect/vect-13.c: Add checks for alignment prints. * gcc.dg/vect/vect-17.c: Add checks for alignment prints. * gcc.dg/vect/vect-18.c: Add checks for alignment prints. * gcc.dg/vect/vect-19.c: Add checks for alignment prints. * gcc.dg/vect/vect-20.c: Add checks for alignment prints. * gcc.dg/vect/vect-21.c: Add checks for alignment prints. * gcc.dg/vect/vect-22.c: Add checks for alignment prints. * gcc.dg/vect/vect-23.c: Add checks for alignment prints. * gcc.dg/vect/vect-24.c: Add checks for alignment prints. * gcc.dg/vect/vect-25.c: Add checks for alignment prints. * gcc.dg/vect/vect-26.c: Add checks for alignment prints. * gcc.dg/vect/vect-27.c: Add checks for alignment prints. * gcc.dg/vect/vect-28.c: Add checks for alignment prints. * gcc.dg/vect/vect-29.c: Add checks for alignment prints. * gcc.dg/vect/vect-31.c: Add checks for alignment prints. * gcc.dg/vect/vect-32.c: Add checks for alignment prints. * gcc.dg/vect/vect-33.c: Add checks for alignment prints. * gcc.dg/vect/vect-34.c: Add checks for alignment prints. * gcc.dg/vect/vect-35.c: Add checks for alignment prints. * gcc.dg/vect/vect-36.c: Add checks for alignment prints. * gcc.dg/vect/vect-37.c: Add checks for alignment prints. * gcc.dg/vect/vect-40.c: Add checks for alignment prints. * gcc.dg/vect/vect-41.c: Add checks for alignment prints. * gcc.dg/vect/vect-42.c: Add checks for alignment prints. * gcc.dg/vect/vect-43.c: Add checks for alignment prints. * gcc.dg/vect/vect-44.c: Add checks for alignment prints. * gcc.dg/vect/vect-46.c: Add checks for alignment prints. * gcc.dg/vect/vect-47.c: Add checks for alignment prints. * gcc.dg/vect/vect-48.c: Add checks for alignment prints. * gcc.dg/vect/vect-50.c: Add checks for alignment prints. * gcc.dg/vect/vect-52.c: Add checks for alignment prints. * gcc.dg/vect/vect-53.c: Add checks for alignment prints. * gcc.dg/vect/vect-56.c: Add checks for alignment prints. * gcc.dg/vect/vect-58.c: Add checks for alignment prints. * gcc.dg/vect/vect-60.c: Add checks for alignment prints. * gcc.dg/vect/vect-62.c: Add checks for alignment prints. * gcc.dg/vect/vect-64.c: Add checks for alignment prints. * gcc.dg/vect/vect-65.c: Add checks for alignment prints. * gcc.dg/vect/vect-66.c: Add checks for alignment prints. * gcc.dg/vect/vect-67.c: Add checks for alignment prints. * gcc.dg/vect/vect-68.c: Add checks for alignment prints. * gcc.dg/vect/vect-69.c: Add checks for alignment prints. * gcc.dg/vect/vect-72.c: Add checks for alignment prints. * gcc.dg/vect/vect-73.c: Add checks for alignment prints. * gcc.dg/vect/vect-74.c: Add checks for alignment prints. * gcc.dg/vect/vect-75.c: Add checks for alignment prints. * gcc.dg/vect/vect-76.c: Add checks for alignment prints. * gcc.dg/vect/vect-77.c: Add checks for alignment prints. * gcc.dg/vect/vect-78.c: Add checks for alignment prints. * gcc.dg/vect/vect-80.c: Add checks for alignment prints. * gcc.dg/vect/vect-86.c: Add checks for alignment prints. * gcc.dg/vect/vect-87.c: Add checks for alignment prints. * gcc.dg/vect/vect-88.c: Add checks for alignment prints. * gcc.dg/vect/vect-89.c: Add checks for alignment prints. * gcc.dg/vect/vect-all.c: Add checks for alignment prints. * gcc.dg/vect/vect-1.c: Fix spelling. * gcc.dg/vect/vect-10.c: Fix spelling. * gcc.dg/vect/vect-11.c: Fix spelling. * gcc.dg/vect/vect-12.c: Fix spelling. * gcc.dg/vect/vect-14.c: Fix spelling. * gcc.dg/vect/vect-15.c: Fix spelling. * gcc.dg/vect/vect-16.c: Fix spelling. * gcc.dg/vect/vect-46.c: Remove obsolete comment. * gcc.dg/vect/vect-64.c: Fix comments. * gcc.dg/vect/vect-none.c: Remove vectorizable loop. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93114 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-01-09 Ira Rosen <irar@il.ibm.com>dorit2005-01-091-19/+22
| | | | | | | | | | | | | * tree-vectorizer.c (vect_analyze_offset_expr): Use expr_invariant_in_loop_p. Initialize outputs first thing in the function. (vect_update_ivs_after_vectorizer): Call initial_condition_in_loop_num. (vect_is_simple_iv_evolution): Call initial_condition_in_loop_num. (vect_analyze_pointer_ref_access): Check that the initial condition of the access function is loop invariant. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@93113 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-01-04 Ira Rosen <irar@il.ibm.com>dorit2005-01-041-5/+5
| | | | | | | | | | | | * tree-vectorizer.c (vect_analyze_offset_expr): Test for INTEGER_CST instead of TREE_CONSTANT. (vect_gen_niters_for_prolog_loop): Test for INTEGER_CST instead of TREE_CONSTANT. (vect_analyze_pointer_ref_access): Test for INTEGER_CST instead of TREE_CONSTANT. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92894 138bc75d-0d04-0410-961f-82ee72b054a4
* 2005-01-03 Ira Rosen <irar@il.ibm.com>dorit2005-01-041-15/+44
| | | | | | | | | * tree-vectorizer.c (vect_strip_conversions): New function. (vect_analyze_offset_expr): Call vect_strip_conversions. Add check for binary class. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92888 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_analyze_offset_expr): Strip conversionsrth2005-01-021-1/+16
| | | | | | | that don't narrow the value. Fail for other conversions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92804 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_get_base_and_offset): Adjust call toodorit2004-12-291-1/+1
| | | | | | | get_inner_reference (missing argument). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92705 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-12-29 Ira Rosen <irar@il.ibm.com>dorit2004-12-291-531/+279
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR tree-optimization/18179 * tree-vectorizer.c (vect_get_base_and_offset): Call get_inner_reference and vect_analyze_offset_expr. (vect_create_addr_base_for_vector_ref): Build address_base by combining base and initial_offset fields of vect_stmt_info. (vect_update_inits_of_dr): Update offset of data-ref instead of its access-fn. Remove argument. (vect_update_inits_of_drs): Call vect_update_inits_of_dr with new arguments. (vect_compute_data_ref_alignment): Check misalignment info in vect_stmt_info. Remove argument. (vect_compute_data_refs_alignment): Call vect_compute_data_ref_alignment with correct argument. (vect_analyze_data_ref_access): Check access info in vect_stmt_info. (vect_analyze_pointer_ref_access): Update step and initial_offset fields of vect_stmt_info. (vect_get_memtag_and_dr): Call vect_get_base_and_offset and set the fields of stmt_vec_info. (vect_analyze_data_refs): Find vectype and pass it to vect_get_memtag_and_dr. (vect_get_first_index): Remove. (vect_compute_array_base_alignment): Remove. (vect_compute_array_ref_alignment): Remove (vect_create_data_ref_ptr): Use TYPE_SIZE_UNIT instead GET_MODE_SIZE. (vect_gen_niters_for_prolog_loop): Use TREE_CONSTANT instead host_integerp. (vectorizable_load): Use size arithmetics. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92704 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-12-29 Ira Rosen <irar@il.ibm.com>dorit2004-12-291-24/+23
| | | | | | | | | | PR tree-optimization/18179 * tree-vectorizer.c (vect_get_base_and_offset): Rename (previous name vect_get_base_and_bit_offset). (vect_get_memtag_and_dr): Rename (previous name vect_get_symbl_and_dr). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92702 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-12-29 Ira Rosen <irar@il.ibm.com>dorit2004-12-291-4/+193
| | | | | | | | | | | | | | PR tree-optimization/18179 * tree-vectorizer.h (struct _stmt_vec_info): Add new fields: initial_offset, step, misalignment and base_aligned_p and macros to access them. * tree-vectorizer.c (vect_analyze_offset_expr): New function. (new_stmt_vec_info): Initialize the new fields of stmt_vec_info. (vect_create_data_ref_ptr): Fix printings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92701 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-12-29 Ira Rosen <irar@il.ibm.com>dorit2004-12-291-171/+109
| | | | | | | | | | PR tree-optimization/18179 * tree-vectorizer.c (vect_get_symbl_and_dr): Reorganize. Add memtag retrieval. (vect_analyze_data_refs): Remove memtag retrieval. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92700 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_mark_relevant) First argument changed fromdorit2004-12-281-7/+7
| | | | | | | | | varray_type to varray_type*. (vect_mark_stmts_to_be_vectorized): Pass &worklist instead of worklist when calling vect_mark_relevant. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92671 138bc75d-0d04-0410-961f-82ee72b054a4
* * optabs.h (OTI_movmisalign, movmisalign_optab): New.rth2004-12-231-2/+2
| | | | | | | | | | | | | | | * optabs.c (init_optabs): Create it. * genopinit.c (optabs): Initialize it. * expr.c (expand_expr_real_1) <MISALIGNED_INDIRECT_REF>: Use it. * tree-vectorizer.c (vect_supportable_dr_alignment): Likewise. * target-def.h (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove. * target.h (vectorize.misaligned_mem_ok): Remove. * targhooks.c (default_vect_misaligned_mem_ok): Remove. * doc/md.texi (movmisalign): New. * doc/tm.texi (TARGET_VECTORIZE_MISALIGNED_MEM_OK): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92537 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-into-ssa.c (REWRITE_THIS_STMT): Define.dnovillo2004-12-101-0/+4
| | | | | | | | | | | | | | | | | | (mark_def_sites): Clear REWRITE_THIS_STMT for statements that don't need any operands rewritten. (rewrite_stmt): Ignore statements that don't need to be rewritten. (rewrite_operand): Validate that an existing SSA_NAME is identical to the current reaching definition of the operand. * tree-dfa.c (mark_call_clobbered_vars_to_rename): New function. * tree-vectorizer.c (vectorizable_load): Call it. * tree-flow.h (mark_call_clobbered_vars_to_rename): Declare. * tree-sra.c (mark_all_v_defs): Also mark VUSEs for renaming. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@92010 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-opt/18716dorit2004-12-021-5/+13
| | | | | | | | * tree-vectorizer.c (slpeel_make_loop_iterate_ntimes): Properly set then and else labels. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91637 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-11-30 Nathan Sidwell <nathan@codesourcery.com>pinskia2004-11-301-12/+20
| | | | | | | | * tree-vectorizer.c (vect_analyze_data_refs): Reformat and avoid uninitialized variable. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91543 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-11-30 Ira Rosen <irar@il.ibm.com>dorit2004-11-301-4/+4
| | | | | | | | | PR tree-opt/18607 * tree-vectorizer.c (vect_analyze_data_refs): Use temporary variable for data_reference when looking for memtag. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91521 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_gen_niters_for_prolog_loop): Usedorit2004-11-301-1/+1
| | | | | | | tree_low_cst instead of TREE_INT_CST_LOW. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91518 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_can_force_dr_alignment_p): Return false fordorit2004-11-301-1/+4
| | | | | | | | decls that are assembled before vectorization takes place. (vect_compute_data_ref_alignment): Set DECL_USER_ALIGN to 1. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91517 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-phinodes.c (add_phi_arg): Take "tree" instead ofkazu2004-11-251-8/+8
| | | | | | | | | | | | "tree *" as the first argument. * tree-flow.h: Update the prototype of add_phi_arg. * lambda-code.c, tree-cfg.c, tree-into-ssa.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-manip.c, tree-ssa-pre.c, tree-ssa-threadupdate.c, tree-ssa.c, tree-tailcall.c, tree-vectorizer.c: Update all call sites of add_phi_arg. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91307 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-vectorizer.c (vect_analyze_operations): Don't vectorize ifdorit2004-11-231-91/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | the vectorization factor is greater than the iteration count. (vect_gen_niters_for_prolog_loop): No need to calculate min if the iteration count is known. (vect_build_symbol_bound): Removed. Its functionality moved to vect_generate_tmps_on_preheader. (vect_generate_tmps_on_preheader): Moved content of vect_build_symbol_bound here instead of calling it. Changed some variables names. (vect_build_loop_niters): We don't expect a new_bb to be generated - use gcc_assert. (vect_gen_niters_for_prolog_loop): Likewise. (vect_gen_niters_for_prolog_loo): Likewise. (slpeel_make_loop_iterate_ntimes): Use buildN instead of build. (slpeel_add_loop_guard): Likewise. (slpeel_tree_peel_loop_to_edge): Likewise. (vect_do_peeling_for_alignment): Likewise. (vect_get_first_index): Missing space. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91100 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-opt/18403dorit2004-11-231-1/+11
| | | | | | | | | | PR tree-opt/18505 * tree-vectorizer.c (vect_create_data_ref_ptr): Use lang_hooks.types.type_for_size instead of integer_type_node for the type of ptr_update. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91081 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-opt/18536dorit2004-11-221-84/+55
| | | | | | | | | | | | | | | | | | | * tree-vectorizer.c (make_loop_iterate_ntimes): Use type of niters when creating iv instead of integer_type. (vect_build_loop_niters): Remove redundant code. (vect_transform_loop_bound): Removed (duplicates functionality of make_loop_iterate_ntimes. (vect_gen_niters_for_prolog_loop): Add documentation. Call lang_hooks.types.type_for_size to create a type of the required size. Use that type instead of integer_type. Remove redundant code. (vect_update_niters_after_peeling): Use type of niters instead of integer_type. (vect_transform_loop): Unify handling of known and unknown loop bound cases. Call make_loop_iterate_ntimes instead of vect_transform_loop_bound. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91014 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-opt/18544dorit2004-11-221-4/+9
| | | | | | | * tree-vectorizer.c (vect_analyze_data_refs): Fail if memtag not found. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91011 138bc75d-0d04-0410-961f-82ee72b054a4
* * tree-ssa-threadupdate.c, tree-vectorizer.c: Fix commentkazu2004-11-201-4/+4
| | | | | | | | typos. * config/arm/arm.c: Follow spelling conventions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90963 138bc75d-0d04-0410-961f-82ee72b054a4
* 2004-11-19 Andreas Tobler <a.tobler@schweiz.ch>andreast2004-11-191-3/+5
| | | | | | | | * tree-vectorizer.c (slpeel_verify_cfg_after_peeling): Define only if checking is enabled. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90939 138bc75d-0d04-0410-961f-82ee72b054a4
* PR tree-opt/18181dorit2004-11-191-313/+415
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * tree-vectorizer.c (slpeel_tree_peel_loop_to_edge): Peeling scheme changed to suppoer uses-after-loop and to void creating flow paths that shouldn't exist. (slpeel_update_phi_nodes_for_guard): Takes additional two arguments. Modified to fit the new peeling scheme. Avoid quadratic behavior. (slpeel_add_loop_guard): Takes additional argument. (slpeel_verify_cfg_after_peeling): New function. (vect_update_ivs_after_vectorizer): Takes additional argument. Updated documentation. Use 'exit-bb' instead of creating 'new-bb'. (rename_variables_in_bb): Don't update phis for BBs out of loop, to fit the new peeling scheme. (copy_phi_nodes): Function removed. Its functionality moved to update_phis_for_duplicate_loop. (slpeel_update_phis_for_duplicate_loop): Functionality of copy_phi_nodes moved here. Added documentation. Modified to fit the new peeling scheme. (slpeel_make_loop_iterate_ntimes): Setting loop->single_exit not not needed - done in slpeel_tree_peel_loop_to_edge. (slpeel_tree_duplicate_loop_to_edge_cfg): Debug printouts compacted. (vect_do_peeling_for_loop_bound): Add documentation. Call slpeel_verify_cfg_after_peeling. Call vect_update_ivs_after_vectorizer with additional argument. (vect_do_peeling_for_alignment): Call slpeel_verify_cfg_after_peeling. (vect_finish_stmt_generation): Avoid 80 column oveflow. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@90932 138bc75d-0d04-0410-961f-82ee72b054a4