aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
AgeCommit message (Collapse)AuthorFilesLines
2004-12-13tree-cfg.c (remove_useless_stmts_cond): Call fold on COND_EXPR_COND.Andrew Pinski1-1/+1
2004-12-13 Andrew Pinski <pinskia@physics.uc.edu> * tree-cfg.c (remove_useless_stmts_cond): Call fold on COND_EXPR_COND. From-SVN: r92093
2004-12-13defaults.h, [...]: Fix comment typos.Kazu Hirata1-4/+4
* defaults.h, stmt.c, tree-cfg.c, tree-ssa-dce.c: Fix comment typos. From-SVN: r92092
2004-12-10re PR middle-end/18903 (ice in bsi_after_labels)Andrew Pinski1-2/+2
2004-12-10 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/18903 * gcc.c-torture/compile/pr18903.c: New test. 2004-12-10 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/18903 * tree-cfg.c (remove_bb): Put the moved label at the beginning of the basic block. From-SVN: r92006
2004-12-06re PR tree-optimization/18601 (tree cfglceanup is slow)Zdenek Dvorak1-236/+139
PR tree-optimization/18601 * tree-cfg.c (thread_jumps, thread_jumps_from_bb): Removed. (tree_forwarder_block_p): Do not consider blocks that are its own successors forwarders. (cleanup_forwarder_blocks, remove_forwarder_block): New functions. (cleanup_tree_cfg): Use cleanup_forwarder_blocks instead of thread_jumps. * tree-flow.h (bb_ann_d): Remove forwardable. Co-Authored-By: Kazu Hirata <kazu@cs.umass.edu> From-SVN: r91787
2004-12-02* tree-cfg.c (thread_jumps): Reduce the size of WORKLIST.Kazu Hirata1-1/+1
From-SVN: r91648
2004-12-02tree-cfg.c (phi_alternatives_equal): Check that PHI_ARG_DEF is not null.Kazu Hirata1-4/+5
* tree-cfg.c (phi_alternatives_equal): Check that PHI_ARG_DEF is not null. From-SVN: r91647
2004-12-02tree-cfg.c (phi_alternatives_equal): Check that PHI_ARG_DEF is not null.Kazu Hirata1-9/+7
* tree-cfg.c (phi_alternatives_equal): Check that PHI_ARG_DEF is not null. From-SVN: r91646
2004-11-29expr.c (get_inner_reference): Handle REAL/IMAGPART_EXPR.Richard Henderson1-5/+2
* expr.c (get_inner_reference): Handle REAL/IMAGPART_EXPR. (handled_component_p): Likewise. * alias.c (can_address_p): Reformat and simplify. Handle REAL/IMAGPART_EXPR. Do not disable addressability based on alias set zero. * fold-const.c (build_fold_addr_expr_with_type): Remove duplicate check for REAL/IMAGPART_EXPR. * gimplify.c (gimplify_compound_lval): Likewise. * tree-cfg.c (verify_expr): Likewise. * tree-gimple.c (is_gimple_addressable, get_base_address): Likewise. * tree-nested.c (build_addr, convert_nonlocal_reference): Likewise. (convert_local_reference): Likewise. * tree-ssa-loop-ivopts.c (prepare_decl_rtl): Likewise. From-SVN: r91511
2004-11-29* tree-cfg.c (tree_node_can_be_shared): Fix typo'd error_mark_node.Richard Henderson1-1/+1
From-SVN: r91490
2004-11-29re PR middle-end/18725 (another ICE on trivial invalid asm)Andrew Pinski1-1/+2
2004-11-29 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/18725 * gcc.dg/pr18725.c: New test. 2004-11-29 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/18725 * tree-cfg.c (tree_node_can_be_shared): Error_mark_node can be shared always. From-SVN: r91487
2004-11-29tree-cfg.c (tree_redirect_edge_and_branch): Call find_edge only when needed.Kazu Hirata1-1/+1
* tree-cfg.c (tree_redirect_edge_and_branch): Call find_edge only when needed. From-SVN: r91476
2004-11-27tree.c (operand_equal_for_phi_arg_p): New.Kazu Hirata1-1/+1
* tree.c (operand_equal_for_phi_arg_p): New. * tree.h: Add a prototype for operand_equal_for_phi_arg_p. * tree-cfg.c, tree-ssa-dom.c, tree-ssa-phiopt.c, tree-ssa.c: Replace operand_equal_p with operand_for_phi_arg_p appropriately. From-SVN: r91385
2004-11-27tree-cfg.c (cleanup_tree_cfg): Also return true if blocks are merged.Jeff Law1-1/+1
* tree-cfg.c (cleanup_tree_cfg): Also return true if blocks are merged. From-SVN: r91376
2004-11-26* tree-cfg.c (tree_split_edge): Speed up by using find_edge.Kazu Hirata1-7/+3
From-SVN: r91341
2004-11-25tree-phinodes.c (add_phi_arg): Take "tree" instead of "tree *" as the first ↵Kazu Hirata1-6/+6
argument. * tree-phinodes.c (add_phi_arg): Take "tree" instead of "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. From-SVN: r91307
2004-11-25tree-cfg.c (tree_verify_flow_info): Do not terminate error() message with \n.Gerald Pfeifer1-1/+1
* tree-cfg.c (tree_verify_flow_info): Do not terminate error() message with \n. From-SVN: r91291
2004-11-23tree-cfg.c (tree_forwarder_block_p): Speed up by reordering two checks.Kazu Hirata1-3/+3
* tree-cfg.c (tree_forwarder_block_p): Speed up by reordering two checks. From-SVN: r91108
2004-11-23function.h (struct function): Remove calls_longjmp.Zack Weinberg1-4/+3
* function.h (struct function): Remove calls_longjmp. (current_function_calls_longjmp): Delete. * tree.h (ECF_LONGJMP): Delete. (ECF_SIBCALL, ECF_PURE, ECF_SP_DEPRESSED, ECF_ALWAYS_RETURN) (ECF_LIBCALL_BLOCK): Everybody slide down one. (ECF_CONST, ECF_NORETURN, ECF_SIBCALL): Clarify comments. * builtins.c (expand_builtin_longjmp): Don't set current_function_calls_longjmp. * calls.c (special_function_p): Mark longjmp and siglongjmp with ECF_NORETURN, not ECF_LONGJMP. (emit_call_1, expand_call, emit_library_call_value_1): Don't check for ECF_LONGJMP. * tree-cfg.c (make_exit_edges, is_ctrl_altering_stmt) (need_fake_edge_p): Likewise. * config/avr/avr.h, config/ip2k/ip2k.h: Don't define NON_SAVING_SETJMP. * system.h: Poison NON_SAVING_SETJMP. * function.c (use_register_for_decl) * gcse.c (compute_hash_table_work, compute_store_table) * postreload-gcse.c (record_opr_changes) * reload.c (find_equiv_reg) * reload1.c (reload) * config/i386/i386.c (ix86_can_use_return_insn_p): Remove code conditional on NON_SAVING_SETJMP. * doc/tm.texi: Delete documentation of NON_SAVING_SETJMP. * config/i386/sysv3.h: Delete file. * config/i386/i386.c (ix86_svr3_asm_out_constructor): Delete. From-SVN: r91101
2004-11-23tree-cfg.c (tree_try_redirect_by_replacing_jump): Speed up by restricting to ↵Kazu Hirata1-8/+6
the case with two outgoing edges. * tree-cfg.c (tree_try_redirect_by_replacing_jump): Speed up by restricting to the case with two outgoing edges. From-SVN: r91098
2004-11-23tree-cfg.c (tree_execute_on_growing_pred): New.Kazu Hirata1-1/+13
* tree-cfg.c (tree_execute_on_growing_pred): New. (tree_cfg_hooks): Add tree_execute_on_growing_pred. * tree-flow.h: Add a prototype for reserve_phi_args_for_new_edge. * tree-phinodes.c (reserve_phi_args_for_new_edge): New. (add_phi_arg): Don't resize a PHI array. From-SVN: r91075
2004-11-22tree-ssa.c (ssa_remove_edge): Remove.Kazu Hirata1-3/+3
* tree-ssa.c (ssa_remove_edge): Remove. * tree-flow.h: Remove the corresponding prototype. * tree-cfg.c: Replace ssa_remove_edge with remove_edge. * basic-block.h: Likewise. * tree-if-conv.c: Likewise. * tree-ssa-threadupdate.c: Likewise. From-SVN: r91039
2004-11-22tree-cfg.c (tree_execute_on_shrinking_pred): New.Kazu Hirata1-1/+11
* tree-cfg.c (tree_execute_on_shrinking_pred): New. (tree_cfg_hooks): Use it. * tree-ssa.c (ssa_remove_edge): Don't call remove_phi_args. (ssa_redirect_edge): Don't call remove_phi_arg_num. From-SVN: r91036
2004-11-22cfg.c (unchecked_make_edge): Call execute_on_growing_pred after making an edge.Kazu Hirata1-1/+3
* cfg.c (unchecked_make_edge): Call execute_on_growing_pred after making an edge. (remove_edge): Call execute_on_shrinking_pred before removing an edge. (redirect_edge_succ): Call execute_on_growing_pred and execute_on_shrinking_pred. * cfghooks.c (execute_on_growing_pred): New. (execute_on_shrinking_pred): Likewise. * cfghooks.h (cfg_hooks): Add execute_on_growing_pred and execute_on_shrinking_pred. Add prototypes for execute_on_growing_pred and execute_on_shrinking_pred. * cfgrtl.c (rtl_cfg_hooks): Add NULL hooks to execute_on_growing_pred and execute_on_shrinking_pred. (cfg_layout_rtl_cfg_hook): Likewise. * tree-cfg.c (tree_cfg_hooks): Likewise. From-SVN: r91035
2004-11-22cfg.c (cached_make_edge): Use find_edge rather than an inlined variant.Jeff Law1-21/+12
* cfg.c (cached_make_edge): Use find_edge rather than an inlined variant. * cfgbuild.c (make_edges): Likewise. * cfghooks.c (can_duplicate_block_p): Likewise. * cfgloop.c (loop_latch_edge): Likewise. * cfgloopmanip.c (force_single_succ_latches): Likewise. * cfgrtl.c (rtl_flow_call_edges_add): Likewise. * predict.c (predict_loops, propagate_freq): Likewise. * tracer.c (tail_duplicate): Likewise. * tree-cfg.c (disband_implicit_edges): Likewise. (tree_forwarder_block_p, tree_flow_call_edges_add): Likewise. From-SVN: r91019
2004-11-19tree-cfg.c (reinstall_phi_args): New.Kazu Hirata1-17/+26
* tree-cfg.c (reinstall_phi_args): New. (tree_split_edge): Use it after redirecting an edge. Don't modify PHI_ARG_EDGE. From-SVN: r90940
2004-11-17tree-cfg.c (edge_to_cases): Renamed from edge_to_case_leader.Jeff Law1-100/+158
* tree-cfg.c (edge_to_cases): Renamed from edge_to_case_leader. (edge_to_cases_elt): Renamed from edge_to_case_leader. (edge_to_cases_hash): Renamed from edge_to_case_leader_hash. (edge_to_cases_eq): Renamed from edge_to_case_leader_eq. (edge_to_cases_cleanup, recording_case_labels_p): New functions. (get_cases_for_edge): New function. (start_recording_case_labels, end_recording_case_labels): Similarly. (record_switch_edge): Don't muck with the CASE_LABEL. Instead chain equivalent CASE_LABEL_EXPRs together. (get_case_leader_for_edge, get_case_leader_for_edge_hash): Kill. (make_switch_expr_edges): Do not record edge/cases here. (cleanup_tree_cfg): Record cases around the call to thread_jumps. (split_critical_edges): Record cases around the edge splitting code. (cleanup_dead_labels): Use CASE_LABEL again. (tree_redirect_edge_and_branch): If we have a mapping from edge to cases, use it to handle redirections. Else do it the slow way. * tree.h (CASE_LEADER_OR_LABEL): Kill. (CASE_LABEL): Revert to just looking at the tree's second operand. * tree.c (get_case_label): Kill. From-SVN: r90817
2004-11-16tree-cfg.c (bsi_commit_edge_inserts): Remove an argument.Kazu Hirata1-12/+3
* tree-cfg.c (bsi_commit_edge_inserts): Remove an argument. (tree_flow_call_edges_add): Update the call to bsi_commit_edge_inserts. * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Likewise. * profile.c (branch_prob): Likewise. * tree-mudflap.c (mf_decl_cache_locals): Likewise. * tree-sra.c (scalarize_function): Likewise. * tree-ssa-loop-im.c (loop_commit_inserts): Likewise. * tree-ssa-pre.c (fini_pre): Likewise. * tree-flow.h: Update the prototype for bsi_commit_edge_inserts. From-SVN: r90704
2004-11-16tree-cfg.c (verify_expr): Replace TREE_OPERAND with COND_EXPR_COND.Kazu Hirata1-1/+1
* tree-cfg.c (verify_expr): Replace TREE_OPERAND with COND_EXPR_COND. * tree-if-conv.c (tree_if_convert_cond_expr): Likewise. * tree-ssa-dom.c (thread_across_edge): Likewise. * tree-vectorizer.c (vect_transform_loop_bound): Replace TREE_OPERAND with COND_EXPR_COND, COND_EXPR_THEN, or COND_EXPR_ELSE. From-SVN: r90703
2004-11-14tree-cfg.c, [...]: Replace TREE_CHAIN with PHI_CHAIN where appropriate.Kazu Hirata1-2/+2
* tree-cfg.c, tree-if-conv.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-manip.c, tree-vectorizer.c: Replace TREE_CHAIN with PHI_CHAIN where appropriate. From-SVN: r90611
2004-11-13bitmap.c, [...]: Fix comment formatting.Kazu Hirata1-3/+3
* bitmap.c, bitmap.h, expmed.c, tree-cfg.c: Fix comment formatting. From-SVN: r90595
2004-11-12tree-cfg.c (hashtab.h): Include.Jeff Law1-11/+182
* tree-cfg.c (hashtab.h): Include. (struct edge_to_case_leader_elt): New structure. (edge_to_case_leader): New. (edge_to_case_leader_hash): New hashtable hasing function. (edge_to_case_leader_eq): New hashtable equality function. (record_switch_edge): New function. (get_case_leader_for_edge, get_case_leader_for_edge): New functions. (make_switch_expr_edges): Build the edge-to-case-leader hash table. Tear down the hash table when we're done. (cleanup_dead_labels): Use CASE_LEADER_OR_LABEL instead of CASE_LABEL. (tree_node_can_be_shared): Allow sharing of CASE_LABEL_EXPR nodes. (tree_redirect_edge_and_branch, case SWITCH_EXPR): Update to use new concept of case leaders to reduce overhead of redirecting outgoing edges from switch statements. * tree.c (get_case_label): New function. * tree.h (CASE_LABEL): Define in terms of get_case_label. (CASE_LEADER_OR_LABEL): Define. From-SVN: r90570
2004-11-09* tree-cfg.c (create_bb): Remove unnecessary memset.Kazu Hirata1-2/+3
From-SVN: r90360
2004-11-09tree-phinodes.c (phi_reverse): New.Kazu Hirata1-10/+3
* tree-phinodes.c (phi_reverse): New. * tree-cfg.c (tree_make_forwarder_block, tree_duplicate_bb): Use it. * tree-flow.h: Add a prototype for phi_reverse. From-SVN: r90344
2004-11-08tree-cfg.c (thread_jumps): Speed up by keeping a pointer to the last used ↵Kazu Hirata1-8/+5
element in the worklist. * tree-cfg.c (thread_jumps): Speed up by keeping a pointer to the last used element in the worklist. From-SVN: r90314
2004-11-08tree-cfg.c, [...]: Replace TREE_CHAIN with PHI_CHAIN where appropriate.Kazu Hirata1-3/+3
* tree-cfg.c, tree-if-conv.c, tree-into-ssa.c, tree-scalar-evolution.c, tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-manip.c, tree-ssa.c, tree-vectorizer.c: Replace TREE_CHAIN with PHI_CHAIN where appropriate. From-SVN: r90262
2004-11-06tree-cfg.c (find_taken_edge_cond_expr): Remove an "if" statement that never ↵Kazu Hirata1-5/+0
triggers. * tree-cfg.c (find_taken_edge_cond_expr): Remove an "if" statement that never triggers. From-SVN: r90176
2004-11-04tree-cfg.c (find_taken_edge): Reject VAL begin NULL.Kazu Hirata1-2/+3
* tree-cfg.c (find_taken_edge): Reject VAL begin NULL. * tree-ssa-ccp.c (visit_cond_stmt): Don't call find_taken_edge with VAL being NULL. From-SVN: r90083
2004-11-04bitmap.c (bitmap_print): Make bitno unsigned.Nathan Sidwell1-1/+1
* bitmap.c (bitmap_print): Make bitno unsigned. * bt-load.c (clear_btr_from_live_range, btr_def_live_range): Likewise. * caller-save.c (save_call_clobbered_regs): Likewise. * cfganal.c (compute_dominance_frontiers_1): Likewise. * cfgcleanup.c (thread_jump): Likewise. * cfgrtl.c (safe_insert_insn_on_edge): Likewise. * conflict.c (conflict_graph_compute): Likewise. * ddg.c (add_deps_for_use): Likewise. * df.c (df_refs_update): Likewise. * except.c (remove_eh_handler): Likewise. * flow.c (verify_local_live_at_start, update_life_info, initialize_uninitialized_subregs, propagate_one_insn, free_propagate_block_info, propagate_block, find_use_as_address, reg_set_to_hard_reg_set): Likewise. * gcse.c (clear_modify_mem_tables): Likewise. * global.c (global_conflicts, build_insn_chain): Likewise. * ifcvt.c (dead_or_predicable): Likewise. * local-alloc.c (update_equiv_regs): Likewise. * loop.c (load_mems): Likewise. * ra-build.c (livethrough_conflicts_bb, conflicts_between_webs): Likewise. * ra-rewrite.c (reloads_to_loads, rewrite_program2, actual_spill): Likewise. * reload1.c (order_regs_for_reload, finish_spills): Likewise. * sched-deps.c (sched_analyze_insn, free_deps): Likewise. * sched-rgn.c (propagate_deps * tree-cfg.c (tree_purge_all_dead_eh_edges): Likewise. * tree-dfa.c (dump_dfa_stats tree-into-ssa.c (compute_global_livein, insert_phi_nodes, insert_phi_nodes_for, debug_def_blocks_r, invalidate_name_tags): Likewise. * tree-outof-ssa.c (coalesce_ssa_name, coalesce_vars, free_temp_expr_table, find_replaceable_exprs): Likewise. * tree-sra.c (scan_function, scalarize_parms): Likewise. * tree-ssa-alias.c (init_alias_info, compute_points_to_and_addr_escape, compute_flow_sensitive_aliasing, maybe_create_global_var): Likewise. * tree-ssa-dce.c (mark_control_dependent_edges_necessary): Likewise. * tree-ssa-live.c (new_tree_live_info, live_worklist, calculate_live_on_entry, calculate_live_on_exit, compare_pairs, sort_coalesce_list, build_tree_conflict_graph, dump_live_info tree-ssa-loop-manip.c (add_exit_phis_var): Likewise. tree-ssa-operands.c (get_asm_expr_operands, add_call_clobber_ops, add_call_read_ops): Likewise. * tree-ssa-pre.c (bitmap_print_value_set, insert_aux): Likewise. * tree-ssa-live.h (num_var_partitions): Return unsigned. From-SVN: r90053
2004-11-03tree-cfg.c (find_taken_edge): Abort if we are given a statement that is ↵Kazu Hirata1-4/+4
neither COND_EXPR nor SWITCH_EXPR. * tree-cfg.c (find_taken_edge): Abort if we are given a statement that is neither COND_EXPR nor SWITCH_EXPR. From-SVN: r90015
2004-11-02re PR tree-optimization/16447 (out of ssa generates bloated code)Andrew MacLeod1-7/+9
2004-11-01 Andrew MacLeod <amacleod@redhat.com> PR tree-optimization/16447 * tree-cfg.c (bsi_commit_one_edge_insert): Rename from bsi_commit_edge_inserts_1, and make funtion external. Return new block. (bsi_commit_edge_inserts): Use renamed bsi_commit_one_edge_insert. * tree-optimize.c (pass_cleanup_cfg_post_optimizing): Enable listing. * tree-flow.h (bsi_commit_one_edge_insert): Extern decl. * tree-outof-ssa.c (rewrite_trees): Don't commit edges here. (same_stmt_list_p): New. Return TRUE if edge is to be forwarded. (identical_copies_p): New. Return true is two copies are the same. (identical_stmt_lists_p): New. Return true if stmt lists are the same. (analyze_edges_for_bb): New. Determine how best to insert edge stmts for a basic block. (perform_edge_inserts): New. Determine what to do with all stmts that have been inserted on edges. (remove_ssa_form): Analyze and commit edges from here. From-SVN: r89970
2004-11-01* tree-cfg.c (thread_jumps): Fix a comment typo.Kazu Hirata1-1/+1
From-SVN: r89943
2004-11-01* tree-cfg.c (thread_jumps): Fix a comment typo.Kazu Hirata1-1/+1
From-SVN: r89941
2004-10-28lambda-code.c (nestify_update_pending_stmts): Remove.Kazu Hirata1-12/+3
* lambda-code.c (nestify_update_pending_stmts): Remove. (perfect_nestify): Use flush_pending_stmts instead of nestify_update_pending_stmts. * tree-cfg.c (tree_make_forwarder_block): Use flush_pending_stmts. * tree-flow.h: Add a prototype for flush_pending_stmts. * tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge): Use flush_pending_stmts. (lv_update_pending_stmts): Remove. (tree_ssa_loop_version): Use flush_pending_stmts instead of lv_update_pending_stmts. * tree-ssa.c (flush_pending_stmts): New. From-SVN: r89757
2004-10-27re PR tree-optimization/17529 (ICE in get_indirect_ref_operands)Andrew Pinski1-1/+1
2004-10-27 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/17529 * tree-cfg.c (remove_useless_stmts_1) <case SWITCH_EXPR>: Don't fold statement. <case ASM_EXPR>: Fold the statement. 2004-10-27 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/17529 * gcc.c-torture/compile/pr17529.c: Remove the xfail. From-SVN: r89730
2004-10-27tree-cfg.c (thread_jumps): Speed up by reordering the two conditions for ↵Kazu Hirata1-10/+10
entering basic blocks into worklist. * tree-cfg.c (thread_jumps): Speed up by reordering the two conditions for entering basic blocks into worklist. From-SVN: r89700
2004-10-27tree-cfg.c (thread_jumps): Speed up by pretending to have ENTRY_BLOCK_PTR in ↵Kazu Hirata1-4/+6
worklist. * tree-cfg.c (thread_jumps): Speed up by pretending to have ENTRY_BLOCK_PTR in worklist. From-SVN: r89699
2004-10-27re PR tree-optimization/17133 (wrong code with -ftree-lim)Daniel Berlin1-2/+6
2004-10-27 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/17133 * tree-cfg.c (rewrite_to_new_ssa_names_bb): Also rewrite must def kill operand. * tree-flow-inline.h: V_MUST_DEF_OP became V_MUST_DEF_RESULT. (get_v_must_def_result_ptr): Modify for new structure of v_must_defs array. (get_v_must_def_kill_ptr): New. (op_iter_next_use): Add support for the kill that occurs in V_MUST_DEFs. (op_iter_next_tree): Ditto. Also V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_next_def): V_MAY_DEF_OP became V_MAY_DEF_RESULT. (op_iter_init): Initialize new mustu members. (op_iter_next_mustdef): New function. (op_iter_init_mustdef): Ditto. * tree-flow.h (rewrite_def_def_chains): New function. * tree-into-ssa.c (mark_def_sites): Handle mustdefkill operands. (ssa_mark_def_sites): Ditto. (rewrite_stmt): Ditto. (ssa_rewrite_stmt): Ditto. (rewrite_blocks): Factor out from rewrite_into_ssa. (mark_def_block_sites): Ditto. (rewrite_def_def_chains): New function, just rewrites def-def chains without phi node insertion. * tree-pass.h (TODO_fix_def_def_chains): New todo flag. * tree-optimize.c (execute_todo): Handle TODO_fix_def_def_chains. * tree-pretty-print.c (dump_vops): Print out MUST_DEF's so that they include the rhs now. * tree-ssa-ccp.c (visit_assignment): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-dce.c (mark_operand_necessary): Add phionly argument. Update callers. (mark_really_necessary_kill_operand_phis): New function. (perform_tree_ssa_dce): Call it. (pass_dce): Add TODO_fix_def_def_chains. (pass_cd_dce): Ditto. * tree-ssa-loop-im.c (determine_max_movement): Look at kills as well. (rewrite_mem_refs): Ditto. * tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Look at kills as well. * tree-ssa-operands.c (allocate_v_may_def_optype): v_may_def_operand_type_t became v_def_use_operand_type_t. (allocate_v_must_def_optype) Ditto. (finalize_ssa_v_must_defs): Update for new operand type, as well as setting the use portion as well. (copy_virtual_operands): Copy the kill operand as well. (create_ssa_artficial_load_stmt): V_MUST_DEF_OP became V_MUST_DEF_RESULT. * tree-ssa-operands.h (v_may_def_operand_type): Renamed to v_def_use_operand_type. (v_must_def_optype_d): Use v_def_use_operand_type. (V_MUST_DEF_OP_*): Renamed to V_MUST_DEF_RESULT_* (V_MUST_DEF_KILL_*): New macros. (struct ssa_operand_iterator_d): Add num_v_mustu and v_mustu_i members. Rename existing must_i and num_v_must members to mustd_i and num_v_mustd. (SSA_OP_VMUSTDEFKILL): New flag. (SSA_OP_VIRTUAL_KILLS): New flag. (SSA_OP_ALL_OPERANDS): Add in SSA_OP_ALL_KILLS. (SSA_OP_ALL_KILLS): New flag. (FOR_EACH_SSA_MUSTDEF_OPERAND): New macro. * tree-ssa.c (verify_ssa): Verify virtual kills as well. * tree-vectorizer.c (vect_create_data_ref_ptr): V_MUST_DEF_OP became V_MUST_DEF_RESULT. (rename_variables_in_bb): Rename kill pointer as well. * tree-dfa.c (compute_immediate_uses_for_stmt): Add kills into the immediate uses. From-SVN: r89695
2004-10-23re PR middle-end/17967 (Expand is considered slower? (remove_useless_stmts ↵Andrew Pinski1-1/+0
is considered part of expand)) 2004-10-23 Andrew Pinski <pinskia@physics.uc.edu> PR middle-end/17967 * tree-cfg.c (remove_usless_stmts_cond): Don't Fold statement. From-SVN: r89492
2004-10-22tree-cfg.c (thread_jumps_from_bb): Speed up by extracting edge information ↵Kazu Hirata1-3/+2
when... * tree-cfg.c (thread_jumps_from_bb): Speed up by extracting edge information when we commit ourselves to threading a particular jump. From-SVN: r89462
2004-10-22tree-cfg.c (thread_jumps): Speed up by putting basic blocks into worklist ↵Kazu Hirata1-16/+9
instead of their indexes. * tree-cfg.c (thread_jumps): Speed up by putting basic blocks into worklist instead of their indexes. From-SVN: r89461