[SFN] start rtl block with label, then markers
authorAlexandre Oliva <aoliva@redhat.com>
Tue, 19 Dec 2017 17:50:31 +0000 (17:50 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Tue, 19 Dec 2017 17:50:31 +0000 (17:50 +0000)
Emitting markers before labels turned out to not be worth the trouble.
The markers outside BBs confuse the ebb scheduler, and they don't add
any useful information.  I'll arrange for markers to be moved past
labels, even in gimple, but for now this will fix the two remaining
known problems on ia64.

for  gcc/ChangeLog

PR bootstrap/83396
* cfgexpand.c (expand_gimple_basic_block): Expand label first,
even if there are markers before it.
* cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.

From-SVN: r255833

gcc/ChangeLog
gcc/cfgexpand.c
gcc/cfgrtl.c

index c5146d7518b6e6b770ccf81a78fb58d5d119020c..0552a935af6b87eda3966466e56e45cb1d468913 100644 (file)
@@ -1,3 +1,10 @@
+2017-12-19  Alexandre Oliva <aoliva@redhat.com>
+
+       PR bootstrap/83396
+       * cfgexpand.c (expand_gimple_basic_block): Expand label first,
+       even if there are markers before it.
+       * cfgrtl.c (rtl_verify_bb_layout): Reject DEBUG_INSNs outside BBs.
+
 2017-12-19  Jakub Jelinek  <jakub@redhat.com>
 
        * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with
index 85374d32c76a81fda9a838efa704ddd0d069ad38..d1616e192cb51e897d65fcfb80b2bd6bc7587b2e 100644 (file)
@@ -5515,20 +5515,16 @@ expand_gimple_basic_block (basic_block bb, bool disable_tail_calls)
   gimple *label_stmt = stmt;
   rtx_code_label **elt = lab_rtx_for_bb->get (bb);
 
-  if (stmt)
-    /* We'll get to it in the loop below, and get back to
-       emit_label_and_note then.  */
-    ;
-  else if (stmt || elt)
+  if (stmt || elt)
     {
-    emit_label_and_note:
       gcc_checking_assert (!note);
       last = get_last_insn ();
 
       if (stmt)
        {
          expand_gimple_stmt (stmt);
-         gsi_next (&gsi);
+         if (gsi_stmt (gsi) == stmt)
+           gsi_next (&gsi);
        }
 
       if (elt)
@@ -5555,7 +5551,7 @@ expand_gimple_basic_block (basic_block bb, bool disable_tail_calls)
       stmt = gsi_stmt (gsi);
 
       if (stmt == label_stmt)
-       goto emit_label_and_note;
+       continue;
 
       /* If this statement is a non-debug one, and we generate debug
         insns, then this one might be the last real use of a TERed
index fda9f5d3e131092ab90262b0ab663e28bdcd4ee5..45cccba680c99f961c141c07a075c0ed3eca7297 100644 (file)
@@ -2954,7 +2954,6 @@ rtl_verify_bb_layout (void)
            {
            case BARRIER:
            case NOTE:
-           case DEBUG_INSN:
              break;
 
            case CODE_LABEL: