aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gcse.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a39ef317..c790c1f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-11-01 Steven Bosscher <stevenb.gcc@gmail.com>
+
+ PR rtl-optimization/33828
+ * gcse.c (compute_code_hoist_vbeinout): Fix order of computation
+ of VBEIN and VBEOUT.
+
2007-11-01 Eric Botcazou <ebotcazou@libertysurf.fr>
* optabs.c (prepare_cmp_insn): Merge a couple of conditional blocks.
diff --git a/gcc/gcse.c b/gcc/gcse.c
index a519acb..b0a592d 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -4772,10 +4772,14 @@ compute_code_hoist_vbeinout (void)
the convergence. */
FOR_EACH_BB_REVERSE (bb)
{
- changed |= sbitmap_a_or_b_and_c_cg (hoist_vbein[bb->index], antloc[bb->index],
- hoist_vbeout[bb->index], transp[bb->index]);
if (bb->next_bb != EXIT_BLOCK_PTR)
- sbitmap_intersection_of_succs (hoist_vbeout[bb->index], hoist_vbein, bb->index);
+ sbitmap_intersection_of_succs (hoist_vbeout[bb->index],
+ hoist_vbein, bb->index);
+
+ changed |= sbitmap_a_or_b_and_c_cg (hoist_vbein[bb->index],
+ antloc[bb->index],
+ hoist_vbeout[bb->index],
+ transp[bb->index]);
}
passes++;