public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/107190] New: [aarch64] regression with optimization -fexpensive-optimizations
@ 2022-10-09 10:33 zhongyunde at huawei dot com
  2022-10-10 16:54 ` [Bug rtl-optimization/107190] " pinskia at gcc dot gnu.org
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: zhongyunde at huawei dot com @ 2022-10-09 10:33 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 107190
           Summary: [aarch64] regression with optimization
                    -fexpensive-optimizations
           Product: gcc
           Version: 13.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zhongyunde at huawei dot com
  Target Milestone: ---

This case is simplify from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107090,
and we can see that the codegen of function `test_m` has some regression with
optimization -fexpensive-optimizations, https://gcc.godbolt.org/z/zbKrEox4j

This is because the pass 208t.widening_mul is controlled by
-fexpensive-optimizations (default on at -O3), it conversion

```
  m_12 = m_9 + m1_10;
  if (m1_10 > m_12)
```
into

```
  _17 = .ADD_OVERFLOW (m_9, m1_10);
  m_12 = REALPART_EXPR <_17>;
  _18 = IMAGPART_EXPR <_17>;
  if (_18 != 0)``

```

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

* [Bug rtl-optimization/107190] [aarch64] regression with optimization -fexpensive-optimizations
  2022-10-09 10:33 [Bug c++/107190] New: [aarch64] regression with optimization -fexpensive-optimizations zhongyunde at huawei dot com
@ 2022-10-10 16:54 ` pinskia at gcc dot gnu.org
  2022-10-10 17:31 ` [Bug middle-end/107190] " pinskia at gcc dot gnu.org
  2023-05-19  1:22 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-10-10 16:54 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|c++                         |rtl-optimization

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to vfdff from comment #0)
> This case is simplify from
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107090, and we can see that the
> codegen of function `test_m` has some regression with optimization
> -fexpensive-optimizations, https://gcc.godbolt.org/z/zbKrEox4j
> 
> This is because the pass 208t.widening_mul is controlled by
> -fexpensive-optimizations (default on at -O3), it conversion
> 
> ```
>   m_12 = m_9 + m1_10;
>   if (m1_10 > m_12)
> ```
> into
> 
> ```
>   _17 = .ADD_OVERFLOW (m_9, m1_10);
>   m_12 = REALPART_EXPR <_17>;
>   _18 = IMAGPART_EXPR <_17>;
>   if (_18 != 0)``

This should always be better. If ifcvt.cc does not handle this case, then it
should be improved.

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

* [Bug middle-end/107190] [aarch64] regression with optimization -fexpensive-optimizations
  2022-10-09 10:33 [Bug c++/107190] New: [aarch64] regression with optimization -fexpensive-optimizations zhongyunde at huawei dot com
  2022-10-10 16:54 ` [Bug rtl-optimization/107190] " pinskia at gcc dot gnu.org
@ 2022-10-10 17:31 ` pinskia at gcc dot gnu.org
  2023-05-19  1:22 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2022-10-10 17:31 UTC (permalink / raw)
  To: gcc-bugs

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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|rtl-optimization            |middle-end

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
I think it is the expansion of the add with overflow causing things to be
worse.
(insn 16 15 17 (set (reg:DI 102 [ _17+8 ])
        (const_int 0 [0])) -1
     (nil))

(insn 17 16 18 (parallel [
            (set (reg:CC_C 66 cc)
                (compare:CC_C (plus:DI (reg:DI 109 [ m ])
                        (reg:DI 111 [ m1 ]))
                    (reg:DI 109 [ m ])))
            (set (reg:DI 112)
                (plus:DI (reg:DI 109 [ m ])
                    (reg:DI 111 [ m1 ])))
        ]) -1
     (nil))

(jump_insn 18 17 19 (set (pc)
        (if_then_else (ltu (reg:CC_C 66 cc)
                (const_int 0 [0]))
            (label_ref 21)
            (pc))) -1
     (int_list:REG_BR_PROB 536868 (nil)))

(jump_insn 19 18 20 (set (pc)
        (label_ref 23)) -1
     (nil))

(barrier 20 19 21)

(code_label 21 20 22 3 (nil) [0 uses])

(insn 22 21 23 (set (reg:DI 102 [ _17+8 ])
        (const_int 1 [0x1])) -1
     (nil))

(code_label 23 22 24 2 (nil) [0 uses])


I don't see why we need to expand to a jump here rather than a cset?
I think there is another bug about this already too.

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

* [Bug middle-end/107190] [aarch64] regression with optimization -fexpensive-optimizations
  2022-10-09 10:33 [Bug c++/107190] New: [aarch64] regression with optimization -fexpensive-optimizations zhongyunde at huawei dot com
  2022-10-10 16:54 ` [Bug rtl-optimization/107190] " pinskia at gcc dot gnu.org
  2022-10-10 17:31 ` [Bug middle-end/107190] " pinskia at gcc dot gnu.org
@ 2023-05-19  1:22 ` pinskia at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-05-19  1:22 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Created attachment 55113
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55113&action=edit
testcase

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

end of thread, other threads:[~2023-05-19  1:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-09 10:33 [Bug c++/107190] New: [aarch64] regression with optimization -fexpensive-optimizations zhongyunde at huawei dot com
2022-10-10 16:54 ` [Bug rtl-optimization/107190] " pinskia at gcc dot gnu.org
2022-10-10 17:31 ` [Bug middle-end/107190] " pinskia at gcc dot gnu.org
2023-05-19  1:22 ` 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).