diff options
author | Richard Biener <rguenther@suse.de> | 2022-11-10 15:02:37 +0100 |
---|---|---|
committer | Richard Biener <rguenther@suse.de> | 2022-11-10 15:19:43 +0100 |
commit | f1b76811f2c3773e8cabcc07932bf13e82e264db (patch) | |
tree | 7f716507f6a8a0fe54ea254481de4a6361e91268 | |
parent | 2f6cb9c51a933de19cd88f4c9180ac9cf5093522 (diff) | |
download | gcc-f1b76811f2c3773e8cabcc07932bf13e82e264db.zip gcc-f1b76811f2c3773e8cabcc07932bf13e82e264db.tar.gz gcc-f1b76811f2c3773e8cabcc07932bf13e82e264db.tar.bz2 |
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.
-rw-r--r-- | gcc/tree-ssa-forwprop.cc | 7 |
1 files changed, 6 insertions, 1 deletions
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)) { |