aboutsummaryrefslogtreecommitdiff
path: root/gcc/recog.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-01-16 09:54:03 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-01-16 09:54:03 +0100
commit6ce065b607072415124a6a15124e1424f5b6a5e8 (patch)
tree5f85e46f6a8e69d4b2a1a7755310fd8d3b557ec2 /gcc/recog.c
parentbe52ac73d120b5bf27f13c41656c6cfe132c8c30 (diff)
downloadgcc-6ce065b607072415124a6a15124e1424f5b6a5e8.zip
gcc-6ce065b607072415124a6a15124e1424f5b6a5e8.tar.gz
gcc-6ce065b607072415124a6a15124e1424f5b6a5e8.tar.bz2
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
Diffstat (limited to 'gcc/recog.c')
-rw-r--r--gcc/recog.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/recog.c b/gcc/recog.c
index cc28b71..af6a6b0 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);