aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgrtl.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2002-03-22 12:11:21 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2002-03-22 11:11:21 +0000
commit0a2ed1f101ae61e97e3e652dde6a537ecb4a267c (patch)
treec1fc98111346b8e70b39c4624897463b590685e6 /gcc/cfgrtl.c
parent4d72536eeccbed73b276fb236a89228c34d5f50f (diff)
downloadgcc-0a2ed1f101ae61e97e3e652dde6a537ecb4a267c.zip
gcc-0a2ed1f101ae61e97e3e652dde6a537ecb4a267c.tar.gz
gcc-0a2ed1f101ae61e97e3e652dde6a537ecb4a267c.tar.bz2
cfgcleanup.c (outgoing_edges_math): Fix condition; relax frequencies match; avoid match on different loop depths.
* cfgcleanup.c (outgoing_edges_math): Fix condition; relax frequencies match; avoid match on different loop depths. (try_crossjump_to_bb): Kill tests that no longer brings time savings. * cfgrtl.c (force_nonfallthru_and_redirect): Fix loop_depth updating code. (split_edge): Likewise. * flow.c (update_life_info_in_dirty_blocks): Fix uninitialized variable. * Makefile.in (cfgrtl): Add insn-config.h depenendency. * cfgrtl.c: Include insn-config.h (split_block) Dirtify block in presence of conditional execution From-SVN: r51168
Diffstat (limited to 'gcc/cfgrtl.c')
-rw-r--r--gcc/cfgrtl.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 5bf33bc0..a4f7006 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -56,6 +56,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "toplev.h"
#include "tm_p.h"
#include "obstack.h"
+#include "insn-config.h"
/* Stubs in case we don't have a return insn. */
#ifndef HAVE_return
@@ -546,6 +547,15 @@ split_block (bb, insn)
propagate_block (new_bb, new_bb->global_live_at_start, NULL, NULL, 0);
COPY_REG_SET (bb->global_live_at_end,
new_bb->global_live_at_start);
+#ifdef HAVE_conditional_execution
+ /* In the presence of conditional execution we are not able to update
+ liveness precisely. */
+ if (reload_completed)
+ {
+ bb->flags |= BB_DIRTY;
+ new_bb->flags |= BB_DIRTY;
+ }
+#endif
}
return new_edge;