public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked
@ 2022-09-27 15:24 pinskia at gcc dot gnu.org
2022-09-27 15:24 ` [Bug tree-optimization/107053] " pinskia at gcc dot gnu.org
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-09-27 15:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107053
Bug ID: 107053
Summary: ones bits is not tracked and popcount is not tracked
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: pinskia at gcc dot gnu.org
Target Milestone: ---
Take:
```
void link_failure();
void f(int a)
{
a |= 0x300;
int b = __builtin_popcount(a);
if (b < 3)
link_failure();
}
```
The if statement should be optimized away.
The reason is after the |, at least 3 bits are set in a.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/107053] ones bits is not tracked and popcount is not tracked
2022-09-27 15:24 [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked pinskia at gcc dot gnu.org
@ 2022-09-27 15:24 ` pinskia at gcc dot gnu.org
2022-09-27 15:33 ` aldyh at gcc dot gnu.org
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-09-27 15:24 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107053
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This testcase is not optimized by clang/llvm.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/107053] ones bits is not tracked and popcount is not tracked
2022-09-27 15:24 [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked pinskia at gcc dot gnu.org
2022-09-27 15:24 ` [Bug tree-optimization/107053] " pinskia at gcc dot gnu.org
@ 2022-09-27 15:33 ` aldyh at gcc dot gnu.org
2022-09-27 15:40 ` pinskia at gcc dot gnu.org
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: aldyh at gcc dot gnu.org @ 2022-09-27 15:33 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107053
Aldy Hernandez <aldyh at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Last reconfirmed| |2022-09-27
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/107053] ones bits is not tracked and popcount is not tracked
2022-09-27 15:24 [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked pinskia at gcc dot gnu.org
2022-09-27 15:24 ` [Bug tree-optimization/107053] " pinskia at gcc dot gnu.org
2022-09-27 15:33 ` aldyh at gcc dot gnu.org
@ 2022-09-27 15:40 ` pinskia at gcc dot gnu.org
2022-09-28 6:28 ` aldyh at gcc dot gnu.org
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-09-27 15:40 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107053
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Note the correct testcase is:
void link_failure();
void f(int a)
{
a |= 0x300;
int b = __builtin_popcount(a);
if (b < 2)
link_failure();
}
--- CUT ---
the range of b should be 2..31 (assuming int is 32bits).
With this change clang is able to optimize it.
For the original testcase I think it can be folded to:
void link_failure();
void f(int a)
{
int a1 &= ~0x300;
if (a1 != 0)
link_failure();
}
but that might be worse unless popcount can be removed. (If I did this
correctly).
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/107053] ones bits is not tracked and popcount is not tracked
2022-09-27 15:24 [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked pinskia at gcc dot gnu.org
` (2 preceding siblings ...)
2022-09-27 15:40 ` pinskia at gcc dot gnu.org
@ 2022-09-28 6:28 ` aldyh at gcc dot gnu.org
2023-07-12 21:16 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: aldyh at gcc dot gnu.org @ 2022-09-28 6:28 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107053
Aldy Hernandez <aldyh at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
See Also| |https://gcc.gnu.org/bugzill
| |a/show_bug.cgi?id=107043
CC| |amacleod at redhat dot com
--- Comment #3 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
This is a variant of PR107043 which I discuss in comment #3. We can't get this
because we don't track the or-mask, the known 1-bits.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/107053] ones bits is not tracked and popcount is not tracked
2022-09-27 15:24 [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked pinskia at gcc dot gnu.org
` (3 preceding siblings ...)
2022-09-28 6:28 ` aldyh at gcc dot gnu.org
@ 2023-07-12 21:16 ` cvs-commit at gcc dot gnu.org
2023-07-12 21:18 ` aldyh at gcc dot gnu.org
2023-07-12 21:56 ` pinskia at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-07-12 21:16 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107053
--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Aldy Hernandez <aldyh@gcc.gnu.org>:
https://gcc.gnu.org/g:137fb7077f7711e2e09ee8f82650fe7d93de6a4d
commit r14-2479-g137fb7077f7711e2e09ee8f82650fe7d93de6a4d
Author: Aldy Hernandez <aldyh@redhat.com>
Date: Fri Jun 30 20:40:02 2023 +0200
[range-op] Take known set bits into account in popcount [PR107053]
This patch teaches popcount about known set bits which are now
available in the irange.
PR tree-optimization/107053
gcc/ChangeLog:
* gimple-range-op.cc (cfn_popcount): Use known set bits.
gcc/testsuite/ChangeLog:
* gcc.dg/tree-ssa/pr107053.c: New test.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/107053] ones bits is not tracked and popcount is not tracked
2022-09-27 15:24 [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked pinskia at gcc dot gnu.org
` (4 preceding siblings ...)
2023-07-12 21:16 ` cvs-commit at gcc dot gnu.org
@ 2023-07-12 21:18 ` aldyh at gcc dot gnu.org
2023-07-12 21:56 ` pinskia at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: aldyh at gcc dot gnu.org @ 2023-07-12 21:18 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107053
Aldy Hernandez <aldyh at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #5 from Aldy Hernandez <aldyh at gcc dot gnu.org> ---
fixed in trunk
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/107053] ones bits is not tracked and popcount is not tracked
2022-09-27 15:24 [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked pinskia at gcc dot gnu.org
` (5 preceding siblings ...)
2023-07-12 21:18 ` aldyh at gcc dot gnu.org
@ 2023-07-12 21:56 ` pinskia at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-07-12 21:56 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107053
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |14.0
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-07-12 21:56 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-27 15:24 [Bug tree-optimization/107053] New: ones bits is not tracked and popcount is not tracked pinskia at gcc dot gnu.org
2022-09-27 15:24 ` [Bug tree-optimization/107053] " pinskia at gcc dot gnu.org
2022-09-27 15:33 ` aldyh at gcc dot gnu.org
2022-09-27 15:40 ` pinskia at gcc dot gnu.org
2022-09-28 6:28 ` aldyh at gcc dot gnu.org
2023-07-12 21:16 ` cvs-commit at gcc dot gnu.org
2023-07-12 21:18 ` aldyh at gcc dot gnu.org
2023-07-12 21:56 ` pinskia 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).