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
+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
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)
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
{
case BARRIER:
case NOTE:
- case DEBUG_INSN:
break;
case CODE_LABEL: