public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not
@ 2020-08-18 19:21 gabravier at gmail dot com
2020-08-18 21:07 ` [Bug tree-optimization/96688] " gabravier at gmail dot com
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: gabravier at gmail dot com @ 2020-08-18 19:21 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688
Bug ID: 96688
Summary: Failure to optimize shift-right+not of constant to
avoid not
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: gabravier at gmail dot com
Target Milestone: ---
int f(int x)
{
return ~(123 >> x);
}
This return in this code can be optimized to `return ~123 >> x;`, and the same
optimization is possible where 123 is replaced by essentially any constant.
This transformation is done by LLVM, but not by GCC.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/96688] Failure to optimize shift-right+not of constant to avoid not
2020-08-18 19:21 [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not gabravier at gmail dot com
@ 2020-08-18 21:07 ` gabravier at gmail dot com
2020-08-25 10:51 ` [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not rguenth at gcc dot gnu.org
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: gabravier at gmail dot com @ 2020-08-18 21:07 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688
--- Comment #1 from Gabriel Ravier <gabravier at gmail dot com> ---
int f(int x)
{
return ~(x + 123);
}
A very similar optimization can be done with this, by converting this to
`return ~123 - x;` (and the constant can be swapped out with pretty much any
other constant here too).
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not
2020-08-18 19:21 [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not gabravier at gmail dot com
2020-08-18 21:07 ` [Bug tree-optimization/96688] " gabravier at gmail dot com
@ 2020-08-25 10:51 ` rguenth at gcc dot gnu.org
2021-01-13 16:49 ` jakub at gcc dot gnu.org
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2020-08-25 10:51 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Last reconfirmed| |2020-08-25
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. The small constants might be cheaper to code-gen though.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not
2020-08-18 19:21 [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not gabravier at gmail dot com
2020-08-18 21:07 ` [Bug tree-optimization/96688] " gabravier at gmail dot com
2020-08-25 10:51 ` [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not rguenth at gcc dot gnu.org
@ 2021-01-13 16:49 ` jakub at gcc dot gnu.org
2021-01-13 18:18 ` jakub at gcc dot gnu.org
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-01-13 16:49 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The #c1 case is optimized since
r11-5958-g0bd675183d94e6bca100c3aaaf87ee9676fb3c26 aka PR96685 changes.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not
2020-08-18 19:21 [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not gabravier at gmail dot com
` (2 preceding siblings ...)
2021-01-13 16:49 ` jakub at gcc dot gnu.org
@ 2021-01-13 18:18 ` jakub at gcc dot gnu.org
2021-01-14 11:51 ` cvs-commit at gcc dot gnu.org
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-01-13 18:18 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |jakub at gcc dot gnu.org
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 49960
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=49960&action=edit
gcc11-pr96688.patch
Untested fix for the right shifts.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not
2020-08-18 19:21 [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not gabravier at gmail dot com
` (3 preceding siblings ...)
2021-01-13 18:18 ` jakub at gcc dot gnu.org
@ 2021-01-14 11:51 ` cvs-commit at gcc dot gnu.org
2021-01-16 8:44 ` jakub at gcc dot gnu.org
2022-11-28 22:04 ` pinskia at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2021-01-14 11:51 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688
--- Comment #5 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:
https://gcc.gnu.org/g:8f8762a2e8659c1db802ba001869085c1915498f
commit r11-6663-g8f8762a2e8659c1db802ba001869085c1915498f
Author: Jakub Jelinek <jakub@redhat.com>
Date: Thu Jan 14 12:50:33 2021 +0100
match.pd: Optimize ~(X >> Y) to ~X >> Y if ~X can be simplified [PR96688]
This patch optimizes two GIMPLE operations into just one.
As mentioned in the PR, there is some risk this might create more expensive
constants, but sometimes it will make them on the other side less
expensive,
it really depends on the exact value.
And if it is an important issue, we should do it in md or during expansion.
2021-01-14 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/96688
* match.pd (~(X >> Y) -> ~X >> Y): New simplification if
~X can be simplified.
* gcc.dg/tree-ssa/pr96688.c: New test.
* gcc.dg/tree-ssa/reassoc-37.c: Adjust scan-tree-dump regex.
* gcc.target/i386/pr66821.c: Likewise.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not
2020-08-18 19:21 [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not gabravier at gmail dot com
` (4 preceding siblings ...)
2021-01-14 11:51 ` cvs-commit at gcc dot gnu.org
@ 2021-01-16 8:44 ` jakub at gcc dot gnu.org
2022-11-28 22:04 ` pinskia at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: jakub at gcc dot gnu.org @ 2021-01-16 8:44 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Status|ASSIGNED |RESOLVED
--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not
2020-08-18 19:21 [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not gabravier at gmail dot com
` (5 preceding siblings ...)
2021-01-16 8:44 ` jakub at gcc dot gnu.org
@ 2022-11-28 22:04 ` pinskia at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-11-28 22:04 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96688
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |11.0
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-11-28 22:04 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-18 19:21 [Bug tree-optimization/96688] New: Failure to optimize shift-right+not of constant to avoid not gabravier at gmail dot com
2020-08-18 21:07 ` [Bug tree-optimization/96688] " gabravier at gmail dot com
2020-08-25 10:51 ` [Bug tree-optimization/96688] Failure to optimize shift-right/add+bitwise not of constant to avoid bitwise not rguenth at gcc dot gnu.org
2021-01-13 16:49 ` jakub at gcc dot gnu.org
2021-01-13 18:18 ` jakub at gcc dot gnu.org
2021-01-14 11:51 ` cvs-commit at gcc dot gnu.org
2021-01-16 8:44 ` jakub at gcc dot gnu.org
2022-11-28 22:04 ` 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).