public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/57131] New: Wong register assignment?
@ 2013-05-01 6:02 ishiura-compiler at ml dot kwansei.ac.jp
2013-05-01 6:44 ` [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong " jakub at gcc dot gnu.org
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: ishiura-compiler at ml dot kwansei.ac.jp @ 2013-05-01 6:02 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57131
Bug #: 57131
Summary: Wong register assignment?
Classification: Unclassified
Product: gcc
Version: 4.8.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: ishiura-compiler@ml.kwansei.ac.jp
This miscompile occurs only on 32bit x86 (i686) target of GCC 4.8.1
(prerelease).
(There is no problem with x86_64 target or GCC 4.7.3.)
A dubious option is "-foptimize-register-move."
$ cat error.c
int main (void)
{
volatile int x1 = 0;
volatile long long x2 = 0;
volatile int x3 = 0;
volatile int x4 = 1;
volatile int x5 = 1;
volatile long long x6 = 1;
long long t = ( ( x1 * ( x2 << x3 ) ) / (x4 * x5) ) + x6 ;
return (t == 1);
}
$ i686-pc-linux-gnu-gcc-4.8.1 error.c -O1 -fexpensive-optimizations
-foptimize-register-move
$ ./a.out
Floating point exception (core dumped)
-----
$ i686-pc-linux-gnu-gcc-4.8.1 -v
Using built-in specs.
COLLECT_GCC=i686-pc-linux-gnu-gcc-4.8.1
COLLECT_LTO_WRAPPER=/usr/local/i686-tools/gcc-4.8.1/libexec/gcc/i686-pc-linux-gnu/4.8.1/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: /home/hassy-i686-linux/gcc/configure
--prefix=/usr/local/i686-tools/gcc-4.8.1/
--with-gmp=/usr/local/gmp-5.1.1/ --with-mpfr=/usr/local/mpfr-3.1.2/
--with-mpc=/usr/local/mpc-1.0.1/ --disable-multilib --disable-nls
--enable-languages=c
Thread model: posix
gcc version 4.8.1 20130428 (prerelease) (GCC)
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong register assignment?
2013-05-01 6:02 [Bug rtl-optimization/57131] New: Wong register assignment? ishiura-compiler at ml dot kwansei.ac.jp
@ 2013-05-01 6:44 ` jakub at gcc dot gnu.org
2013-05-01 7:39 ` jakub at gcc dot gnu.org
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-05-01 6:44 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57131
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-05-01
CC| |jakub at gcc dot gnu.org
Target Milestone|--- |4.8.1
Summary|Wong register assignment? |[4.8/4.9 Regression] Wrong
| |register assignment?
Ever Confirmed|0 |1
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-05-01 06:44:04 UTC ---
Started with http://gcc.gnu.org/PR196090
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong register assignment?
2013-05-01 6:02 [Bug rtl-optimization/57131] New: Wong register assignment? ishiura-compiler at ml dot kwansei.ac.jp
2013-05-01 6:44 ` [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong " jakub at gcc dot gnu.org
@ 2013-05-01 7:39 ` jakub at gcc dot gnu.org
2013-05-02 3:03 ` vmakarov at redhat dot com
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-05-01 7:39 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57131
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vmakarov at gcc dot gnu.org
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-05-01 07:39:41 UTC ---
Apparently went away with the http://gcc.gnu.org/r198432 fix, but it isn't
clear whether that change was meant to fix this or just made the bug latent.
Anyway, still reproduceable on the 4.8 branch.
What I'm seeing before that change is that extendsidi2_1 pattern with MEM
destination LRA chooses %ebx as (clobber (scratch:SI)) register, eventhough
%ebx
is live across that instruction (there is
(insn 14 74 68 2 (set (reg:SI 3 bx [orig:83 D.1395 ] [83])
(mem/v/c:SI (plus:SI (reg/f:SI 7 sp)
(const_int 72 [0x48])) [0 x4+0 S4 A64])) pr57131.c:11 85
{*movsi_internal}
(nil))
(insn 68 14 73 2 (set (reg:SI 3 bx [orig:83 D.1395 ] [83])
(reg:SI 3 bx [orig:83 D.1395 ] [83])) pr57131.c:11 85 {*movsi_internal}
(expr_list:REG_DEAD (reg:SI 3 bx [orig:83 D.1395 ] [83])
(nil)))
some insns before it and:
(insn 65 24 26 2 (set (reg:SI 5 di [orig:83 D.1395 ] [83])
(reg:SI 3 bx [orig:83 D.1395 ] [83])) pr57131.c:11 85 {*movsi_internal}
(expr_list:REG_DEAD (reg:SI 3 bx [orig:83 D.1395 ] [83])
(nil)))
some insns after it. Not sure if the noop move with REG_DEAD has anything to
do with that. Vlad, can you please have a look?
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong register assignment?
2013-05-01 6:02 [Bug rtl-optimization/57131] New: Wong register assignment? ishiura-compiler at ml dot kwansei.ac.jp
2013-05-01 6:44 ` [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong " jakub at gcc dot gnu.org
2013-05-01 7:39 ` jakub at gcc dot gnu.org
@ 2013-05-02 3:03 ` vmakarov at redhat dot com
2013-05-02 3:16 ` pinskia at gcc dot gnu.org
2013-05-02 19:26 ` jakub at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: vmakarov at redhat dot com @ 2013-05-02 3:03 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57131
Vladimir Makarov <vmakarov at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vmakarov at redhat dot com
--- Comment #3 from Vladimir Makarov <vmakarov at redhat dot com> 2013-05-02 03:03:34 UTC ---
(In reply to comment #2)
> Apparently went away with the http://gcc.gnu.org/r198432 fix, but it isn't
> clear whether that change was meant to fix this or just made the bug latent.
> Anyway, still reproduceable on the 4.8 branch.
> What I'm seeing before that change is that extendsidi2_1 pattern with MEM
> destination LRA chooses %ebx as (clobber (scratch:SI)) register, eventhough
> %ebx
> is live across that instruction (there is
> (insn 14 74 68 2 (set (reg:SI 3 bx [orig:83 D.1395 ] [83])
> (mem/v/c:SI (plus:SI (reg/f:SI 7 sp)
> (const_int 72 [0x48])) [0 x4+0 S4 A64])) pr57131.c:11 85
> {*movsi_internal}
> (nil))
> (insn 68 14 73 2 (set (reg:SI 3 bx [orig:83 D.1395 ] [83])
> (reg:SI 3 bx [orig:83 D.1395 ] [83])) pr57131.c:11 85 {*movsi_internal}
> (expr_list:REG_DEAD (reg:SI 3 bx [orig:83 D.1395 ] [83])
> (nil)))
> some insns before it and:
> (insn 65 24 26 2 (set (reg:SI 5 di [orig:83 D.1395 ] [83])
> (reg:SI 3 bx [orig:83 D.1395 ] [83])) pr57131.c:11 85 {*movsi_internal}
> (expr_list:REG_DEAD (reg:SI 3 bx [orig:83 D.1395 ] [83])
> (nil)))
> some insns after it. Not sure if the noop move with REG_DEAD has anything to
> do with that. Vlad, can you please have a look?
http://gcc.gnu.org/r198432 was a right solution for this bug. LRA don't pay
attention to NO_REGS pseudos during assignment although ebx was assigned to
NO_REGS r95 (which is reflected in reg_renumber).
At some points of LRA work reg notes can be invalid. LRA makes them up to date
after live subpass (lra-lives.c). It needs only correct live info on bb
borders.
So I'd close this PR.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong register assignment?
2013-05-01 6:02 [Bug rtl-optimization/57131] New: Wong register assignment? ishiura-compiler at ml dot kwansei.ac.jp
` (2 preceding siblings ...)
2013-05-02 3:03 ` vmakarov at redhat dot com
@ 2013-05-02 3:16 ` pinskia at gcc dot gnu.org
2013-05-02 19:26 ` jakub at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu.org @ 2013-05-02 3:16 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57131
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |DUPLICATE
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> 2013-05-02 03:16:35 UTC ---
(In reply to comment #3)
> So I'd close this PR.
Done as a dup of bug 57097.
*** This bug has been marked as a duplicate of bug 57097 ***
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong register assignment?
2013-05-01 6:02 [Bug rtl-optimization/57131] New: Wong register assignment? ishiura-compiler at ml dot kwansei.ac.jp
` (3 preceding siblings ...)
2013-05-02 3:16 ` pinskia at gcc dot gnu.org
@ 2013-05-02 19:26 ` jakub at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-05-02 19:26 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57131
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-05-02 19:26:38 UTC ---
Author: jakub
Date: Thu May 2 06:00:46 2013
New Revision: 198511
URL: http://gcc.gnu.org/viewcvs?rev=198511&root=gcc&view=rev
Log:
PR rtl-optimization/57131
* gcc.c-torture/execute/pr57131.c: New test.
Added:
trunk/gcc/testsuite/gcc.c-torture/execute/pr57131.c
Modified:
trunk/gcc/testsuite/ChangeLog
Author: jakub
Date: Thu May 2 19:25:34 2013
New Revision: 198560
URL: http://gcc.gnu.org/viewcvs?rev=198560&root=gcc&view=rev
Log:
PR rtl-optimization/57131
* gcc.c-torture/execute/pr57131.c: New test.
Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.c-torture/execute/pr57131.c
Modified:
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-05-02 19:26 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-01 6:02 [Bug rtl-optimization/57131] New: Wong register assignment? ishiura-compiler at ml dot kwansei.ac.jp
2013-05-01 6:44 ` [Bug rtl-optimization/57131] [4.8/4.9 Regression] Wrong " jakub at gcc dot gnu.org
2013-05-01 7:39 ` jakub at gcc dot gnu.org
2013-05-02 3:03 ` vmakarov at redhat dot com
2013-05-02 3:16 ` pinskia at gcc dot gnu.org
2013-05-02 19:26 ` 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).