aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgcleanup.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2001-11-15 11:41:48 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2001-11-15 11:41:48 +0100
commitfeb265abdb7bce4cb67733dc1c1c96644e6f790f (patch)
tree361d0de7f868ea7e399a885307f7d6c9618fee0f /gcc/cfgcleanup.c
parent8f5a5db8187f51e0cbbf8bbb1b13be97fdf2fe4b (diff)
downloadgcc-feb265abdb7bce4cb67733dc1c1c96644e6f790f.zip
gcc-feb265abdb7bce4cb67733dc1c1c96644e6f790f.tar.gz
gcc-feb265abdb7bce4cb67733dc1c1c96644e6f790f.tar.bz2
cfgcleanup.c (try_optimize_cfg): If try_simplify_condjump optimized conditional jump...
* cfgcleanup.c (try_optimize_cfg): If try_simplify_condjump optimized conditional jump, request updating life into for the block containing it. Fix a typo which prevented life info update. Clear blocks bitmap before using it. * gcc.c-torture/compile/20011114-3.c: New test. From-SVN: r47050
Diffstat (limited to 'gcc/cfgcleanup.c')
-rw-r--r--gcc/cfgcleanup.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 03f767a..28f3a1f 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -1211,7 +1211,10 @@ try_optimize_cfg (mode)
/* Simplify branch over branch. */
if ((mode & CLEANUP_EXPENSIVE) && try_simplify_condjump (b))
- changed_here = true;
+ {
+ BB_SET_FLAG (b, BB_UPDATE_LIFE);
+ changed_here = true;
+ }
/* If B has a single outgoing edge, but uses a non-trivial jump
instruction without side-effects, we can either delete the
@@ -1261,10 +1264,11 @@ try_optimize_cfg (mode)
if (mode & CLEANUP_CROSSJUMP)
remove_fake_edges ();
- if ((mode & CLEANUP_UPDATE_LIFE) & changed_overall)
+ if ((mode & CLEANUP_UPDATE_LIFE) && changed_overall)
{
bool found = 0;
blocks = sbitmap_alloc (n_basic_blocks);
+ sbitmap_zero (blocks);
for (i = 0; i < n_basic_blocks; i++)
if (BB_FLAGS (BASIC_BLOCK (i)) & BB_UPDATE_LIFE)
{