aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cfgexpand.c12
-rw-r--r--gcc/cfgrtl.c1
3 files changed, 11 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c5146d7..0552a93 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 85374d3..d1616e1 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -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
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index fda9f5d..45cccba 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -2954,7 +2954,6 @@ rtl_verify_bb_layout (void)
{
case BARRIER:
case NOTE:
- case DEBUG_INSN:
break;
case CODE_LABEL: