From 9dbff9c05520a74e6cd337578f27b56c941f64f3 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Tue, 7 May 2024 10:14:19 +0200 Subject: Revert "Revert "combine: Don't combine if I2 does not change"" This reverts commit 109f1b28fc94c93096506e3df0c25e331cef19d0. --- gcc/combine.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gcc/combine.cc b/gcc/combine.cc index 92b8d98..71c9abc 100644 --- a/gcc/combine.cc +++ b/gcc/combine.cc @@ -4196,6 +4196,17 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0, adjust_for_new_dest (i3); } + /* If I2 didn't change, this is not a combination (but a simplification or + canonicalisation with context), which should not be done here. Doing + it here explodes the algorithm. Don't. */ + if (rtx_equal_p (newi2pat, PATTERN (i2))) + { + if (dump_file) + fprintf (dump_file, "i2 didn't change, not doing this\n"); + undo_all (); + return 0; + } + /* We now know that we can do this combination. Merge the insns and update the status of registers and LOG_LINKS. */ -- cgit v1.1