From afa7c9039c69e4bd5da6caab4df35ea32fd51db5 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Tue, 19 Dec 2017 17:50:31 +0000 Subject: [PATCH] [SFN] start rtl block with label, then markers 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 | 7 +++++++ gcc/cfgexpand.c | 12 ++++-------- gcc/cfgrtl.c | 1 - 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5146d7518b..0552a935af6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2017-12-19 Alexandre Oliva + + 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 * read-rtl.c (parse_reg_note_name): Replace Yoda conditions with diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 85374d32c76..d1616e192cb 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 fda9f5d3e13..45cccba680c 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: -- 2.30.2