Commit Graph

374 Commits

Author SHA1 Message Date
Richard Henderson
abb9a4c570 flow.c (merge_blocks_nomove): Remove a barrier not following a jump as well.
* flow.c (merge_blocks_nomove): Remove a barrier not following
        a jump as well.

From-SVN: r34315
2000-05-31 16:57:00 -07:00
Richard Henderson
eb7e5da2fc flow.c (propagate_block): Move initialization of mem_set_list ...
* flow.c (propagate_block): Move initialization of mem_set_list ...
        (init_propagate_block_info): ... here.  Also track blocks with
        no successors; don't scan insns if ! PROP_SCAN_DEAD_CODE.

From-SVN: r34310
2000-05-31 15:29:38 -07:00
Richard Kenner
8c41041620 flow.c (propagate_block): If block has no successors, stores to frame are dead if not used.
* flow.c (propagate_block): If block has no successors, stores to
	frame are dead if not used.

From-SVN: r34296
2000-05-31 07:58:35 -04:00
Richard Earnshaw
6a3dbe6543 flow.c (mark_used_reg): If a register is unconditionally live, remove any conditional death information.
* flow.c (mark_used_reg): If a register is unconditionally live,
remove any conditional death information.

From-SVN: r34259
2000-05-29 22:37:37 +00:00
Richard Earnshaw
1bc48f824a flow.c (find_label_refs): New function.
* flow.c (find_label_refs): New function.
(find_basic_blocks_1): Call it for each alternative of a call
placeholder.

From-SVN: r34193
2000-05-26 10:30:47 +00:00
Richard Henderson
f008a564f9 bb-reorder.c (reorder_block_def): Reorder elements for size.
* bb-reorder.c (reorder_block_def): Reorder elements for size.
        Remove add_jump; add next; replace flags with visited.
        (rbd_init): Remove.
        (REORDER_BLOCK_HEAD, REORDER_BLOCK_VISITED): Remove.
        (REORDER_BLOCK_FLAGS, REORDER_BLOCK_INDEX): Remove.
        (REORDER_BLOCK_ADD_JUMP, REORDER_BLOCK_EFF_HEAD): Remove.
        (REORDER_BLOCK_EFF_END, REORDER_BLOCK_SCOPE): Remove.
        (RBI): New.
        (reorder_index, reorder_last_visited): Remove.
        (skip_insns_after_block): Rewrite to use a switch.
        (get_common_dest): Remove.
        (chain_reorder_blocks): Remove.
        (record_effective_endpoints): Split out from reorder_basic_blocks.
        (make_reorder_chain): Likewise.  Loop until all blocks are placed.
        (make_reorder_chain_1): Renamed from old make_reorder_chain.
        Only construct the reorder chain, do not move insns.  Try harder
        to tail recurse.
        (label_for_bb, emit_jump_to_block_after): New.
        (fixup_reorder_chain): Use them.  Do bulk block movement.  Examine
        and adjust the jump insns appropriately.  Fixup basic_block_info.
        (verify_insn_chain): Always define.
        (relate_bbs_with_scopes): Call xmalloc, not xcalloc.  Fix thinko
        in allocation size.
        (make_new_scope): Don't write zeros to calloc'd space.
        (build_scope_forest): Rely on xrealloc to DTRT.
        (reorder_basic_blocks): Don't build loop nest.  Don't fail if
        profile_arc_flag.  Streamline EH test.

	* flow.c (redirect_edge_succ, redirect_edge_pred): New.
	* basic-block.h: Declare them.

