]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/33828 (Issues with code hoisting implementation in gcse.c)
authorSteven Bosscher <stevenb.gcc@gmail.com>
Thu, 1 Nov 2007 21:03:50 +0000 (21:03 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 1 Nov 2007 21:03:50 +0000 (21:03 +0000)
PR rtl-optimization/33828
* gcse.c (compute_code_hoist_vbeinout): Fix order of computation
of VBEIN and VBEOUT.

From-SVN: r129832

gcc/ChangeLog
gcc/gcse.c

index a39ef31701a19462fae19d1d592e1dbfea30947a..c790c1fa5ea32acfe92fd0af2a45c88a22a87e3e 100644 (file)
@@ -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.
index a519acbf0545042e176e0c22ba73476c00cb246e..b0a592d4d66ccab7938014e8c739f1ae2c832896 100644 (file)
@@ -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++;