diff options
author | Jan Hubicka <jh@suse.cz> | 2002-10-29 15:39:38 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-10-29 14:39:38 +0000 |
commit | fc8dfa20665e273466aaef91b403498b127e8805 (patch) | |
tree | e9d405411367cd407617983bbd939ab09a2b1533 /gcc | |
parent | 6e7727ebee6ef407d7ec9cd801b1920921d123f7 (diff) | |
download | gcc-fc8dfa20665e273466aaef91b403498b127e8805.zip gcc-fc8dfa20665e273466aaef91b403498b127e8805.tar.gz gcc-fc8dfa20665e273466aaef91b403498b127e8805.tar.bz2 |
toplev.c (rest_of_compilation): Reorganize way reg_scan is called before final pass.
* toplev.c (rest_of_compilation): Reorganize way reg_scan is called
before final pass.
From-SVN: r58624
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/toplev.c | 53 |
2 files changed, 29 insertions, 29 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3c7f639..2c7095a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Oct 29 15:37:39 CET 2002 Jan Hubicka <jh@suse.cz> + + * toplev.c (rest_of_compilation): Reorganize way reg_scan is called + before final pass. + 2002-10-29 Eric Botcazou <ebotcazou@libertysurf.fr> * expr.c (expand_expr) [PLUS]: Don't use simplify_binary_operation; diff --git a/gcc/toplev.c b/gcc/toplev.c index a811c4b..447ef03 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -2998,17 +2998,24 @@ rest_of_compilation (decl) close_dump_file (DFI_bp, print_rtl_with_bb, insns); timevar_pop (TV_BRANCH_PROB); } - if (flag_if_conversion) + if (optimize >= 0) { - timevar_push (TV_IFCVT); - if (rtl_dump_file) - dump_flow_info (rtl_dump_file); open_dump_file (DFI_ce1, decl); + if (flag_if_conversion) + { + timevar_push (TV_IFCVT); + if (rtl_dump_file) + dump_flow_info (rtl_dump_file); + cleanup_cfg (CLEANUP_EXPENSIVE); + reg_scan (insns, max_reg_num (), 0); + if_convert (0); + timevar_pop (TV_IFCVT); + } + timevar_push (TV_JUMP); cleanup_cfg (CLEANUP_EXPENSIVE); reg_scan (insns, max_reg_num (), 0); - if_convert (0); + timevar_pop (TV_JUMP); close_dump_file (DFI_ce1, print_rtl_with_bb, get_insns ()); - timevar_pop (TV_IFCVT); } if (flag_tracer) { @@ -3016,47 +3023,35 @@ rest_of_compilation (decl) open_dump_file (DFI_tracer, decl); if (rtl_dump_file) dump_flow_info (rtl_dump_file); - cleanup_cfg (CLEANUP_EXPENSIVE); tracer (); cleanup_cfg (CLEANUP_EXPENSIVE); + reg_scan (insns, max_reg_num (), 0); close_dump_file (DFI_tracer, print_rtl_with_bb, get_insns ()); timevar_pop (TV_TRACER); - reg_scan (get_insns (), max_reg_num (), 0); } - if (optimize > 0) + if (flag_rerun_cse_after_loop) { timevar_push (TV_CSE2); open_dump_file (DFI_cse2, decl); if (rtl_dump_file) dump_flow_info (rtl_dump_file); + /* CFG is no longer maintained up-to-date. */ + tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file); + purge_all_dead_edges (0); + delete_trivially_dead_insns (insns, max_reg_num ()); - if (flag_rerun_cse_after_loop) + if (tem) { timevar_push (TV_JUMP); - reg_scan (insns, max_reg_num (), 0); - timevar_pop (TV_JUMP); - + rebuild_jump_labels (insns); cleanup_cfg (CLEANUP_EXPENSIVE); - /* CFG is no longer maintained up-to-date. */ - reg_scan (insns, max_reg_num (), 0); - tem = cse_main (insns, max_reg_num (), 1, rtl_dump_file); - purge_all_dead_edges (0); - delete_trivially_dead_insns (insns, max_reg_num ()); - - if (tem) - { - timevar_push (TV_JUMP); - rebuild_jump_labels (insns); - cleanup_cfg (CLEANUP_EXPENSIVE); - timevar_pop (TV_JUMP); - } + timevar_pop (TV_JUMP); } - + reg_scan (insns, max_reg_num (), 0); close_dump_file (DFI_cse2, print_rtl_with_bb, insns); - timevar_pop (TV_CSE2); - ggc_collect (); + timevar_pop (TV_CSE2); } cse_not_expected = 1; |