public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA
@ 2009-11-23 10:40 rguenth at gcc dot gnu dot org
2009-11-23 10:41 ` [Bug tree-optimization/42154] " rguenth at gcc dot gnu dot org
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-11-23 10:40 UTC (permalink / raw)
To: gcc-bugs
struct A { char x[1]; };
extern void abort (void);
void __attribute__((noinline,noclone))
foo (struct A a)
{
if (a.x[0] != 'a')
abort ();
}
int main ()
{
struct A a;
int i;
for (i = 0; i < 1; ++i)
a.x[i] = 'a';
foo (a);
return 0;
}
fails at -O1 because (early) SRA converts
<bb 2>:
i_2 = 0;
goto <bb 4>;
<bb 3>:
a.x[i_1] = 97;
i_3 = i_1 + 1;
<bb 4>:
# i_1 = PHI <0(2), i_3(3)>
if (i_1 <= 0)
goto <bb 3>;
else
goto <bb 5>;
<bb 5>:
foo (a);
to
<bb 2>:
i_2 = 0;
goto <bb 4>;
<bb 3>:
a$x$_9 = 97;
i_3 = i_1 + 1;
<bb 4>:
# i_1 = PHI <0(2), i_3(3)>
# a$x$_7 = PHI <a$x$_4(D)(2), a$x$_9(3)>
if (i_1 <= 0)
goto <bb 3>;
else
goto <bb 5>;
<bb 5>:
a.x[i_1] = a$x$_7;
foo (a);
see how the store to a.x[i_1] is wrong as i_1 does no longer have the same
value as before (SRA invalidly moved it out of the loop). SRA should have
replaced i_1 with zero as it reasoned there is only one element and only
because of that it SRAd this.
--
Summary: [4.5 Regression] Wrong code from (early) SRA
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42154
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/42154] [4.5 Regression] Wrong code from (early) SRA
2009-11-23 10:40 [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA rguenth at gcc dot gnu dot org
@ 2009-11-23 10:41 ` rguenth at gcc dot gnu dot org
2009-11-23 14:02 ` jamborm at gcc dot gnu dot org
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-11-23 10:41 UTC (permalink / raw)
To: gcc-bugs
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Target Milestone|--- |4.5.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42154
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/42154] [4.5 Regression] Wrong code from (early) SRA
2009-11-23 10:40 [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA rguenth at gcc dot gnu dot org
2009-11-23 10:41 ` [Bug tree-optimization/42154] " rguenth at gcc dot gnu dot org
@ 2009-11-23 14:02 ` jamborm at gcc dot gnu dot org
2009-11-23 22:20 ` jamborm at gcc dot gnu dot org
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: jamborm at gcc dot gnu dot org @ 2009-11-23 14:02 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from jamborm at gcc dot gnu dot org 2009-11-23 14:01 -------
I'm looking into this. This example shows why using access->expr to create new
expressions is a dangerous thing to do, at least in some contexts (which I did
not really realize until now). I'd better look at them all.
--
jamborm at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|unassigned at gcc dot gnu |jamborm at gcc dot gnu dot
|dot org |org
Status|UNCONFIRMED |ASSIGNED
Ever Confirmed|0 |1
Last reconfirmed|0000-00-00 00:00:00 |2009-11-23 14:01:46
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42154
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/42154] [4.5 Regression] Wrong code from (early) SRA
2009-11-23 10:40 [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA rguenth at gcc dot gnu dot org
2009-11-23 10:41 ` [Bug tree-optimization/42154] " rguenth at gcc dot gnu dot org
2009-11-23 14:02 ` jamborm at gcc dot gnu dot org
@ 2009-11-23 22:20 ` jamborm at gcc dot gnu dot org
2009-11-24 9:56 ` rguenth at gcc dot gnu dot org
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: jamborm at gcc dot gnu dot org @ 2009-11-23 22:20 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from jamborm at gcc dot gnu dot org 2009-11-23 22:19 -------
Proposed patch:
http://gcc.gnu.org/ml/gcc-patches/2009-11/msg01311.html
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42154
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/42154] [4.5 Regression] Wrong code from (early) SRA
2009-11-23 10:40 [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA rguenth at gcc dot gnu dot org
` (2 preceding siblings ...)
2009-11-23 22:20 ` jamborm at gcc dot gnu dot org
@ 2009-11-24 9:56 ` rguenth at gcc dot gnu dot org
2009-11-24 10:56 ` jamborm at gcc dot gnu dot org
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2009-11-24 9:56 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from rguenth at gcc dot gnu dot org 2009-11-24 09:55 -------
*** Bug 42160 has been marked as a duplicate of this bug. ***
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hp at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42154
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/42154] [4.5 Regression] Wrong code from (early) SRA
2009-11-23 10:40 [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA rguenth at gcc dot gnu dot org
` (3 preceding siblings ...)
2009-11-24 9:56 ` rguenth at gcc dot gnu dot org
@ 2009-11-24 10:56 ` jamborm at gcc dot gnu dot org
2009-11-24 10:58 ` jamborm at gcc dot gnu dot org
2009-12-11 23:41 ` hjl at gcc dot gnu dot org
6 siblings, 0 replies; 8+ messages in thread
From: jamborm at gcc dot gnu dot org @ 2009-11-24 10:56 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from jamborm at gcc dot gnu dot org 2009-11-24 10:56 -------
Subject: Bug 42154
Author: jamborm
Date: Tue Nov 24 10:56:14 2009
New Revision: 154493
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=154493
Log:
2009-11-24 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/42154
* tree-sra.c (struct access): Added comments.
(sra_modify_expr): Build references to the old aggregate with
build_ref_for_offset instead of reusing access->expr.
(load_assign_lhs_subreplacements): Likewise.
* testsuite/gcc.c-torture/execute/pr42154.c: New test.
Added:
trunk/gcc/testsuite/gcc.c-torture/execute/pr42154.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-sra.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42154
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/42154] [4.5 Regression] Wrong code from (early) SRA
2009-11-23 10:40 [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA rguenth at gcc dot gnu dot org
` (4 preceding siblings ...)
2009-11-24 10:56 ` jamborm at gcc dot gnu dot org
@ 2009-11-24 10:58 ` jamborm at gcc dot gnu dot org
2009-12-11 23:41 ` hjl at gcc dot gnu dot org
6 siblings, 0 replies; 8+ messages in thread
From: jamborm at gcc dot gnu dot org @ 2009-11-24 10:58 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from jamborm at gcc dot gnu dot org 2009-11-24 10:58 -------
Fixed.
--
jamborm at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42154
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Bug tree-optimization/42154] [4.5 Regression] Wrong code from (early) SRA
2009-11-23 10:40 [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA rguenth at gcc dot gnu dot org
` (5 preceding siblings ...)
2009-11-24 10:58 ` jamborm at gcc dot gnu dot org
@ 2009-12-11 23:41 ` hjl at gcc dot gnu dot org
6 siblings, 0 replies; 8+ messages in thread
From: hjl at gcc dot gnu dot org @ 2009-12-11 23:41 UTC (permalink / raw)
To: gcc-bugs
------- Comment #6 from hjl at gcc dot gnu dot org 2009-12-11 23:39 -------
Subject: Bug 42154
Author: hjl
Date: Fri Dec 11 23:36:24 2009
New Revision: 155184
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=155184
Log:
Backport testcases from trunk.
2009-12-11 H.J. Lu <hongjiu.lu@intel.com>
Backport from mainline:
2009-12-11 Dodji Seketeli <dodji@redhat.com>
PR c++/42225
* g++.dg/template/typedef24.C: New test.
* g++.dg/template/typedef25.C: New test.
2009-12-11 Dodji Seketeli <dodji@redhat.com>
PR c++/42251
* g++.dg/template/const3.C: New test.
2009-12-10 Jakub Jelinek <jakub@redhat.com>
PR c++/42317
* g++.dg/opt/dtor2.C: New test.
* g++.dg/opt/dtor2.h: New file.
* g++.dg/opt/dtor2-aux.cc: New file.
2009-12-10 Jan Hubicka <jh@suse.cz>
PR middle-end/42110
* g++.dg/torture/pr42110.C: new file.
2009-12-07 Jakub Jelinek <jakub@redhat.com>
PR debug/42244
* gcc.dg/debug/pr42244.c: New test.
2009-12-04 David Daney <ddaney@caviumnetworks.com>
PR rtl-optimization/42164
* gcc.c-torture/compile/pr42164.c: New test.
2009-12-03 Jason Merrill <jason@redhat.com>
PR c++/41611
* g++.dg/abi/guard2.C: New.
2009-12-03 Dodji Seketeli <dodji@redhat.com>
PR c++/42217
* g++.dg/other/bitfield4.C: New test.
2009-12-03 Jakub Jelinek <jakub@redhat.com>
PR c++/42256
* g++.dg/inherit/thunk11.C: New test.
* g++.dg/inherit/thunk11.h: New file.
* g++.dg/inherit/thunk11-aux.cc: New file.
2009-12-01 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/42237
* gcc.c-torture/compile/pr42237.c: New test.
2009-12-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/42057
* g++.dg/parse/crash54.C: New.
2009-11-30 Martin Jambor <mjambor@suse.cz>
PR middle-end/42196
* gcc.c-torture/compile/pr42196-1.c: New test.
* gcc.c-torture/compile/pr42196-2.c: New test.
* gcc.c-torture/compile/pr42196-3.c: New test.
2009-11-30 Dodji Seketeli <dodji@redhat.com>
PR c++/42069
* g++.dg/template/typedef23.C: New test.
2009-11-29 H.J. Lu <hongjiu.lu@intel.com>
PR tree-optimization/41961
* g++.dg/tree-ssa/pr41961.C: New.
2009-11-29 Ira Rosen <irar@il.ibm.com>
PR tree-optimization/42193
* gcc.dg/vect/pr42193.c: New test.
2009-11-28 Richard Guenther <rguenther@suse.de>
PR tree-optimization/42183
* g++.dg/torture/pr42183.C: New testcase.
2009-11-27 Martin Jambor <mjambor@suse.cz>
PR middle-end/42006
* gcc.c-torture/execute/pr42006.c: New test.
2009-11-27 Michael Matz <matz@suse.de>
PR rtl-optimization/42084
* gcc.dg/pr42084.c: New test.
2009-11-27 Michael Matz <matz@suse.de>
PR c++/41906
* g++.dg/tree-ssa/pr41906.C: New testcase.
2009-11-26 Michael Matz <matz@suse.de>
PR tree-optimization/41905
* g++.dg/tree-ssa/pr41905.C: New testcase.
2009-11-24 Richard Guenther <rguenther@suse.de>
PR tree-optimization/42142
* gcc.c-torture/execute/pr42142.c: New testcase.
2009-11-24 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/42154
* gcc.c-torture/execute/pr42154.c: New test.
2009-11-21 Martin Jambor <mjambor@suse.cz>
PR middle-end/42025
* gcc.c-torture/compile/pr42025-1.c: New test.
* gcc.c-torture/compile/pr42025-2.c: New test.
2009-11-21 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/42078
* gcc.dg/pr42078.c: New test.
Added:
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/abi/guard2.C
- copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/abi/guard2.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/inherit/thunk11-aux.cc
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/inherit/thunk11-aux.cc
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/inherit/thunk11.C
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/inherit/thunk11.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/inherit/thunk11.h
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/inherit/thunk11.h
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/opt/dtor2-aux.cc
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/opt/dtor2-aux.cc
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/opt/dtor2.C
- copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/opt/dtor2.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/opt/dtor2.h
- copied unchanged from r155170, trunk/gcc/testsuite/g++.dg/opt/dtor2.h
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/other/bitfield4.C
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/other/bitfield4.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/parse/crash54.C
- copied unchanged from r155172,
trunk/gcc/testsuite/g++.dg/parse/crash54.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/const3.C
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/template/const3.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/typedef23.C
- copied unchanged from r155181,
trunk/gcc/testsuite/g++.dg/template/typedef23.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/typedef24.C
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/template/typedef24.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/template/typedef25.C
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/template/typedef25.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/torture/pr42110.C
- copied unchanged from r155170,
trunk/gcc/testsuite/g++.dg/torture/pr42110.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/torture/pr42183.C
- copied unchanged from r155181,
trunk/gcc/testsuite/g++.dg/torture/pr42183.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/tree-ssa/pr41905.C
- copied unchanged from r155182,
trunk/gcc/testsuite/g++.dg/tree-ssa/pr41905.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/tree-ssa/pr41906.C
- copied unchanged from r155182,
trunk/gcc/testsuite/g++.dg/tree-ssa/pr41906.C
branches/gcc-4_4-branch/gcc/testsuite/g++.dg/tree-ssa/pr41961.C
- copied unchanged from r155181,
trunk/gcc/testsuite/g++.dg/tree-ssa/pr41961.C
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42025-1.c
- copied unchanged from r155182,
trunk/gcc/testsuite/gcc.c-torture/compile/pr42025-1.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42025-2.c
- copied unchanged from r155182,
trunk/gcc/testsuite/gcc.c-torture/compile/pr42025-2.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42164.c
- copied unchanged from r155170,
trunk/gcc/testsuite/gcc.c-torture/compile/pr42164.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42196-1.c
- copied unchanged from r155181,
trunk/gcc/testsuite/gcc.c-torture/compile/pr42196-1.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42196-2.c
- copied unchanged from r155181,
trunk/gcc/testsuite/gcc.c-torture/compile/pr42196-2.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42196-3.c
- copied unchanged from r155181,
trunk/gcc/testsuite/gcc.c-torture/compile/pr42196-3.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/compile/pr42237.c
- copied unchanged from r155171,
trunk/gcc/testsuite/gcc.c-torture/compile/pr42237.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/execute/pr42006.c
- copied unchanged from r155181,
trunk/gcc/testsuite/gcc.c-torture/execute/pr42006.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/execute/pr42142.c
- copied unchanged from r155182,
trunk/gcc/testsuite/gcc.c-torture/execute/pr42142.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.c-torture/execute/pr42154.c
- copied unchanged from r155182,
trunk/gcc/testsuite/gcc.c-torture/execute/pr42154.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/debug/pr42244.c
- copied unchanged from r155170,
trunk/gcc/testsuite/gcc.dg/debug/pr42244.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/pr42078.c
- copied unchanged from r155182, trunk/gcc/testsuite/gcc.dg/pr42078.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/pr42084.c
- copied unchanged from r155182, trunk/gcc/testsuite/gcc.dg/pr42084.c
branches/gcc-4_4-branch/gcc/testsuite/gcc.dg/vect/pr42193.c
- copied unchanged from r155181,
trunk/gcc/testsuite/gcc.dg/vect/pr42193.c
Modified:
branches/gcc-4_4-branch/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42154
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2009-12-11 23:41 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-11-23 10:40 [Bug tree-optimization/42154] New: [4.5 Regression] Wrong code from (early) SRA rguenth at gcc dot gnu dot org
2009-11-23 10:41 ` [Bug tree-optimization/42154] " rguenth at gcc dot gnu dot org
2009-11-23 14:02 ` jamborm at gcc dot gnu dot org
2009-11-23 22:20 ` jamborm at gcc dot gnu dot org
2009-11-24 9:56 ` rguenth at gcc dot gnu dot org
2009-11-24 10:56 ` jamborm at gcc dot gnu dot org
2009-11-24 10:58 ` jamborm at gcc dot gnu dot org
2009-12-11 23:41 ` hjl at gcc dot gnu dot 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).