From f1b76811f2c3773e8cabcc07932bf13e82e264db Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Thu, 10 Nov 2022 15:02:37 +0100 Subject: [PATCH] better PHI copy propagation for forwprop We can handle _1 = PHI <_1, _2> as a copy. PR tree-optimization/84646 * tree-ssa-forwprop.cc (pass_forwprop::execute): Improve copy propagation across PHIs. --- gcc/tree-ssa-forwprop.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/tree-ssa-forwprop.cc b/gcc/tree-ssa-forwprop.cc index 4b693ef..7c79426 100644 --- a/gcc/tree-ssa-forwprop.cc +++ b/gcc/tree-ssa-forwprop.cc @@ -3384,7 +3384,12 @@ pass_forwprop::execute (function *fun) FOR_EACH_PHI_ARG (use_p, phi, it, SSA_OP_USE) { tree use = USE_FROM_PTR (use_p); - if (! first) + if (use == res) + /* The PHI result can also appear on a backedge, if so + we can ignore this case for the purpose of determining + the singular value. */ + ; + else if (! first) first = use; else if (! operand_equal_p (first, use, 0)) { -- 2.7.4