summaryrefslogtreecommitdiff
path: root/gcc/gcse.c
diff options
context:
space:
mode:
authorSteven Bosscher <stevenb.gcc@gmail.com>2007-11-01 21:03:50 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2007-11-01 21:03:50 +0000
commitf8423fea8da09d34b08b9cec9a72a2d8c9ba42e7 (patch)
treed5c243f9592bf5784b11ba0be1a11349d383d428 /gcc/gcse.c
parentba8a73e9fb98db2eb3abd060227f56cba46c22e1 (diff)
downloadgcc-f8423fea8da09d34b08b9cec9a72a2d8c9ba42e7.tar.gz
re PR rtl-optimization/33828 (Issues with code hoisting implementation in gcse.c)
PR rtl-optimization/33828 * gcse.c (compute_code_hoist_vbeinout): Fix order of computation of VBEIN and VBEOUT. From-SVN: r129832
Diffstat (limited to 'gcc/gcse.c')
-rw-r--r--gcc/gcse.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/gcse.c b/gcc/gcse.c
index a519acbf054..b0a592d4d66 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++;