diff options
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/cfgrtl.c | 3 | ||||
-rw-r--r-- | gcc/haifa-sched.c | 2 |
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); |