]> gcc.gnu.org Git - gcc.git/commit
middle-end: handle bitop with an invariant induction.[PR105735]
authorkonglin1 <lingling.kong@intel.com>
Tue, 20 Sep 2022 05:58:35 +0000 (13:58 +0800)
committerkonglin1 <lingling.kong@intel.com>
Tue, 20 Sep 2022 06:09:19 +0000 (14:09 +0800)
commit3a035f1932eeb26f997cf28a5c752617dd09cb91
tree3d3f6a6e8da0fb99e414cee20b0cd1cb04b27cd5
parent90d3e27f3a6add0cd6892bdf07c6a2538bb709e4
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.
gcc/testsuite/gcc.target/i386/pr105735-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr105735-2.c [new file with mode: 0644]
gcc/tree-scalar-evolution.cc
This page took 0.069568 seconds and 6 git commands to generate.