OSDN Git Service

PR rtl-optimization/33828
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 1 Nov 2007 21:03:50 +0000 (21:03 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 1 Nov 2007 21:03:50 +0000 (21:03 +0000)
* gcse.c (compute_code_hoist_vbeinout): Fix order of computation
of VBEIN and VBEOUT.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@129832 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/gcse.c

index a39ef31..c790c1f 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 a519acb..b0a592d 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++;