aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2002-10-29 15:39:38 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2002-10-29 14:39:38 +0000
commitfc8dfa20665e273466aaef91b403498b127e8805 (patch)
treee9d405411367cd407617983bbd939ab09a2b1533 /gcc
parent6e7727ebee6ef407d7ec9cd801b1920921d123f7 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/toplev.c53
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;