diff options
author | Jeffrey A Law <law@cygnus.com> | 1999-11-15 06:12:50 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1999-11-14 23:12:50 -0700 |
commit | 89e606c9661b3f674bebc198ece46e9ef1a41c65 (patch) | |
tree | 735e2967a477839c393b6afce3b1c00c55796967 /gcc/lcm.c | |
parent | cd9f6678b314661cdfde334387c1f06e9265c592 (diff) | |
download | gcc-89e606c9661b3f674bebc198ece46e9ef1a41c65.zip gcc-89e606c9661b3f674bebc198ece46e9ef1a41c65.tar.gz gcc-89e606c9661b3f674bebc198ece46e9ef1a41c65.tar.bz2 |
gcse.c (pre_expr_reaches_here_p): Kill CHECK_PRE_COM argument.
* gcse.c (pre_expr_reaches_here_p): Kill CHECK_PRE_COM argument.
All callers changed.
(pre_expr_reaches_here_p_work): Likewise.
(pre_edge_insert): No longer call pre_expr_reaches_here_p.
* lcm.c (compute_laterin): Fix initialization of LATER.
(compute_nearerout): Similarly for NEARER.
From-SVN: r30528
Diffstat (limited to 'gcc/lcm.c')
-rw-r--r-- | gcc/lcm.c | 14 |
1 files changed, 14 insertions, 0 deletions
@@ -269,6 +269,13 @@ compute_laterin (edge_list, earliest, antloc, later, laterin) of the optimistic edge. That will requeue the affected blocks. */ sbitmap_vector_ones (later, num_edges); + /* Note that even though we want an optimistic setting of LATER, we + do not want to be overly optimistic. Consider an outgoing edge from + the entry block. That edge should always have a LATER value the + same as EARLIEST for that edge. */ + for (e = ENTRY_BLOCK_PTR->succ; e; e = e->succ_next) + sbitmap_copy (later[(int)e->aux], earliest[(int)e->aux]); + /* Add all the blocks to the worklist. This prevents an early exit from the loop given our optimistic initialization of LATER above. */ for (bb = n_basic_blocks - 1; bb >= 0; bb--) @@ -598,6 +605,13 @@ compute_nearerout (edge_list, farthest, st_avloc, nearer, nearerout) /* We want a maximal solution. */ sbitmap_vector_ones (nearer, num_edges); + /* Note that even though we want an optimistic setting of NEARER, we + do not want to be overly optimistic. Consider an incoming edge to + the exit block. That edge should always have a NEARER value the + same as FARTHEST for that edge. */ + for (e = EXIT_BLOCK_PTR->pred; e; e = e->pred_next) + sbitmap_copy (nearer[(int)e->aux], farthest[(int)e->aux]); + /* Add all the blocks to the worklist. This prevents an early exit from the loop given our optimistic initialization of NEARER. */ for (bb = 0; bb < n_basic_blocks; bb++) |