From 6ce065b607072415124a6a15124e1424f5b6a5e8 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 16 Jan 2018 09:54:03 +0100 Subject: [PATCH] re PR rtl-optimization/83213 (peephole bug with -O2) PR rtl-optimization/83213 * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn to last if both are JUMP_INSNs. From-SVN: r256728 --- gcc/ChangeLog | 4 ++++ gcc/recog.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 69ed57a5b50..026e8a89d0c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2018-01-16 Jakub Jelinek + PR rtl-optimization/83213 + * recog.c (peep2_attempt): Copy over CROSSING_JUMP_P from peepinsn + to last if both are JUMP_INSNs. + PR tree-optimization/83843 * gimple-ssa-store-merging.c (imm_store_chain_info::output_merged_store): Handle bit_not_p on diff --git a/gcc/recog.c b/gcc/recog.c index cc28b71ba48..af6a6b01d88 100644 --- a/gcc/recog.c +++ b/gcc/recog.c @@ -3446,6 +3446,8 @@ peep2_attempt (basic_block bb, rtx_insn *insn, int match_len, rtx_insn *attempt) last = emit_insn_after_setloc (attempt, peep2_insn_data[i].insn, INSN_LOCATION (peepinsn)); + if (JUMP_P (peepinsn) && JUMP_P (last)) + CROSSING_JUMP_P (last) = CROSSING_JUMP_P (peepinsn); before_try = PREV_INSN (insn); delete_insn_chain (insn, peep2_insn_data[i].insn, false); -- 2.30.2