re PR rtl-optimization/48721 (ICE: verify_flow_info failed: missing barrier after...
authorJakub Jelinek <jakub@redhat.com>
Wed, 30 Nov 2011 18:53:46 +0000 (19:53 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 30 Nov 2011 18:53:46 +0000 (19:53 +0100)
PR rtl-optimization/48721
* sched-ebb.c (begin_move_insn): Insert empty unreachable
block after BARRIER if insn is followed by it.

From-SVN: r181855

gcc/ChangeLog
gcc/sched-ebb.c

index 1e5936ed6a4531df6bfed47b08c6154166657a5a..a09a42f8c84d1d6e38cd2d2f1ad09e7b001b25e7 100644 (file)
@@ -1,3 +1,9 @@
+2011-11-30  Jakub Jelinek  <jakub@redhat.com>
+
+       PR rtl-optimization/48721
+       * sched-ebb.c (begin_move_insn): Insert empty unreachable
+       block after BARRIER if insn is followed by it.
+
 2011-11-30  Richard Henderson  <rth@redhat.com>
 
        * config/sparc/sparc-opts.h (enum sparc_memory_model_type): New.
index 9a28e2bfc4b3db4b0bf98f1de42accf9a1243f6e..cae9f70417844743ba942c8450716d84cf328075 100644 (file)
@@ -191,8 +191,13 @@ begin_move_insn (rtx insn, rtx last)
          gcc_assert (NOTE_INSN_BASIC_BLOCK_P (BB_END (bb)));
        }
       else
-       /* Create an empty unreachable block after the INSN.  */
-       bb = create_basic_block (NEXT_INSN (insn), NULL_RTX, last_bb);
+       {
+         /* Create an empty unreachable block after the INSN.  */
+         rtx next = NEXT_INSN (insn);
+         if (next && BARRIER_P (next))
+           next = NEXT_INSN (next);
+         bb = create_basic_block (next, NULL_RTX, last_bb);
+       }
 
       /* split_edge () creates BB before E->DEST.  Keep in mind, that
         this operation extends scheduling region till the end of BB.