diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2017-12-19 17:50:31 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2017-12-19 17:50:31 +0000 |
commit | afa7c9039c69e4bd5da6caab4df35ea32fd51db5 (patch) | |
tree | 792a16dead90049a61aa96e6fdfe303225646435 /gcc/cfgexpand.c | |
parent | 1e6bc14517c48daf008200f3f5616822e9e60bcd (diff) | |
download | gcc-afa7c9039c69e4bd5da6caab4df35ea32fd51db5.zip gcc-afa7c9039c69e4bd5da6caab4df35ea32fd51db5.tar.gz gcc-afa7c9039c69e4bd5da6caab4df35ea32fd51db5.tar.bz2 |
[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
Diffstat (limited to 'gcc/cfgexpand.c')
-rw-r--r-- | gcc/cfgexpand.c | 12 |
1 files changed, 4 insertions, 8 deletions
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 |