public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions
@ 2014-12-02 13:54 hjl.tools at gmail dot com
  2014-12-02 14:15 ` [Bug rtl-optimization/64151] [5 Regression] r218266 caused " rguenth at gcc dot gnu.org
                   ` (7 more replies)
  0 siblings, 8 replies; 9+ messages in thread
From: hjl.tools at gmail dot com @ 2014-12-02 13:54 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 64151
           Summary: [5 Regression] r2182676caused many regressions
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hjl.tools at gmail dot com
                CC: wdijkstr at arm dot com
            Target: i686-linux

On Linux/i686, r218266 caused:

FAIL: gcc.dg/hoist-register-pressure-3.c scan-rtl-dump hoist "PRE/HOIST: end of
bb .* copying expression"
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O1 -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O1 -mforce-drap -fpic execution
test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O2 -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O2 -mforce-drap -fpic execution
test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O3 -fomit-frame-pointer -fpic
execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O3 -fomit-frame-pointer
-funroll-loops -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O3 -fomit-frame-pointer
-funroll-loops -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O3 -fomit-frame-pointer
-mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O3 -g -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -O3 -g -mforce-drap -fpic
execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -Os -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-1.c   -Os -mforce-drap -fpic execution
test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O1 -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O1 -mforce-drap -fpic execution
test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O2 -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O2 -mforce-drap -fpic execution
test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O3 -fomit-frame-pointer -fpic
execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O3 -fomit-frame-pointer
-funroll-loops -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O3 -fomit-frame-pointer
-funroll-loops -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O3 -fomit-frame-pointer
-mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O3 -g -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -O3 -g -mforce-drap -fpic
execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -Os -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-3.c   -Os -mforce-drap -fpic execution
test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O1 -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O1 -mforce-drap -fpic execution
test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O2 -flto -fno-use-linker-plugin
-flto-partition=none -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O2 -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O2 -mforce-drap -fpic execution
test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O3 -fomit-frame-pointer -fpic
execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O3 -fomit-frame-pointer
-funroll-all-loops -finline-functions -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O3 -fomit-frame-pointer
-funroll-loops -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O3 -fomit-frame-pointer
-funroll-loops -mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O3 -fomit-frame-pointer
-mforce-drap -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O3 -g -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -O3 -g -mforce-drap -fpic
execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -Os -fpic execution test
FAIL: gcc.dg/torture/stackalign/setjmp-4.c   -Os -mforce-drap -fpic execution
test
FAIL: gcc.target/i386/ifcvt-onecmpl-abs-1.c scan-assembler cltd
FAIL: gcc.target/i386/pr63527.c scan-assembler-not movl[ \t]%[^,]+, %ebx
FAIL: g++.dg/asan/asan_test.C   -O2  AddressSanitizer_BuiltinLongJmpTest
execution test

when GCC is configured with

--with-arch=corei7 --with-cpu=intel --prefix=/usr/5.0.0 --enable-clocale=gnu
--with-system-zlib --enable-shared --with-demangler-in-ld i686-linux
--with-fpmath=sse --enable-languages=c,c++,fortran,java,lto,objc


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

* [Bug rtl-optimization/64151] [5 Regression] r218266 caused many regressions
  2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
@ 2014-12-02 14:15 ` rguenth at gcc dot gnu.org
  2014-12-02 14:43 ` hjl.tools at gmail dot com
                   ` (6 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-12-02 14:15 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
           Priority|P3                          |P1
   Target Milestone|---                         |5.0


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

* [Bug rtl-optimization/64151] [5 Regression] r218266 caused many regressions
  2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
  2014-12-02 14:15 ` [Bug rtl-optimization/64151] [5 Regression] r218266 caused " rguenth at gcc dot gnu.org
