public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3
@ 2013-06-04 0:47 dhazeghi at yahoo dot com
2013-06-04 5:33 ` [Bug tree-optimization/57521] [4.7/4.8/4.9 Regression] " jakub at gcc dot gnu.org
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: dhazeghi at yahoo dot com @ 2013-06-04 0:47 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
Bug ID: 57521
Summary: wrong code for expressions in loop at -O3
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: dhazeghi at yahoo dot com
The following code is miscompiled with current gcc trunk at -O3 optimization on
x86_64-linux. I've tried to reduce it somewhat from the original form. Note
that 'e' is only touched in one place. This also fails on 4.7 and 4.8 and is a
regression from gcc 4.6.
$ gcc-trunk -v
gcc version 4.9.0 20130603 (experimental) [trunk revision 199601] (GCC)
$ gcc-trunk -O2 wrong.c
$ ./a.out
1
$ gcc-4.6 -O3 wrong.c
$ ./a.out
1
$ gcc-trunk -O3 wrong.c
$ ./a.out
0
$
--------------------------------------
int printf (const char *, ...);
int a, b, c, d, o = 1, p;
short e;
int
fn1 (int * p1)
{
int f, g, h, j = 0, k = 0, l = 0;
unsigned int i;
int *m[1] = { &l };
for (; b >= 0; b--)
{
if (*p1)
if (j >= 0)
{
int n = 1;
e = 1;
h = a ? a : 1 % n;
g = h > 0 ? 0 : h + 1;
k = c + g;
}
else
continue;
else
{
f = d > 0 ? 0 : d + 1;
i = f;
j = 1 + i;
}
l++;
}
return k;
}
int
main ()
{
for (;; p++)
{
fn1 (&o);
break;
}
printf ("%d\n", e);
return 0;
}
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug tree-optimization/57521] [4.7/4.8/4.9 Regression] wrong code for expressions in loop at -O3
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
@ 2013-06-04 5:33 ` jakub at gcc dot gnu.org
2013-06-04 12:19 ` rguenth at gcc dot gnu.org
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: jakub at gcc dot gnu.org @ 2013-06-04 5:33 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2013-06-04
CC| |jakub at gcc dot gnu.org
Target Milestone|--- |4.7.4
Summary|wrong code for expressions |[4.7/4.8/4.9 Regression]
|in loop at -O3 |wrong code for expressions
| |in loop at -O3
Ever confirmed|0 |1
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r175704 aka PR46787.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug tree-optimization/57521] [4.7/4.8/4.9 Regression] wrong code for expressions in loop at -O3
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
2013-06-04 5:33 ` [Bug tree-optimization/57521] [4.7/4.8/4.9 Regression] " jakub at gcc dot gnu.org
@ 2013-06-04 12:19 ` rguenth at gcc dot gnu.org
2013-06-24 13:48 ` rguenth at gcc dot gnu.org
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-06-04 12:19 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
Assignee|unassigned at gcc dot gnu.org |rguenth at gcc dot gnu.org
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmhm, mine.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug tree-optimization/57521] [4.7/4.8/4.9 Regression] wrong code for expressions in loop at -O3
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
2013-06-04 5:33 ` [Bug tree-optimization/57521] [4.7/4.8/4.9 Regression] " jakub at gcc dot gnu.org
2013-06-04 12:19 ` rguenth at gcc dot gnu.org
@ 2013-06-24 13:48 ` rguenth at gcc dot gnu.org
2013-08-27 10:12 ` [Bug tree-optimization/57521] [4.7/4.8 " rguenth at gcc dot gnu.org
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-06-24 13:48 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
It's if-conversion (we do not vectorize anything here). The predicates
are inserted correctly but the wrong ones are being used for the
predication. That is because the predecessor edge we chose in
find_phi_replacement_condition is not fallthru and thus the predicate
we chose is bogus. It seems to assume that critical edges are split.
I have a patch.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug tree-optimization/57521] [4.7/4.8 Regression] wrong code for expressions in loop at -O3
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
` (2 preceding siblings ...)
2013-06-24 13:48 ` rguenth at gcc dot gnu.org
@ 2013-08-27 10:12 ` rguenth at gcc dot gnu.org
2013-09-09 9:51 ` rguenth at gcc dot gnu.org
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-08-27 10:12 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Known to work| |4.9.0
Summary|[4.7/4.8/4.9 Regression] |[4.7/4.8 Regression] wrong
|wrong code for expressions |code for expressions in
|in loop at -O3 |loop at -O3
Known to fail| |4.8.1
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Tue Aug 27 10:10:34 2013
New Revision: 202019
URL: http://gcc.gnu.org/viewcvs?rev=202019&root=gcc&view=rev
Log:
2013-08-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/57521
* tree-if-conv.c (if_convertible_bb_p): Verify that at least
one edge is non-critical.
(find_phi_replacement_condition): Make sure to use a non-critical
edge. Cleanup and remove old bug workarounds.
(bb_postdominates_preds): Remove.
(if_convertible_loop_p_1): Do not compute post-dominators.
(combine_blocks): Do not free post-dominators.
(main_tree_if_conversion): Likewise.
(pass_data_if_conversion): Add TODO_verify_ssa.
* gcc.dg/torture/pr57521.c: New testcase.
Added:
trunk/gcc/testsuite/gcc.dg/torture/pr57521.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/testsuite/ChangeLog
trunk/gcc/tree-if-conv.c
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug tree-optimization/57521] [4.7/4.8 Regression] wrong code for expressions in loop at -O3
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
` (3 preceding siblings ...)
2013-08-27 10:12 ` [Bug tree-optimization/57521] [4.7/4.8 " rguenth at gcc dot gnu.org
@ 2013-09-09 9:51 ` rguenth at gcc dot gnu.org
2013-10-25 10:30 ` [Bug tree-optimization/57521] [4.7 " rguenth at gcc dot gnu.org
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-09-09 9:51 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Mon Sep 9 09:51:18 2013
New Revision: 202388
URL: http://gcc.gnu.org/viewcvs?rev=202388&root=gcc&view=rev
Log:
2013-09-09 Richard Biener <rguenther@suse.de>
Backport from mainline
2013-08-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/57521
* tree-if-conv.c (if_convertible_bb_p): Verify that at least
one edge is non-critical.
(find_phi_replacement_condition): Make sure to use a non-critical
edge. Cleanup and remove old bug workarounds.
(bb_postdominates_preds): Remove.
(if_convertible_loop_p_1): Do not compute post-dominators.
(combine_blocks): Do not free post-dominators.
(main_tree_if_conversion): Likewise.
* gcc.dg/torture/pr57521.c: New testcase.
Added:
branches/gcc-4_8-branch/gcc/testsuite/gcc.dg/torture/pr57521.c
Modified:
branches/gcc-4_8-branch/gcc/ChangeLog
branches/gcc-4_8-branch/gcc/testsuite/ChangeLog
branches/gcc-4_8-branch/gcc/tree-if-conv.c
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug tree-optimization/57521] [4.7 Regression] wrong code for expressions in loop at -O3
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
` (4 preceding siblings ...)
2013-09-09 9:51 ` rguenth at gcc dot gnu.org
@ 2013-10-25 10:30 ` rguenth at gcc dot gnu.org
2014-03-18 8:47 ` rguenth at gcc dot gnu.org
2014-03-18 8:47 ` rguenth at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-10-25 10:30 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
*** Bug 57608 has been marked as a duplicate of this bug. ***
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug tree-optimization/57521] [4.7 Regression] wrong code for expressions in loop at -O3
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
` (6 preceding siblings ...)
2014-03-18 8:47 ` rguenth at gcc dot gnu.org
@ 2014-03-18 8:47 ` rguenth at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-03-18 8:47 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug tree-optimization/57521] [4.7 Regression] wrong code for expressions in loop at -O3
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
` (5 preceding siblings ...)
2013-10-25 10:30 ` [Bug tree-optimization/57521] [4.7 " rguenth at gcc dot gnu.org
@ 2014-03-18 8:47 ` rguenth at gcc dot gnu.org
2014-03-18 8:47 ` rguenth at gcc dot gnu.org
7 siblings, 0 replies; 9+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-03-18 8:47 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57521
--- Comment #7 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Tue Mar 18 08:46:21 2014
New Revision: 208632
URL: http://gcc.gnu.org/viewcvs?rev=208632&root=gcc&view=rev
Log:
2014-03-18 Richard Biener <rguenther@suse.de>
Backport from mainline
2013-08-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/57521
* tree-if-conv.c (if_convertible_bb_p): Verify that at least
one edge is non-critical.
(find_phi_replacement_condition): Make sure to use a non-critical
edge. Cleanup and remove old bug workarounds.
(bb_postdominates_preds): Remove.
(if_convertible_loop_p_1): Do not compute post-dominators.
(combine_blocks): Do not free post-dominators.
(main_tree_if_conversion): Likewise.
* gcc.dg/torture/pr57521.c: New testcase.
2013-09-03 Richard Biener <rguenther@suse.de>
PR middle-end/57656
* fold-const.c (negate_expr_p): Fix division case.
(negate_expr): Likewise.
* gcc.dg/torture/pr57656.c: New testcase.
2013-11-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/57517
* tree-predcom.c (combinable_refs_p): Verify the combination
is always executed when the refs are.
* gfortran.fortran-torture/compile/pr57517.f90: New testcase.
* gcc.dg/torture/pr57517.c: Likewise.
Added:
branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/torture/pr57517.c
branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/torture/pr57521.c
branches/gcc-4_7-branch/gcc/testsuite/gcc.dg/torture/pr57656.c
branches/gcc-4_7-branch/gcc/testsuite/gfortran.fortran-torture/compile/pr57517.f90
Modified:
branches/gcc-4_7-branch/gcc/ChangeLog
branches/gcc-4_7-branch/gcc/fold-const.c
branches/gcc-4_7-branch/gcc/testsuite/ChangeLog
branches/gcc-4_7-branch/gcc/tree-if-conv.c
branches/gcc-4_7-branch/gcc/tree-predcom.c
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-03-18 8:47 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-06-04 0:47 [Bug tree-optimization/57521] New: wrong code for expressions in loop at -O3 dhazeghi at yahoo dot com
2013-06-04 5:33 ` [Bug tree-optimization/57521] [4.7/4.8/4.9 Regression] " jakub at gcc dot gnu.org
2013-06-04 12:19 ` rguenth at gcc dot gnu.org
2013-06-24 13:48 ` rguenth at gcc dot gnu.org
2013-08-27 10:12 ` [Bug tree-optimization/57521] [4.7/4.8 " rguenth at gcc dot gnu.org
2013-09-09 9:51 ` rguenth at gcc dot gnu.org
2013-10-25 10:30 ` [Bug tree-optimization/57521] [4.7 " rguenth at gcc dot gnu.org
2014-03-18 8:47 ` rguenth at gcc dot gnu.org
2014-03-18 8:47 ` 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).