From-SVN: r34186
2000-05-25 20:34:33 -07:00
Richard Henderson
a0ee3b8335 * flow.c (mark_set_1): Don't record conditionally dead memory.
From-SVN: r34176
2000-05-25 16:19:35 -07:00
Jan Hubicka
7f1c097d36 combine.c (try_combine): Use any_condjump_p...
* combine.c (try_combine): Use any_condjump_p, any_uncondjump_p
        and pc_set at the place of simplejump_p and condjump_p.
        * cse.c (record_jump_equiv): Likewise.
        * emit-rtl.c (emit): Likewise.
        * explow.c (find_next_ref): Likewise.
        * flow.c (tidy_fallthru_edge): Likewise.
        (init_propagate_block_info): Likewise.
        * gcse.c (delete_null_pointer_checks): Likewise.
        * ifcvt.c (cond_exec_get_condition, noce_get_condition,
        dead_or_predicable): Likewise.
        * integrate.c (copy_insn_list): Likewise.
        * loop.c (scan_loop, verify_dominator, find_and_verify_loops,
        for_each_insn_in_loop, check_dbra_loop, get_condition,
        insert_bct, load_mems): Likewise.
        * resource.c (find_dead_or_set_registers): Likewise.
        * sibcalls.c (simplejump_p): Likewise.
        * unroll.c (copy_loop_body, reg_dead_after_loop): Likewise.

From-SVN: r34175
2000-05-25 14:38:49 -07:00
Richard Kenner
efc9bd412d cse.c (cse_basic_block): Only call find_reg_note if REG_NOTES not 0.
* cse.c (cse_basic_block): Only call find_reg_note if REG_NOTES not 0.
	* reload.c (find_equiv_reg): Likewise.
	* alias.c (init_alias_analysis): Likewise.
	Only call prologue_epilogue_contains on insns.
	* basic-block.h (REG_SET_TO_HARD_REG_SET): Call new function.
	* bb-reorder.c (hard-reg-set.h): Include earlier.
	* haifa-sched.c (hard-reg-set.h): Likewise.
	* ifcvt.c (hard-reg-set.h): Likewise.
	* local-alloc.c (hard-reg-set.h): Likewise.
	* loop.c (hard-reg-set.h): Likewise.
	* predict.c (hard-reg-set.h): Likewise.
	* regrename.c (hard-reg-set.h): Likewise.
	* flow.c (hard-reg-set.h): Likewise.
	(reg_set_to_hard_reg_set): New function.
	* bitmap.c (regs.h, basic-block.h): No longer include.
	(bitmap.h): Now include.
	* conflict.c (hard-reg-set.h): Include.
	* profile.c (hard-reg-set.h): Likewise.
	* print-rtl.c (hard-reg-set.h): Likewise.
	* sbitmap.c (hard-reg-set.h): Likewise.
	* toplev.c (hard-reg-set.h): Likewise.
	* unroll.c (hard-reg-set.h, basic-block.h): Likewise.
	* hard-reg-set.h (reg_names): Now constant.
	* regs.h (reg_names): Likewise.
	* regclass.c (reg_names): Likewise.
	* loop.h (basic-block.h): No longer include.
	(bitmap.h): Now include.
	* reload1.c (order_regs_for_reload): Avoid loop over reg sets.
	* Makefile.in (LOOP_H, sbitmap.o, profile.o): Reflect above changes.
	(toplev.o, print-rtl.o, conflict.o, unroll.o, bitmap.o): Likewise.