@ 2014-12-02 14:43 ` hjl.tools at gmail dot com
  2014-12-02 21:22 ` wdijkstr at arm dot com
                   ` (5 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: hjl.tools at gmail dot com @ 2014-12-02 14:43 UTC (permalink / raw)
  To: gcc-bugs

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

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-12-02
     Ever confirmed|0                           |1

--- Comment #1 from H.J. Lu <hjl.tools at gmail dot com> ---
Revert the reg_class change:

diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 72c00cc..16fd6e8 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -1466,7 +1466,7 @@ scan_one_insn (rtx_insn *insn)
         && REG_N_SETS (REGNO (SET_DEST (set))) == 1))
       && general_operand (SET_SRC (set), GET_MODE (SET_SRC (set))))
     {
-      enum reg_class cl = ALL_REGS;
+      enum reg_class cl = GENERAL_REGS;
       rtx reg = SET_DEST (set);
       int num = COST_INDEX (REGNO (reg));

fixes those regressions.


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

* [Bug rtl-optimization/64151] [5 Regression] r218266 caused many regressions
  2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
  2014-12-02 14:15 ` [Bug rtl-optimization/64151] [5 Regression] r218266 caused " rguenth at gcc dot gnu.org
  2014-12-02 14:43 ` hjl.tools at gmail dot com
@ 2014-12-02 21:22 ` wdijkstr at arm dot com
  2014-12-02 21:33 ` trippels at gcc dot gnu.org
                   ` (4 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: wdijkstr at arm dot com @ 2014-12-02 21:22 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Wilco <wdijkstr at arm dot com> ---
(In reply to H.J. Lu from comment #1)
> Revert the reg_class change:
> 
> diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
> index 72c00cc..16fd6e8 100644
> --- a/gcc/ira-costs.c
> +++ b/gcc/ira-costs.c
> @@ -1466,7 +1466,7 @@ scan_one_insn (rtx_insn *insn)
>          && REG_N_SETS (REGNO (SET_DEST (set))) == 1))
>        && general_operand (SET_SRC (set), GET_MODE (SET_SRC (set))))
>      {
> -      enum reg_class cl = ALL_REGS;
> +      enum reg_class cl = GENERAL_REGS;
>        rtx reg = SET_DEST (set);
>        int num = COST_INDEX (REGNO (reg));
> 
> fixes those regressions.

Confirmed. The intention of this code is to account for reduced memory cost of
constant loads - when they spill they do not need a store, but can be trivially
rematerialized. What happens is that memory_move_cost returns 100 for certain
cases on x86. With ALL_REGS the mem_cost then becomes very negative as it is
not clamped to zero and this forces the register allocator to spill. This is
bad as __builtin_longjmp on x86 loads EBP/ESP directly via 2 separate
instructions which means reload *may* insert spill code inbetween. So if the
base register is spilled and reloaded via EBP, it corrupts ESP:

        movl    -4(%ebp), %edx
        movl    (%edx), %ebp     * restore EBP
        movl    -4(%ebp), %ecx   * oops, this uses a different EBP
        movl    8(%ecx), %esp
        jmp     *%eax

I think there are cases where reload just gives up and inserts dumb spill code
(ie. one reload per use), which means this issue can happen under other
circumstances as well.

It appears ALL_REGS works for x86 and avoids the regression, however this is
not correct either for FP or SIMD registers which would get 100 and then get
spilled.


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

* [Bug rtl-optimization/64151] [5 Regression] r218266 caused many regressions
  2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
                   ` (2 preceding siblings ...)
  2014-12-02 21:22 ` wdijkstr at arm dot com
@ 2014-12-02 21:33 ` trippels at gcc dot gnu.org
  2014-12-03 12:32 ` izamyatin at gmail dot com
                   ` (3 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-12-02 21:33 UTC (permalink / raw)
  To: gcc-bugs

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

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |trippels at gcc dot gnu.org

--- Comment #3 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
See also PR64156 for the same issue on ppc64.


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

* [Bug rtl-optimization/64151] [5 Regression] r218266 caused many regressions
  2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
                   ` (3 preceding siblings ...)
  2014-12-02 21:33 ` trippels at gcc dot gnu.org
@ 2014-12-03 12:32 ` izamyatin at gmail dot com
  2014-12-03 13:17 ` hjl at gcc dot gnu.org
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 9+ messages in thread
From: izamyatin at gmail dot com @ 2014-12-03 12:32 UTC (permalink / raw)
  To: gcc-bugs

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

Igor Zamyatin <izamyatin at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |izamyatin at gmail dot com

--- Comment #4 from Igor Zamyatin <izamyatin at gmail dot com> ---
I also see ~5% regression on eg spec2006/456.hmmer for i686 with -O3


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

* [Bug rtl-optimization/64151] [5 Regression] r218266 caused many regressions
  2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
                   ` (4 preceding siblings ...)
  2014-12-03 12:32 ` izamyatin at gmail dot com
@ 2014-12-03 13:17 ` hjl at gcc dot gnu.org
  2014-12-03 13:20 ` hjl.tools at gmail dot com
  2014-12-09 16:22 ` wdijkstr at arm dot com
  7 siblings, 0 replies; 9+ messages in thread
From: hjl at gcc dot gnu.org @ 2014-12-03 13:17 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from hjl at gcc dot gnu.org <hjl at gcc dot gnu.org> ---
Author: hjl
Date: Wed Dec  3 13:16:25 2014
New Revision: 218312

URL: https://gcc.gnu.org/viewcvs?rev=218312&root=gcc&view=rev
Log:
Revert r218266

gcc/

    PR rtl-optimization/64151
    PR rtl-optimization/64156
    * ira-costs.c (scan_one_insn): Revert r218266.

gcc/testsuite/

    PR rtl-optimization/64151
    PR rtl-optimization/64156
    * gcc.target/aarch64/remat1.c: Removed.  Revert r218267.

Removed:
    trunk/gcc/testsuite/gcc.target/aarch64/remat1.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ira-costs.c
    trunk/gcc/testsuite/ChangeLog


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

* [Bug rtl-optimization/64151] [5 Regression] r218266 caused many regressions
  2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
                   ` (5 preceding siblings ...)
  2014-12-03 13:17 ` hjl at gcc dot gnu.org
@ 2014-12-03 13:20 ` hjl.tools at gmail dot com
  2014-12-09 16:22 ` wdijkstr at arm dot com
  7 siblings, 0 replies; 9+ messages in thread
From: hjl.tools at gmail dot com @ 2014-12-03 13:20 UTC (permalink / raw)
  To: gcc-bugs

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

H.J. Lu <hjl.tools at gmail dot com> changed:

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

--- Comment #6 from H.J. Lu <hjl.tools at gmail dot com> ---
Fixed.


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

* [Bug rtl-optimization/64151] [5 Regression] r218266 caused many regressions
  2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
                   ` (6 preceding siblings ...)
  2014-12-03 13:20 ` hjl.tools at gmail dot com
@ 2014-12-09 16:22 ` wdijkstr at arm dot com
  7 siblings, 0 replies; 9+ messages in thread
From: wdijkstr at arm dot com @ 2014-12-09 16:22 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Wilco <wdijkstr at arm dot com> ---
See PR rtl-optimization/64242 for the longjmp issue on i386.


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

end of thread, other threads:[~2014-12-09 16:22 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-02 13:54 [Bug rtl-optimization/64151] New: [5 Regression] r2182676caused many regressions hjl.tools at gmail dot com
2014-12-02 14:15 ` [Bug rtl-optimization/64151] [5 Regression] r218266 caused " rguenth at gcc dot gnu.org
2014-12-02 14:43 ` hjl.tools at gmail dot com
2014-12-02 21:22 ` wdijkstr at arm dot com
2014-12-02 21:33 ` trippels at gcc dot gnu.org
2014-12-03 12:32 ` izamyatin at gmail dot com
2014-12-03 13:17 ` hjl at gcc dot gnu.org
2014-12-03 13:20 ` hjl.tools at gmail dot com
2014-12-09 16:22 ` wdijkstr at arm dot com

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