diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cfgexpand.c | 12 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 1 |
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: |