re PR rtl-optimization/89676 (Redundant moves for long long shift on 32bit x86)
authorAndrey Belevantsev <abel@ispras.ru>
Mon, 18 Mar 2019 07:51:06 +0000 (10:51 +0300)
committerAndrey Belevantsev <abel@gcc.gnu.org>
Mon, 18 Mar 2019 07:51:06 +0000 (10:51 +0300)
        PR middle-end/89676
        * sel-sched.c (compute_av_set_at_bb_end): When we have an ineligible
        successor, use NULL as its av set.

From-SVN: r269751

gcc/ChangeLog
gcc/sel-sched.c

index 67dc0bfdbb6999d7948ab22ecb9812a31415a2ba..b66cb5d81cc69f0ead64a88b517c74543188dc52 100644 (file)
@@ -1,3 +1,9 @@
+2019-03-18  Andrey Belevantsev  <abel@ispras.ru>
+
+       PR middle-end/89676
+       * sel-sched.c (compute_av_set_at_bb_end): When we have an ineligible
+       successor, use NULL as its av set.
+
 2019-03-15  Segher Boessenkool  <segher@kernel.crashing.org>
 
        PR rtl-optimization/89721
index 315f2c0c0ab41b649b6404ae5ee605f00d1d6830..338d7c097dfcf964aeb6963a6cf0e9f63a704121 100644 (file)
@@ -2820,10 +2820,12 @@ compute_av_set_at_bb_end (insn_t insn, ilist_t p, int ws)
     FOR_EACH_VEC_ELT (sinfo->succs_ok, is, succ)
       {
         basic_block succ_bb = BLOCK_FOR_INSN (succ);
+       av_set_t av_succ = (is_ineligible_successor (succ, p)
+                           ? NULL
+                           : BB_AV_SET (succ_bb));
 
         gcc_assert (BB_LV_SET_VALID_P (succ_bb));
-        mark_unavailable_targets (av1, BB_AV_SET (succ_bb),
-                                  BB_LV_SET (succ_bb));
+       mark_unavailable_targets (av1, av_succ, BB_LV_SET (succ_bb));
       }
 
   /* Finally, check liveness restrictions on paths leaving the region.  */