public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode
@ 2013-10-16 22:00 su at cs dot ucdavis.edu
2013-10-17 8:46 ` [Bug tree-optimization/58759] [4.9 Regression] " mpolacek at gcc dot gnu.org
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: su at cs dot ucdavis.edu @ 2013-10-16 22:00 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58759
Bug ID: 58759
Summary: wrong code (segfaults) at -O2 on x86_64-linux-gnu in
32-bit mode
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: su at cs dot ucdavis.edu
The current gcc trunk miscompiles the following code on x86_64-linux at -O2 in
32-bit mode.
This is a regression from 4.8.x.
$ gcc-trunk -v
Using built-in specs.
COLLECT_GCC=gcc-trunk
COLLECT_LTO_WRAPPER=/usr/local/gcc-trunk/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-trunk/configure
--enable-languages=c,c++,objc,obj-c++,fortran,lto --disable-werror
--enable-checking=release --with-gmp=/usr/local/gcc-trunk
--with-mpfr=/usr/local/gcc-trunk --with-mpc=/usr/local/gcc-trunk
--with-cloog=/usr/local/gcc-trunk --prefix=/usr/local/gcc-trunk
Thread model: posix
gcc version 4.9.0 20131016 (experimental) [trunk revision 203716] (GCC)
$
$ gcc-trunk -m32 -Os small.c; a.out
$ gcc-trunk -m32 -O3 small.c; a.out
$ gcc-trunk -m64 -O2 small.c; a.out
$
$ gcc-trunk -m32 -O2 small.c; a.out
Segmentation fault (core dumped)
$
$ gcc-4.8 -m32 -O2 small.c; a.out
$
-------------------------------------------
int a, b, c, d, e, f, h, l, m, n, k, o;
long long g;
struct S
{
int f1;
int f2;
int f3;
int f4;
};
static struct S i = {0,0,0,0}, j;
void
foo ()
{
m = 1 & d;
n = b + c;
o = k >> 1;
f = 0 == e;
}
int
main ()
{
for (; h < 1; h++)
{
g = 1 | (0 > 1 - a ? 0 : a);
foo ();
for (l = 0; l < 3; l++)
j = i;
}
return 0;
}
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/58759] [4.9 Regression] wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode
2013-10-16 22:00 [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode su at cs dot ucdavis.edu
@ 2013-10-17 8:46 ` mpolacek at gcc dot gnu.org
2013-10-17 14:31 ` [Bug rtl-optimization/58759] " mpolacek at gcc dot gnu.org
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2013-10-17 8:46 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58759
Marek Polacek <mpolacek at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-10-17
CC| |mpolacek at gcc dot gnu.org
Target Milestone|--- |4.9.0
Summary|wrong code (segfaults) at |[4.9 Regression] wrong code
|-O2 on x86_64-linux-gnu in |(segfaults) at -O2 on
|32-bit mode |x86_64-linux-gnu in 32-bit
| |mode
Ever confirmed|0 |1
--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Confirmed.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug rtl-optimization/58759] [4.9 Regression] wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode
2013-10-16 22:00 [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode su at cs dot ucdavis.edu
2013-10-17 8:46 ` [Bug tree-optimization/58759] [4.9 Regression] " mpolacek at gcc dot gnu.org
@ 2013-10-17 14:31 ` mpolacek at gcc dot gnu.org
2013-10-20 15:08 ` mikpelinux at gmail dot com
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2013-10-17 14:31 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58759
--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Seem to be RTL cprop, more specifically, local_cprop_pass.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug rtl-optimization/58759] [4.9 Regression] wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode
2013-10-16 22:00 [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode su at cs dot ucdavis.edu
2013-10-17 8:46 ` [Bug tree-optimization/58759] [4.9 Regression] " mpolacek at gcc dot gnu.org
2013-10-17 14:31 ` [Bug rtl-optimization/58759] " mpolacek at gcc dot gnu.org
@ 2013-10-20 15:08 ` mikpelinux at gmail dot com
2013-10-21 15:52 ` law at redhat dot com
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: mikpelinux at gmail dot com @ 2013-10-20 15:08 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58759
Mikael Pettersson <mikpelinux at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |law at gcc dot gnu.org
--- Comment #3 from Mikael Pettersson <mikpelinux at gmail dot com> ---
Started with trunk @ r202933, still occurs with trunk @ r203877. Author CC:d.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug rtl-optimization/58759] [4.9 Regression] wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode
2013-10-16 22:00 [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode su at cs dot ucdavis.edu
` (2 preceding siblings ...)
2013-10-20 15:08 ` mikpelinux at gmail dot com
@ 2013-10-21 15:52 ` law at redhat dot com
2013-10-24 20:36 ` vmakarov at gcc dot gnu.org
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: law at redhat dot com @ 2013-10-21 15:52 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58759
Jeffrey A. Law <law at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |law at redhat dot com
--- Comment #4 from Jeffrey A. Law <law at redhat dot com> ---
I don't offhand see how this can be a jump threading problem.
./xgcc -B./ -O2 -fdbg-cnt=registered_jump_thread:0 j.c -m32 -g
-fdump-tree-all-blocks-vops-details -dap -S
[law@lugnut gcc]$ ./xgcc -B./ -O2 -fdbg-cnt=registered_jump_thread:0 j.c -m32
dbg_cnt 'registered_jump_thread' set to 0
[law@lugnut gcc]$ ./a.out
Segmentation fault (core dumped)
Note carefully the -fdbg-cnt flag. That turns off jump threading.
Using gdb and the raw assembly code we have the following faulting instruction
(shortly after the call to foo():
movl %edx, i+12
Hmm, that's strange since "i" is in readonly memory:
.section .rodata
.align 4
.type i, @object
.size i, 16
i:
If we look at the faulting instruction in the .reload dump we have:
(insn 100 105 47 6 (set (mem/u/c:SI (const:SI (plus:SI (symbol_ref:SI ("i")
[flags 0x2] <var_decl 0x7f5ee20427b8 i>)
(const_int 12 [0xc]))) [4 i+12 S4 A32])
(reg:SI 1 dx [127])) j.c:30 86 {*movsi_internal}
(nil))
Yup, that's a write to readonly memory.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug rtl-optimization/58759] [4.9 Regression] wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode
2013-10-16 22:00 [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode su at cs dot ucdavis.edu
` (3 preceding siblings ...)
2013-10-21 15:52 ` law at redhat dot com
@ 2013-10-24 20:36 ` vmakarov at gcc dot gnu.org
2013-10-25 21:34 ` vmakarov at gcc dot gnu.org
2013-11-05 15:05 ` rguenth at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: vmakarov at gcc dot gnu.org @ 2013-10-24 20:36 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58759
Vladimir Makarov <vmakarov at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |vmakarov at gcc dot gnu.org
--- Comment #6 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
(In reply to Jeffrey A. Law from comment #5)
>
> We've had numerous problems with reload in the past trying to store into
> readonly memory due to reloading values with known equivalent memory
> locations (as is the case here). I wouldn't be surprised to see some of the
> same problems showing up in IRA.
>
> Vlad, can you take a look?
I've just started to work on it. I guess this is the 2nd PR on the same
problem (another one is
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58826
).
Most probably the fix will be ready at the beginning of next week.
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug rtl-optimization/58759] [4.9 Regression] wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode
2013-10-16 22:00 [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode su at cs dot ucdavis.edu
` (4 preceding siblings ...)
2013-10-24 20:36 ` vmakarov at gcc dot gnu.org
@ 2013-10-25 21:34 ` vmakarov at gcc dot gnu.org
2013-11-05 15:05 ` rguenth at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: vmakarov at gcc dot gnu.org @ 2013-10-25 21:34 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58759
--- Comment #7 from Vladimir Makarov <vmakarov at gcc dot gnu.org> ---
Author: vmakarov
Date: Fri Oct 25 21:34:26 2013
New Revision: 204080
URL: http://gcc.gnu.org/viewcvs?rev=204080&root=gcc&view=rev
Log:
2013-10-25 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/58759
* lra-constraints.c (lra_constraints): Remove wrong condition to
remove insn setting up an equivalent pseudo.
2013-10-25 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/58759
* gcc.target/i386/pr58759.c: New.
Added:
trunk/gcc/testsuite/gcc.target/i386/pr58759.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/lra-constraints.c
trunk/gcc/testsuite/ChangeLog
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug rtl-optimization/58759] [4.9 Regression] wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode
2013-10-16 22:00 [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode su at cs dot ucdavis.edu
` (5 preceding siblings ...)
2013-10-25 21:34 ` vmakarov at gcc dot gnu.org
@ 2013-11-05 15:05 ` rguenth at gcc dot gnu.org
6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-05 15:05 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58759
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution|--- |FIXED
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
Assuming fixed.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-11-05 15:05 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-16 22:00 [Bug tree-optimization/58759] New: wrong code (segfaults) at -O2 on x86_64-linux-gnu in 32-bit mode su at cs dot ucdavis.edu
2013-10-17 8:46 ` [Bug tree-optimization/58759] [4.9 Regression] " mpolacek at gcc dot gnu.org
2013-10-17 14:31 ` [Bug rtl-optimization/58759] " mpolacek at gcc dot gnu.org
2013-10-20 15:08 ` mikpelinux at gmail dot com
2013-10-21 15:52 ` law at redhat dot com
2013-10-24 20:36 ` vmakarov at gcc dot gnu.org
2013-10-25 21:34 ` vmakarov at gcc dot gnu.org
2013-11-05 15:05 ` rguenth 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).