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).