public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/94921] New: Failure to optimize nots with sub into single add
@ 2020-05-02 12:39 gabravier at gmail dot com
  2020-05-02 13:09 ` [Bug tree-optimization/94921] " glisse at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: gabravier at gmail dot com @ 2020-05-02 12:39 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94921

            Bug ID: 94921
           Summary: Failure to optimize nots with sub into single add
           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, int y)
{
    return ~(~x - y);
}

This can be optimized to `x - y`. This transformation is done by LLVM, but not
by GCC

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/94921] Failure to optimize nots with sub into single add
  2020-05-02 12:39 [Bug tree-optimization/94921] New: Failure to optimize nots with sub into single add gabravier at gmail dot com
@ 2020-05-02 13:09 ` glisse at gcc dot gnu.org
  2020-05-04  8:44 ` ubizjak at gmail dot com
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: glisse at gcc dot gnu.org @ 2020-05-02 13:09 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94921

--- Comment #1 from Marc Glisse <glisse at gcc dot gnu.org> ---
x + y ?

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/94921] Failure to optimize nots with sub into single add
  2020-05-02 12:39 [Bug tree-optimization/94921] New: Failure to optimize nots with sub into single add gabravier at gmail dot com
  2020-05-02 13:09 ` [Bug tree-optimization/94921] " glisse at gcc dot gnu.org
@ 2020-05-04  8:44 ` ubizjak at gmail dot com
  2020-05-05 11:44 ` jakub at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: ubizjak at gmail dot com @ 2020-05-04  8:44 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94921

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2020-05-04
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #2 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Marc Glisse from comment #1)
> x + y ?

Correct.

llvm:

        leal    (%rdi,%rsi), %eax
        retq

gcc:

        notl    %edi
        subl    %esi, %edi
        movl    %edi, %eax
        notl    %eax
        ret

Confirmed, looks like a job for a tree combiner.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/94921] Failure to optimize nots with sub into single add
  2020-05-02 12:39 [Bug tree-optimization/94921] New: Failure to optimize nots with sub into single add gabravier at gmail dot com
  2020-05-02 13:09 ` [Bug tree-optimization/94921] " glisse at gcc dot gnu.org
  2020-05-04  8:44 ` ubizjak at gmail dot com
@ 2020-05-05 11:44 ` jakub at gcc dot gnu.org
  2020-05-05 15:07 ` jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2020-05-05 11:44 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94921

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org
             Status|NEW                         |ASSIGNED

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/94921] Failure to optimize nots with sub into single add
  2020-05-02 12:39 [Bug tree-optimization/94921] New: Failure to optimize nots with sub into single add gabravier at gmail dot com
                   ` (2 preceding siblings ...)
  2020-05-05 11:44 ` jakub at gcc dot gnu.org
@ 2020-05-05 15:07 ` jakub at gcc dot gnu.org
  2020-05-06  9:20 ` cvs-commit at gcc dot gnu.org
  2020-05-06  9:22 ` jakub at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2020-05-05 15:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94921

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 48453
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48453&action=edit
gcc11-pr94921.patch

Untested fix.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/94921] Failure to optimize nots with sub into single add
  2020-05-02 12:39 [Bug tree-optimization/94921] New: Failure to optimize nots with sub into single add gabravier at gmail dot com
                   ` (3 preceding siblings ...)
  2020-05-05 15:07 ` jakub at gcc dot gnu.org
@ 2020-05-06  9:20 ` cvs-commit at gcc dot gnu.org
  2020-05-06  9:22 ` jakub at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2020-05-06  9:20 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94921

--- Comment #4 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:a7b76d574b19190da190a60c065f347f40bab59e

commit r11-132-ga7b76d574b19190da190a60c065f347f40bab59e
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed May 6 11:20:20 2020 +0200

    match.pd: Optimize ~(~X +- Y) into (X -+ Y) [PR94921]

    According to my verification proglet, this transformation for signed types
    with undefined overflow doesn't introduce nor remove any UB cases, so
should
    be valid even for signed integral types.
    Not using a for because of the :c on plus which can't be there on minus.

    2020-05-06  Jakub Jelinek  <jakub@redhat.com>

            PR tree-optimization/94921
            * match.pd (~(~X - Y) -> X + Y, ~(~X + Y) -> X - Y): New
            simplifications.

            * gcc.dg/tree-ssa/pr94921.c: New test.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug tree-optimization/94921] Failure to optimize nots with sub into single add
  2020-05-02 12:39 [Bug tree-optimization/94921] New: Failure to optimize nots with sub into single add gabravier at gmail dot com
                   ` (4 preceding siblings ...)
  2020-05-06  9:20 ` cvs-commit at gcc dot gnu.org
@ 2020-05-06  9:22 ` jakub at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2020-05-06  9:22 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94921

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|ASSIGNED                    |RESOLVED

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed for 11+.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-05-06  9:22 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-02 12:39 [Bug tree-optimization/94921] New: Failure to optimize nots with sub into single add gabravier at gmail dot com
2020-05-02 13:09 ` [Bug tree-optimization/94921] " glisse at gcc dot gnu.org
2020-05-04  8:44 ` ubizjak at gmail dot com
2020-05-05 11:44 ` jakub at gcc dot gnu.org
2020-05-05 15:07 ` jakub at gcc dot gnu.org
2020-05-06  9:20 ` cvs-commit at gcc dot gnu.org
2020-05-06  9:22 ` jakub 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).