[Bug tree-optimization/125557] Missed if-conversion of load addresses
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 19 19:03:44 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125557
--- Comment #12 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrew Pinski <pinskia@gcc.gnu.org>:
https://gcc.gnu.org/g:3c0fd2976ab4f4d9e51f93eaf1e49121299e4875
commit r17-1703-g3c0fd2976ab4f4d9e51f93eaf1e49121299e4875
Author: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
Date: Fri Jun 12 12:52:18 2026 -0700
phiopt: Simplified factoring of loads [PR125557]
This is a simplified version that I was mentioning.
It is based on
https://gcc.gnu.org/pipermail/gcc-patches/2026-June/720170.html
but only handing in phi-opt. It is able to optimize
what is requested and will not have the regression dealing
with vectorization. There are some more tweaks we can do
to handle some more stuff.
Like before vectorization, if the two pointers are the same we should do
the factoring. Or handling stores before the load which will allow
us to iterate better with cs-elim limited. We can also tweak the
before vectorization cost to be rather based on if it just inside
a loop into what was done in the full patch. For the benchmark improvement
that was not needed.
Changes since v1:
* v2: the factoring needs to be done on a diamond only, and the loads need
to
come from the middle bbs.
PR tree-optimization/125557
gcc/ChangeLog:
* tree-ssa-phiopt.cc (factor_out_conditional_load): New function.
(factor_out_all): Call factor_out_conditional_load.
gcc/testsuite/ChangeLog:
* gcc.dg/tree-ssa/scc-diamond-1.c: New test.
* gcc.dg/tree-ssa/scc-diamond-3.c: New test.
* gcc.dg/tree-ssa/scc-diamond-4.c: New test.
* gcc.target/aarch64/scc-diamond-2.c: New test.
Co-Authored-by: Kyrylo Tkachov <ktkachov@nvidia.com>
Signed-off-by: Kyrylo Tkachov <ktkachov@nvidia.com>
Signed-off-by: Andrew Pinski <andrew.pinski@oss.qualcomm.com>
More information about the Gcc-bugs
mailing list