aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@redhat.com>1999-12-18 10:30:41 -0800
committerDavid S. Miller <davem@gcc.gnu.org>1999-12-18 10:30:41 -0800
commite619323dbd7257fd25ea53ae103e8f56eb104d7b (patch)
tree88c60111a0e53336c1becf36b5787d9c54231947
parent05e1739fcf801f145ae480d694b8d97c4cc8acdd (diff)
downloadgcc-e619323dbd7257fd25ea53ae103e8f56eb104d7b.zip
gcc-e619323dbd7257fd25ea53ae103e8f56eb104d7b.tar.gz
gcc-e619323dbd7257fd25ea53ae103e8f56eb104d7b.tar.bz2
toplev.c (rest_of_compilation): Restore BLOCK tree reconstruction and branch shortening changes lost in...
* toplev.c (rest_of_compilation): Restore BLOCK tree reconstruction and branch shortening changes lost in December 18th change. From-SVN: r31013
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/toplev.c21
2 files changed, 21 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 27ce715..8be52e9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+1999-12-18 David S. Miller <davem@redhat.com>
+
+ * toplev.c (rest_of_compilation): Restore BLOCK tree
+ reconstruction and branch shortening changes lost in
+ December 18th change.
+
Sat Dec 18 05:29:29 1999 Scott Bambrough <scottb@netwinder.org>
* config/arm/linux-elf.h: Change all instances of
diff --git a/gcc/toplev.c b/gcc/toplev.c
index a3fbd02..39354a5 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -2750,6 +2750,14 @@ rest_of_compilation (decl)
collector to reclaim the memory used by the notes. */
remove_unncessary_notes ();
+ /* In function-at-a-time mode, we do not attempt to keep the BLOCK
+ tree in sensible shape. So, we just recalculate it here. */
+ if (current_function->x_whole_function_mode_p)
+ {
+ find_loop_tree_blocks ();
+ unroll_block_trees ();
+ }
+
/* If we are reconsidering an inline function
at the end of compilation, skip the stuff for making it inline. */
@@ -3205,6 +3213,7 @@ rest_of_compilation (decl)
(flow_time,
{
find_basic_blocks (insns, max_reg_num (), rtl_dump_file, 1);
+ calculate_loop_depth (rtl_dump_file);
life_analysis (insns, max_reg_num (), rtl_dump_file, 1);
});
@@ -3537,12 +3546,6 @@ rest_of_compilation (decl)
ggc_collect ();
#endif
- /* Shorten branches. */
- TIMEVAR (shorten_branch_time,
- {
- shorten_branches (get_insns ());
- });
-
#ifdef STACK_REGS
if (stack_reg_dump)
open_dump_file (".20.stack", decl_printable_name (decl, 2));
@@ -3560,6 +3563,12 @@ rest_of_compilation (decl)
ggc_collect ();
#endif
+ /* Shorten branches. */
+ TIMEVAR (shorten_branch_time,
+ {
+ shorten_branches (get_insns ());
+ });
+
/* Now turn the rtl into assembler code. */
TIMEVAR (final_time,