aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfglayout.c
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2004-07-26 14:34:19 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2004-07-26 14:34:19 +0000
commit35b6b437aa03e95ab2eb6fa5acaf25e07a9b1433 (patch)
tree4287b222452a3f92e4472b74970cdf9826728da2 /gcc/cfglayout.c
parentfa0a2ae5e38f358c9c1b1480a6c5b291ea5201bd (diff)
downloadgcc-35b6b437aa03e95ab2eb6fa5acaf25e07a9b1433.zip
gcc-35b6b437aa03e95ab2eb6fa5acaf25e07a9b1433.tar.gz
gcc-35b6b437aa03e95ab2eb6fa5acaf25e07a9b1433.tar.bz2
re PR rtl-optimization/16643 (verify_local_live_at_start ICE after crossjumping & cfgcleanup)
PR rtl-optimization/16643 * cfglayout.h (cfg_layout_initialize): Add a flags parameter. * cfglayout.c (cfg_layout_initialize): Pass it to cleanup_cfg. * basic-block.h (reorder_basic_blocks): Add a flags parameter. * cfglayout.c (reorder_basic_blocks): Pass it to cfg_layout_initialize. (partition_hot_cold_basic_blocks): Pass 0 to cfg_layout_initialize. * function.c (thread_prologue_and_epilogue_insns): Likewise. * rtl.h (tracer): Add a flags parameter. * tracer.c (tracer): Pass it to cfg_layout_initialise. * passes.c (rest_of_handle_stack_regs): Pass 0 to reorder_basic_blocks. (rest_of_handle_reorder_blocks): Update calls to tracer and reorder_basic_blocks, passing CLEANUP_UPDATE_LIFE if appropriate. (rest_of_handle_tracer): Pass 0 to tracer. (rest_of_handle_loop2): Pass 0 to cfg_layout_initialize. From-SVN: r85191
Diffstat (limited to 'gcc/cfglayout.c')
-rw-r--r--gcc/cfglayout.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index 457305c..a81ce4c 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -1133,11 +1133,15 @@ cfg_layout_duplicate_bb (basic_block bb)
return new_bb;
}
-/* Main entry point to this module - initialize the data structures for
- CFG layout changes. It keeps LOOPS up-to-date if not null. */
+/* Main entry point to this module - initialize the datastructures for
+ CFG layout changes. It keeps LOOPS up-to-date if not null.
+
+ FLAGS is a set of additional flags to pass to cleanup_cfg(). It should
+ include CLEANUP_UPDATE_LIFE if liveness information must be kept up
+ to date. */
void
-cfg_layout_initialize (void)
+cfg_layout_initialize (unsigned int flags)
{
basic_block bb;
@@ -1152,7 +1156,7 @@ cfg_layout_initialize (void)
record_effective_endpoints ();
- cleanup_cfg (CLEANUP_CFGLAYOUT);
+ cleanup_cfg (CLEANUP_CFGLAYOUT | flags);
}
/* Splits superblocks. */