https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105735
--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Kong Lingling <kongl...@gcc.gnu.org>: https://gcc.gnu.org/g:3a035f1932eeb26f997cf28a5c752617dd09cb91 commit r13-2729-g3a035f1932eeb26f997cf28a5c752617dd09cb91 Author: konglin1 <lingling.k...@intel.com> Date: Tue Sep 20 13:58:35 2022 +0800 middle-end: handle bitop with an invariant induction.[PR105735] Enhance final_value_replacement_loop to handle bitop with an invariant induction. This patch will enable below optimization: { - long unsigned int bit; - - <bb 2> [local count: 32534376]: - - <bb 3> [local count: 1041207449]: - # tmp_10 = PHI <tmp_7(5), tmp_4(D)(2)> - # bit_12 = PHI <bit_8(5), 0(2)> - tmp_7 = bit2_6(D) & tmp_10; - bit_8 = bit_12 + 1; - if (bit_8 != 32) - goto <bb 5>; [96.97%] - else - goto <bb 4>; [3.03%] - - <bb 5> [local count: 1009658865]: - goto <bb 3>; [100.00%] - - <bb 4> [local count: 32534376]: - # tmp_11 = PHI <tmp_7(3)> - return tmp_11; + tmp_11 = tmp_4 (D) & bit2_6 (D); + return tmp_11; } gcc/ChangeLog: PR middle-end/105735 * tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect): New function. (final_value_replacement_loop): Enhanced to handle bitop with inv induction. gcc/testsuite/ChangeLog: * gcc.target/i386/pr105735-1.c: New test. * gcc.target/i386/pr105735-2.c: New test.