[Bug tree-optimization/126977] [17 Regression] factor_out_conditional_operation breaks __builtin_crc* handling
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Sep 1 15:50:52 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126977
--- Comment #6 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Andrea Pinski <pinskia@gcc.gnu.org>:
https://gcc.gnu.org/g:44c89620f7390687a01045228d263845e6e311aa
commit r17-3822-g44c89620f7390687a01045228d263845e6e311aa
Author: Andrea Pinski <andrew.pinski@oss.qualcomm.com>
Date: Sat Aug 29 11:46:17 2026 -0700
phiopt: Fix factor/merging out of calls [PR126977]
Some builtins and some expressions can't be combined in some cases.
An example is the crc builtins can't be factored out/commonialized if
the 3rd argument is different as that would cause an error as the crc
builtins require a constant there. The same is true of some others
like BIT_INSERT_EXPR and BIT_FIELD_REF which requires a constant.
Right now there are 3 different locations which handle the same
thing. This extracts all 3 different locations into one function,
factor_operation_ok.
And adds a few more restrictions that was not handled before:
CRC, expect, object_size, clz, ctz (only internal function with 2
arguments),
prefetch, and frame address.
Note since the restriction on BIT_INSERT_EXPR is relaxed slightly,
pr113609-2.c needs to be updated to allow for the better optimization
that is happening now.
PR tree-optimization/126977
gcc/ChangeLog:
* gimple-match-exports.cc (fn_arg_must_be_const_p): New function.
(all_ssa_names_p): New function.
(factor_operation_ok): New exported function.
* gimple-match.h (factor_operation_ok): New declaration.
* tree-if-conv.cc (factor_out_operators): Use factor_operation_ok.
* tree-ssa-phiopt.cc (factor_out_conditional_operation): Use
factor_operation_ok.
* tree-ssa-tail-merge.cc (merge_stmts_p): Use factor_operation_ok
instead of just looking at specific internal functions.
gcc/testsuite/ChangeLog:
* gcc.target/i386/pr113609-2.c: Update for factoring of
BIT_INSERT_EXPR.
* gcc.dg/torture/pr126977-1.c: New test.
Signed-off-by: Andrea Pinski <andrew.pinski@oss.qualcomm.com>
Co-authored-by: Naveen <naveen.siddegowda@oss.qualcomm.com>
More information about the Gcc-bugs
mailing list