https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112104
--- Comment #7 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Eikansh Gupta <[email protected]>: https://gcc.gnu.org/g:62993cc9d2200ef7a05f317cdef3262996c0ac10 commit r17-3460-g62993cc9d2200ef7a05f317cdef3262996c0ac10 Author: Eikansh Gupta <[email protected]> Date: Thu Jul 23 17:04:17 2026 +0530 tree-optimization: Handle variable trip count XOR in final value replacement [PR112104] analyze_and_compute_bitop_with_inv_effect replaces a loop that repeatedly applies a bitwise op with a loop-invariant operand by its closed form. The BIT_XOR case only handled a constant trip count; for a variable count it bailed out, leaving loops like "for (i=0;i<n;i++) j ^= 1;" in place. Mask the invariant with that runtime parity to handle a variable count. A constant count folds as before. PR tree-optimization/112104 gcc/ChangeLog: * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect): Handle BIT_XOR_EXPR with a variable trip count. gcc/testsuite/ChangeLog: * gcc.target/i386/pr105735-1.c: Bump final value replacement count from 8 to 9. * gcc.target/i386/pr105735-3.c: Likewise. * gcc.dg/tree-ssa/pr112104-1.c: New test. * gcc.dg/tree-ssa/pr112104-2.c: New test. Signed-off-by: Eikansh Gupta <[email protected]>
