public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/105735] New: GCC failed to reduce &= loop_inv in loop.
@ 2022-05-26 7:54 crazylht at gmail dot com
2022-05-26 8:29 ` [Bug tree-optimization/105735] " pinskia at gcc dot gnu.org
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: crazylht at gmail dot com @ 2022-05-26 7:54 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105735
Bug ID: 105735
Summary: GCC failed to reduce &= loop_inv in loop.
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: crazylht at gmail dot com
Target Milestone: ---
This is another case from 47769, similar like 103462, but a little different.
unsigned long cfunc_one(unsigned long tmp, unsigned long bit2) {
for (unsigned long bit = 0; bit < 64; bit++) {
tmp &= bit2;
}
return tmp;
}
it should be equal to
unsigned long cfunc_one(unsigned long tmp, unsigned long bit2) {
tmp &= bit2;
return tmp;
}
but gcc generates a loop.
cfunc_one(unsigned long, unsigned long):
mov eax, 64
.L2:
and rdi, rsi
dec rax
jne .L2
mov rax, rdi
ret
Similar for |= and ^=.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/105735] GCC failed to reduce &= loop_inv in loop.
2022-05-26 7:54 [Bug tree-optimization/105735] New: GCC failed to reduce &= loop_inv in loop crazylht at gmail dot com
@ 2022-05-26 8:29 ` pinskia at gcc dot gnu.org
2022-09-20 6:36 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-05-26 8:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105735
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |DUPLICATE
Status|UNCONFIRMED |RESOLVED
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Actually this is a dup of bug 101991.
*** This bug has been marked as a duplicate of bug 101991 ***
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/105735] GCC failed to reduce &= loop_inv in loop.
2022-05-26 7:54 [Bug tree-optimization/105735] New: GCC failed to reduce &= loop_inv in loop crazylht at gmail dot com
2022-05-26 8:29 ` [Bug tree-optimization/105735] " pinskia at gcc dot gnu.org
@ 2022-09-20 6:36 ` cvs-commit at gcc dot gnu.org
2022-09-22 2:04 ` lingling.kong7 at gmail dot com
2023-11-14 1:28 ` cvs-commit at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2022-09-20 6:36 UTC (permalink / raw)
To: gcc-bugs
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 <konglin1@gcc.gnu.org>:
https://gcc.gnu.org/g:3a035f1932eeb26f997cf28a5c752617dd09cb91
commit r13-2729-g3a035f1932eeb26f997cf28a5c752617dd09cb91
Author: konglin1 <lingling.kong@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.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/105735] GCC failed to reduce &= loop_inv in loop.
2022-05-26 7:54 [Bug tree-optimization/105735] New: GCC failed to reduce &= loop_inv in loop crazylht at gmail dot com
2022-05-26 8:29 ` [Bug tree-optimization/105735] " pinskia at gcc dot gnu.org
2022-09-20 6:36 ` cvs-commit at gcc dot gnu.org
@ 2022-09-22 2:04 ` lingling.kong7 at gmail dot com
2023-11-14 1:28 ` cvs-commit at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: lingling.kong7 at gmail dot com @ 2022-09-22 2:04 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105735
kong lingling <lingling.kong7 at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |lingling.kong7 at gmail dot com
--- Comment #3 from kong lingling <lingling.kong7 at gmail dot com> ---
Fixed in gcc 13.0.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Bug tree-optimization/105735] GCC failed to reduce &= loop_inv in loop.
2022-05-26 7:54 [Bug tree-optimization/105735] New: GCC failed to reduce &= loop_inv in loop crazylht at gmail dot com
` (2 preceding siblings ...)
2022-09-22 2:04 ` lingling.kong7 at gmail dot com
@ 2023-11-14 1:28 ` cvs-commit at gcc dot gnu.org
3 siblings, 0 replies; 5+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-11-14 1:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105735
--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by hongtao Liu <liuhongt@gcc.gnu.org>:
https://gcc.gnu.org/g:fd1596f9962569afff6c9298a7c79686c6950bef
commit r14-5428-gfd1596f9962569afff6c9298a7c79686c6950bef
Author: liuhongt <hongtao.liu@intel.com>
Date: Mon Oct 30 15:43:48 2023 +0800
Handle bitop with INTEGER_CST in analyze_and_compute_bitop_with_inv_effect.
analyze_and_compute_bitop_with_inv_effect assumes the first operand is
loop invariant which is not the case when it's INTEGER_CST.
gcc/ChangeLog:
PR tree-optimization/105735
PR tree-optimization/111972
* tree-scalar-evolution.cc
(analyze_and_compute_bitop_with_inv_effect): Handle bitop with
INTEGER_CST.
gcc/testsuite/ChangeLog:
* gcc.target/i386/pr105735-3.c: New test.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-11-14 1:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-26 7:54 [Bug tree-optimization/105735] New: GCC failed to reduce &= loop_inv in loop crazylht at gmail dot com
2022-05-26 8:29 ` [Bug tree-optimization/105735] " pinskia at gcc dot gnu.org
2022-09-20 6:36 ` cvs-commit at gcc dot gnu.org
2022-09-22 2:04 ` lingling.kong7 at gmail dot com
2023-11-14 1:28 ` cvs-commit at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).