https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103462

--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by hongtao Liu <liuho...@gcc.gnu.org>:

https://gcc.gnu.org/g:9d1336d977cf0cab75679d4b4170e7c9a86cd1f4

commit r13-583-g9d1336d977cf0cab75679d4b4170e7c9a86cd1f4
Author: liuhongt <hongtao....@intel.com>
Date:   Tue Dec 7 15:41:52 2021 +0800

    Enhance final_value_replacement_loop to handle bitwise induction.

    This patch will enable below optimization:

     {
    -  int bit;
    -  long long unsigned int _1;
    -  long long unsigned int _2;
    -
       <bb 2> [local count: 46707768]:
    -
    -  <bb 3> [local count: 1027034057]:
    -  # tmp_11 = PHI <tmp_8(3), tmp_6(D)(2)>
    -  # bit_13 = PHI <bit_9(3), 63(2)>
    -  _1 = 1 << bit_13;
    -  _2 = ~_1;
    -  tmp_8 = _2 & tmp_11;
    -  bit_9 = bit_13 + -3;
    -  if (bit_9 != -3(OVF))
    -    goto <bb 3>; [95.65%]
    -  else
    -    goto <bb 4>; [4.35%]
    -
    -  <bb 4> [local count: 46707768]:
    -  return tmp_8;
    +  tmp_12 = tmp_6(D) & 7905747460161236406;
    +  return tmp_12;

     }

    gcc/ChangeLog:

            PR middle-end/103462
            * match.pd (bitwise_induction_p): New match.
            * tree-scalar-evolution.cc (gimple_bitwise_induction_p):
            Declare.
            (analyze_and_compute_bitwise_induction_effect): New function.
            (enum bit_op_kind): New enum.
            (final_value_replacement_loop): Enhanced to handle bitwise
            induction.

    gcc/testsuite/ChangeLog:

            * gcc.target/i386/pr103462-1.c: New test.
            * gcc.target/i386/pr103462-2.c: New test.
            * gcc.target/i386/pr103462-3.c: New test.
            * gcc.target/i386/pr103462-4.c: New test.
            * gcc.target/i386/pr103462-5.c: New test.
            * gcc.target/i386/pr103462-6.c: New test.
  • [Bug tree-optimization/103462] ... cvs-commit at gcc dot gnu.org via Gcc-bugs

Reply via email to