From-SVN: r34039
2000-05-19 18:27:28 -04:00
Jan Hubicka
51891abe62 basic-block.h (struct edge_def): New field "count".
* basic-block.h (struct edge_def): New field "count".
	(struct basic_block_def): Likewise.
	* flow.c (entry_exit_blocks): Add count fileds.
	(split_edge): Keep count information up-to-date.
        (dump_edge_info, dump_flow_info): Dump count fields.

	* final.c (count_instrumented_edges): Rename to edge from arc.
	(end_final): Update users.
	* profile.c: Include expr.h, basic-block.h.
	(struct adj_list, ARC_TARGET, ARC_SOURCE, ARC_COUNT): Kill.
        (struct bb_info, label_to_bb, label_to_bb_size, bb_graph): Kill.
        (ignore_next_note, return_label_execution_count): Kill.
	(bbg_file_name, da_file_name): Kill.
        (edge_info, bb_info): New structures.
        (EDGE_INFO, BB_INFO, GCOV_INDEX_TO_BB, BB_TO_GCOV_INDEX): New macros.
	(count_instrumented_edges, total_num_edges): Rename to edge from arc.
	(total_num_edges_instrumented): Likewise.
	(init_arc, expand_spanning_tree): Kill.
	(fill_spanning_tree, tablejump_entry_p): Kill.
	(instrument_edges):  Rewrite from instrument_arcs to use
	commit_edge_insertions infrastructure.
	(compute_branch_probabilities): Remove arguments; rewrite for
	CFG infrastructure; use rtl_dump_file directly.
	(branch_prob, find_spanning_tree): Likewise.
	(union_groups, find_group): New.
	(init_branch_prob): Make bbg_file_name and da_file_name local.
	(end_branch_prob): Use rtl_dump_file directly.
	(init_edge_profiler): Rename to edge from arc.
	(output_arc_profiler): Kill.
	(gen_edge_profiler): New.
	(output_func_start_profiler): Turn off profiling.  Make the
	constructor static when we can.
	* rtl.h (branch_prob, end_branch_prob): Update prototypes.

	* toplev.c (DFI_flow): Remove.
	(DFI_cfg, DFI_life): New.
	(dump_file): Update accordingly.
	(compile_file): Call end_branch_prob if profile_arc_flag too.
	(rest_of_compilation): Move flow1 cfg creation to DFI_cfg.  Do edge
	profiling after the CFG is built.  Move flow1 life analysis to
	DFI_life.  Always estimate remaining probabilities.

Co-Authored-By: Richard Henderson <rth@cygnus.com>

From-SVN: r34037
2000-05-19 13:51:49 -07:00
Richard Henderson
228c4d97ec * flow.c (make_edges): The sibling call edge to exit is abnormal.
From-SVN: r34035
2000-05-19 12:58:42 -07:00
Richard Henderson
9ba11d5ad2 jump.c (redirect_jump): Add delete_unused argument.
* jump.c (redirect_jump): Add delete_unused argument.  Don't
        remove labels and code following when LABEL_NUSES goes to zero.
        (invert_jump): Likewise.
        (jump_optimize_1): Fix redirect/invert arguments.
        (do_cross_jump, thread_jumps): Likewise.
        * flow.c (split_edge): Likewise.
        * reorg.c (optimize_skip): Likewise.
        (reorg_redirect_jump, relax_delay_slots, dbr_schedule): Likewise.
        * profile.c (instrument_arcs): Likewise.
        * loop.c (find_and_verify_loops): Likewise.  Fix indentation.
        * rtl.h: Update prototypes.

From-SVN: r34033
2000-05-19 12:53:17 -07:00
Richard Henderson
f5540cd4aa flow.c (commit_one_edge_insertion): Be prepared for a return insn to be inserted on the edge with a normal jump.
* flow.c (commit_one_edge_insertion): Be prepared for a return
        insn to be inserted on the edge with a normal jump.
        * jump.c (jump_optimize_1): Don't look to create return isns.

        * flow.c (flow_delete_insn): Don't adjust reference count of notes.
        * jump.c (jump_optimize_1): Likewise.
        (returnjump_p): Verify the argument is a JUMP_INSN.
        * rtl.def (NOTE): Add 5th element for NOTE_INSN_DELETED_LABEL.

