summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/cfgrtl.c3
-rw-r--r--gcc/haifa-sched.c2
3 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c689c58670c..9d079732939 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2017-01-15 Segher Boessenkool <segher@kernel.crashing.org>
+ PR target/72749
+ * cfgrtl.c (rtl_split_edge): Also patch jump insns that jump to the
+ fallthrough.
+ * haifa-sched.c (dump_insn_stream): Don't crash if there is a label
+ in the currently scheduled RTL fragment.
+
+2017-01-15 Segher Boessenkool <segher@kernel.crashing.org>
+
PR rtl-optimization/78751
* ifcvt.c (find_cond_trap): If we generated a non-existing insn,
give up.
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index bba4a99161a..c7e355ec7d4 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -1935,7 +1935,8 @@ rtl_split_edge (edge edge_in)
if (last
&& JUMP_P (last)
&& edge_in->dest != EXIT_BLOCK_PTR_FOR_FN (cfun)
- && extract_asm_operands (PATTERN (last)) != NULL_RTX
+ && (extract_asm_operands (PATTERN (last))
+ || JUMP_LABEL (last) == before)
&& patch_jump_insn (last, before, bb))
df_set_bb_dirty (edge_in->src);
}
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 1b13e32d898..07de1bbbb23 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -6495,7 +6495,7 @@ dump_insn_stream (rtx_insn *head, rtx_insn *tail)
if (sched_verbose >= 4)
{
- if (NOTE_P (insn) || recog_memoized (insn) < 0)
+ if (NOTE_P (insn) || LABEL_P (insn) || recog_memoized (insn) < 0)
fprintf (sched_dump, "nothing");
else
print_reservation (sched_dump, insn);