From-SVN: r33950
2000-05-16 18:44:03 -07:00
Richard Henderson
be1bb65263 Makefile.in (final.o): Depend on BASIC_BLOCK_H.
* Makefile.in (final.o): Depend on BASIC_BLOCK_H.
	* final.c (final_end_function): Use app_disable.  Rearrange note
	handling into a switch.  Emit deleted labels.
	(output_asm_label): Generate label strings for deleted labels.
	* flow.c (tail_recursion_label_list): New.
	(find_basic_blocks_1): Set label_value_list directly.  Collect list
	of tail recursion labels from call_placeholders.  Don't add deleted
	labels to the label value list.
	(cleanup_cfg): Use free_EXPR_LIST_list.
	(flow_delete_insn_chain): Turn non-removable labels into notes.
	(flow_delete_block): Don't disable deleting the block because of
	a non-removable label.
	(tail_recursion_label_p): New.
	(merge_blocks_move_predecessor_nojumps): Don't disable the merge
	because of a label.
	(merge_blocks_move_successor_nojumps): Likewise.  Also move a
	jump table.
	(merge_blocks): Disable a merge because of tail recursion labels.
	* ifcvt.c (merge_if_block): Don't disable a merge because of a label.
	Use a more accurate measure of not merging the join block.
	(find_if_block): Don't disable conversion because of a label.
	(find_if_case_1, find_if_case_2): Likewise.
	* jump.c (duplicate_loop_exit_test): Preserve the kind of list
	element when copying.
	(squeeze_notes): Also leave EH notes.
	(mark_jump_label): Ignore deleted labels.  Use an INSN_LIST for
	REG_LABEL notes.
	(delete_insn): Preserve LABEL_NAME in NOTE_SOURCE_FILE when
	deleting a label.
	* print-rtl.c (print_rtx): Print NOTE_SOURCE_FILE for
	NOTE_INSN_DELETED_LABEL.  Print `[# deleted]' for a label_ref
	referring to a deleted label.  Convert tail handling to a switch.
	* rtl.def (CODE_LABEL): Rearrange elements to be compatible with NOTE
	for NOTE_INSN_DELETED_LABEL.
	(NOTE): Fix commentary.
	* rtl.h (REG_LABEL): Update commentary wrt INSN_LIST.
	(REG_CC_SETTER, REG_CC_USER, REG_LIBCALL): Likewise.
	(CODE_LABEL_NUMBER, LABEL_NAME): Update index.
	(LABEL_NUSES, LABEL_REFS): Likewise.
	* unroll.c (copy_loop_body): Don't copy NOTE_INSN_DELETED_LABEL.

From-SVN: r33876
2000-05-12 09:26:15 -07:00
Nick Clifton
ebfe71a8d1 Do not bias REG_N_REFS by loop_depth when optimising for size.
From-SVN: r33833
2000-05-10 22:29:27 +00:00
Richard Henderson
0d12ea9719 flow.c (find_basic_blocks_1): Remove any spare bb_note after completion.
* flow.c (find_basic_blocks_1): Remove any spare bb_note
        after completion.

From-SVN: r33826
2000-05-10 10:42:17 -07:00
Richard Henderson
47095bfc99 flow.c (find_basic_blocks_1): Do not delete the first bb_note we run across.
* flow.c (find_basic_blocks_1): Do not delete the first
        bb_note we run across.
        (create_basic_block): Use reorder_insns to move an existing
        bb_note to the correct place.

From-SVN: r33814
2000-05-09 22:48:40 -07:00
Denis Chertykov
aa9e158d7a flow.c (flow_delete_insn): Use INSN_DELETED_P for marking insn as deleted.
* flow.c (flow_delete_insn): Use INSN_DELETED_P for marking insn
	as deleted.

From-SVN: r33803
2000-05-09 22:41:25 +04:00
Richard Henderson
4fb9b83058 flow.c (init_propagate_block_info): Watch out for conditional branch to next instruction, and thus one outgoing edge.
* flow.c (init_propagate_block_info): Watch out for conditional
        branch to next instruction, and thus one outgoing edge.

From-SVN: r33775
2000-05-08 15:04:39 -07:00
Richard Henderson
f0acaf02b5 flow.c (mark_set_1): Don't update conditional life info if the register is not_dead.
* flow.c (mark_set_1): Don't update conditional life info
        if the register is not_dead.

From-SVN: r33749
2000-05-06 17:38:26 -07:00
Richard Kenner
a4c44acfdc Add imssing blank line
From-SVN: r33744
2000-05-06 18:59:08 -04:00
Richard Henderson
507741dd59 * flow.c (mark_set_1): Respect not_dead when updating reg_live.
From-SVN: r33736
2000-05-06 14:36:35 -07:00
Richard Henderson
6482ee510f flow.c (split_edge): Don't allocate global_live_at_start for the new block unless...
* flow.c (split_edge): Don't allocate global_live_at_start for
        the new block unless the old blocks had them as well.

From-SVN: r33735
2000-05-06 14:35:35 -07:00
Richard Henderson
ad3958e7db flow.c (init_propagate_block_info): Fix merge error in HAVE_conditional_execution code.
* flow.c (init_propagate_block_info): Fix merge error
        in HAVE_conditional_execution code.

From-SVN: r33705
2000-05-05 03:53:47 -07:00
Richard Henderson
8d6fe133c4 flow.c (propagate_one_insn): Also don't PROP_REG_INFO for call-clobbered registers of a call.
* flow.c (propagate_one_insn): Also don't PROP_REG_INFO for
        call-clobbered registers of a call.

From-SVN: r33634
2000-05-03 10:59:25 -07:00
Jason Eckhardt
18ca529b19 flow.c (verify_flow_info): Added two more sanity checks.
Tue May  2 00:20:30 2000  Jason Eckhardt  <jle@cygnus.com>

        * flow.c (verify_flow_info): Added two more sanity checks. The
        first checks that the blocks are numbered consecutively. The second
        checks that n_basic_blocks is actually equal to the number of
        basic blocks in the insn chain.

From-SVN: r33632
2000-05-03 16:39:55 +00:00
Richard Henderson
1868a0d4da flow.c (calculate_global_regs_live): Skip for_each_successor_phi if not in SSA form.
* flow.c (calculate_global_regs_live): Skip for_each_successor_phi
        if not in SSA form.

From-SVN: r33597
2000-05-01 17:02:24 -07:00
Richard Henderson
5e9e738cd2 * flow.c (propagate_one_insn): Mark sets even when the insn is dead.
From-SVN: r33564
2000-05-01 00:21:29 -07:00
Richard Henderson
11ae508b7a flow.c (struct reg_cond_life_info): New.
* flow.c (struct reg_cond_life_info): New.
        (struct propagate_block_info): Add reg_cond_dead and reg_cond_reg.
        (init_propagate_block_info): Initialize them.
        (free_propagate_block_info): Destruct them.
        (mark_set_1): Consider conditional life before killing a register.
        (mark_regno_cond_dead): New.
        (free_reg_cond_life_info): New.
        (flush_reg_cond_reg_1, flush_reg_cond_reg): New.
        (ior_reg_cond, not_reg_cond, nand_reg_cond): New.
        (mark_used_reg): Record conditional life.

        * haifa-sched.c (schedule_insns): Disable death counting
        sanity check for HAVE_conditional_execution.

From-SVN: r33544
2000-04-30 03:37:57 -07:00
Jan Hubicka
1b513b7711 * function.c (epilogue_done): Pass whole insn to record_insns.
From-SVN: r33488
2000-04-27 15:34:16 +00:00
Richard Henderson
9785c68dd5 flow.c (struct propagate_block_info): Remove new_dead, new_live; add new_set.
* flow.c (struct propagate_block_info): Remove new_dead, new_live;
        add new_set.
        (propagate_one_insn): Clear it.  Don't update reg_live here.
        (init_propagate_block_info): Update for pbi member changes.
        (free_propagate_block_info): Likewise.
        (mark_set_1): Know that zero_extract, sign_extract, and
        strict_low_part don't kill their argument.  Alter hard subregs.
        Update new_set for non-CLOBBER sets.  Update reg_live.
        (find_auto_inc): Update reg_live, not new_dead.
        (mark_used_reg): Update reg_live, not new_live.  Examine new_set
        to determine if the reg in question was set this insn.  Only update
        reg info with PROP_REG_INFO.

From-SVN: r33478
2000-04-27 04:17:04 -07:00
Richard Henderson
83a67d12b2 flow.c (calculate_global_regs_live): Force stack pointer live at end.
* flow.c (calculate_global_regs_live): Force stack pointer
        live at end.

From-SVN: r33476
2000-04-27 00:39:51 -07:00
Richard Henderson
a9f531a60b flow.c (allocate_reg_life_data): Set max_regno here ...
* flow.c (allocate_reg_life_data): Set max_regno here ...
        (life_analysis): ... not here.

From-SVN: r33475
2000-04-27 00:38:40 -07:00
Richard Henderson
f134997fac flow.c (count_reg_sets_1): Remove.
* flow.c (count_reg_sets_1): Remove.
        (count_reg_sets, count_reg_references): Remove.
        (recompute_reg_usage): Implement with update_life_info.
        Reallocate life data.

From-SVN: r33470
2000-04-27 00:07:34 -07:00
Richard Henderson
693d9e2fe7 flow.c (update_life_info): Consider blocks null to mean the universal set.
* flow.c (update_life_info): Consider blocks null to mean the
        universal set.
        (calculate_global_regs_live): Likewise.
        (life_analysis): Do that instead of collecting all_blocks.

From-SVN: r33469
2000-04-27 00:01:04 -07:00
Richard Henderson
56aba4a8b5 flow.c (tidy_fallthru_edge): Don't delete the jump when it's a still-valid conditional jump.
* flow.c (tidy_fallthru_edge): Don't delete the jump when it's
        a still-valid conditional jump.

From-SVN: r33468
2000-04-26 23:47:16 -07:00
Richard Henderson
604617ba2a jump.c (invert_jump): Always invert REG_BR_PROB.
* jump.c (invert_jump): Always invert REG_BR_PROB.  Do it correctly.

        * bb-reorder.c (reorder_basic_blocks): Don't run estimate_probability.
        * flow.c (calculate_loop_depth): Remove.
        * output.h (calculate_loop_depth): Don't declare.
        * toplev.c (rest_of_compilation): Expand calculate_loop_depth
        inline; run estimate_probability at the same time.

From-SVN: r33464
2000-04-26 22:58:05 -07:00
Richard Henderson
b4593d17c0 flow.c (mark_set_1): New arguments code and flags; update all callers.
* flow.c (mark_set_1): New arguments code and flags; update all
        callers.  Track regno_first and regno_last; do HARD_REGNO_NREGS
        test in one place.  Tidy flags tests.  Don't bias REG_N_REFS by
        loop_depth when optimizing for size.  Do new_dead update after
        emitting REG_UNUSED notes.  Merge mark_set_reg code.
        (mark_set_reg): Remove.
        (propagate_one_insn): Use mark_set_1 for call-clobbered registers;
        arrange to not emit REG_UNUSED notes.

From-SVN: r33462
2000-04-26 22:42:25 -07:00
Richard Henderson
443b75c925 flow.c (find_auto_inc): Use pbi->bb instead of BLOCK_FOR_INSN.
* flow.c (find_auto_inc): Use pbi->bb instead of BLOCK_FOR_INSN.
        * ssa.c (convert_from_ssa): Don't run compute_bb_for_insn.

From-SVN: r33461
2000-04-26 22:12:26 -07:00
Richard Henderson
292f38694a flow.c (propagate_one_insn): Break out from propagate_block.
* flow.c (propagate_one_insn): Break out from propagate_block.
        (init_propagate_block_info): Likewise.
        (free_propagate_block_info): Likewise.
        (propagate_block): Use them.  Export.
        * basic-block.h: Declare them all.

From-SVN: r33460
2000-04-26 22:03:35 -07:00
Richard Henderson
7f8a79ba7e basic-block.h (life_analysis): Declare here ...
* basic-block.h (life_analysis): Declare here ...
        * output.h: ... not here.
        * flow.c (life_analysis): Remove nregs parameter; replace
        remove_dead_code with flags.  Remove ssa dead code check.
        Only init alias analysis if we'll use it.
        * reg-stack.c (reg_to_stack): Update life_analysis arguments.
        * ssa.c (convert_to_ssa): Likewise.
        (convert_from_ssa): Likewise.
        * toplev.c (rest_of_compilation): Likewise.

From-SVN: r33459
2000-04-26 21:42:09 -07:00
Richard Henderson
5229452121 flow.c (flow_delete_block): Rename from delete_block.
* flow.c (flow_delete_block): Rename from delete_block.  Export.
        * basic-block.h (flow_delete_block): Declare.

From-SVN: r33458
2000-04-26 21:26:47 -07:00
Mark Mitchell
da668e9c92 regs.h (reg_n_max): Don't declare.
* regs.h (reg_n_max): Don't declare.
	* flow.c (reg_n_max): Don't define.
	* regclass.c (renumber): Don't initialize to zero.
	(regno_allocated): Likewise.
	(reg_n_max): Define.
	(allocate_reg_info): Don't initialize unnecessarily.

From-SVN: r33374
2000-04-24 07:48:12 +00:00
Richard Henderson
b2433fcde0 * flow.c (mark_used_reg): Hack around rs6000 eliminable pic reg.
From-SVN: r33342
2000-04-22 11:47:52 -07:00
Richard Kenner
c29ea88a1d flow.c (count_basic_blocks, [...]): Remove last change.
* flow.c (count_basic_blocks, find_basic_blocks_1): Remove last change.
	* optabs.c (emit_libcall_block): If have REG_EHG_REGION, update
	region number to -1.

From-SVN: r33164
2000-04-15 11:20:58 -04:00
Richard Kenner
314883b80a flow.c (count_basic_blocks): Remove unused var PREV_CALL.
* flow.c (count_basic_blocks): Remove unused var PREV_CALL.
	Never have a LIBCALL end a basic block.
	(find_basic_blocks_1): Likewise.
	Reorganize CALL_INSN cases.

From-SVN: r33154
2000-04-14 18:04:58 -04:00
Richard Henderson
6e62809688 flow.c (find_auto_inc): Don't autoinc eliminable registers.
* flow.c (find_auto_inc): Don't autoinc eliminable registers.
	If the original source is dead in the incr insn, it's dead now.

From-SVN: r33150
2000-04-14 10:38:35 -07:00
Richard Henderson
8e3f90945d flow.c (struct propagate_block_info): Add new_dead, new_live.
* flow.c (struct propagate_block_info): Add new_dead, new_live.
        (propagate_block): Initialize them.  Use them in parallel instead
        of one tmp variable, ie revert much of the 0408 and 0407 functional
        changes, but keep the structural changes.
        (mark_set_regs): Take new_dead from propagate_block_info instead.
        (mark_set_1, mark_set_reg): Likewise.
        (mark_used_regs): Likewise with new_live.
        (mark_used_reg): Likewise.  Revert 0408 change.

From-SVN: r33089
2000-04-11 18:38:15 -07:00
Alex Samuel
6308dae99a ssa.c (convert_to_ssa): Eliminate dead code when calling life_analysis.
* ssa.c (convert_to_ssa): Eliminate dead code when calling
	life_analysis.
	(convert_from_ssa): Call compute_bb_for_insn before life_analysis.
	(for_each_successor_phi): Change parameter to basic_block.
	(coalesce_regs_in_successor_phi_nodes): Likewise.
	(coalesce_regs_in_copies): Likewise.
	(compute_coalesced_reg_partition): Use basic_block instead of index.
	* rtl.h (convert_to_ssa): Delete.
	(convert_from_ssa): Likewise.
	(successor_phi_fn): Likewise.
	(for_each_successor_phi): Likewise.
	(in_ssa_form): Likewise.
	* basic-block.h (convert_to_ssa): Moved from rtl.h.
	(convert_from_ssa): Likewise.
	(successor_phi_fn): Likewise.
	(in_ssa_form): Likewise.
	(for_each_successor_phi): Likewise.  Change parameter to basic_block.
	* flow.c (calculate_global_regs_live): Pass a basic_block to
	for_each_successor_phi.

From-SVN: r33032
2000-04-09 01:16:44 +00:00
Richard Henderson
729a708984 flow.c (mark_used_reg): Use reg_set_p to determine if a register was modified in the current insn.
* flow.c (mark_used_reg): Use reg_set_p to determine if a register
        was modified in the current insn.

From-SVN: r33030
2000-04-08 15:38:38 -07:00