http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
Richard Guenther changed:
What|Removed |Added
Status|NEW |RESOLVED
Resolution|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
Jan Hubicka changed:
What|Removed |Added
Status|ASSIGNED|NEW
Known to work|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
Richard Guenther changed:
What|Removed |Added
Target Milestone|4.5.3 |4.5.4
--- Comment #32 from Richard Gue
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
Richard Guenther changed:
What|Removed |Added
Target Milestone|4.5.2 |4.5.3
--- Comment #31 from Richard Gue
--- Comment #30 from rguenth at gcc dot gnu dot org 2010-07-31 09:29
---
GCC 4.5.1 is being released, adjusting target milestone.
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
--
--- Comment #29 from hubicka at gcc dot gnu dot org 2010-04-06 15:18
---
Subject: Bug 42906
Author: hubicka
Date: Tue Apr 6 15:18:18 2010
New Revision: 158004
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=158004
Log:
PR tree-optimization/42906
* tree-ssa-dce.
--- Comment #28 from hubicka at ucw dot cz 2010-04-06 11:37 ---
Subject: Re: [4.5 Regression] Empty loop not
removed
I will apply the CD-DCE fix to pretty IPA tomorrow (after testing the inliner
problems) so we get some extra testing for that patch too.
--
http://gcc.gnu.o
--- Comment #27 from rguenth at gcc dot gnu dot org 2010-04-06 11:20
---
GCC 4.5.0 is being released. Deferring to 4.5.1.
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
-
--- Comment #26 from hubicka at gcc dot gnu dot org 2010-03-27 18:31
---
Patch queued for next stage1
--
hubicka at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #24 from hubicka at ucw dot cz 2010-03-25 17:22 ---
Subject: Re: [4.5 Regression] Empty loop not
removed
Hi,
this is updated version of patch that bootstraps/regtests. In previous one
there was bug that BB was marked when processed even when only edge was
processed
--- Comment #23 from hubicka at gcc dot gnu dot org 2010-03-24 19:02
---
Created an attachment (id=20188)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20188&action=view)
Patch in testing
Hi,
this is patch I am testing.
I was also re-thinking the problem of redirecting BB with d
--- Comment #22 from hubicka at gcc dot gnu dot org 2010-03-24 18:17
---
Hi,
I am teaching CD-DCE today so I took oppurtunity to figure out what happens.
1) The original formulation by Cytron et. al. has mistake in it. It claims
that after removal of dead conditional one can take any
--- Comment #21 from rguenther at suse dot de 2010-03-18 17:30 ---
Subject: Re: [4.5 Regression] Empty loop not
removed
On Thu, 18 Mar 2010, changpeng dot fang at amd dot com wrote:
> --- Comment #20 from changpeng dot fang at amd dot com 2010-03-18 17:24
> ---
> (In reply
--- Comment #20 from changpeng dot fang at amd dot com 2010-03-18 17:24
---
(In reply to comment #19)
> Splitting critical edges for CDDCE will probably also solve this problem.
>
> Richard.
>
Yes, splitting critical edges is an enhancement to CDDCE and can solve this
problem. There
--- Comment #19 from rguenther at suse dot de 2010-03-17 10:01 ---
Subject: Re: [4.5 Regression] Empty loop not
removed
On Wed, 17 Mar 2010, changpeng dot fang at amd dot com wrote:
>
>
> --- Comment #17 from changpeng dot fang at amd dot com 2010-03-17 00:18
> ---
> (In
--- Comment #18 from changpeng dot fang at amd dot com 2010-03-17 00:22
---
(In reply to comment #16)
> > In this case, the loop itself is "empty" and we can replace every use of the
> > phi with "n" (exit value of the iv).
>
> I don't think that is done by remove_empty_loop anyways an
--- Comment #17 from changpeng dot fang at amd dot com 2010-03-17 00:18
---
(In reply to comment #8)
> And
>
> int foo (int b, int j)
> {
> if (b)
> {
> int i;
> for (i = 0; i<1000; ++i)
> ;
> j = b;
> }
> return j;
> }
>
With "j=b", "b" is not f
--- Comment #16 from pinskia at gcc dot gnu dot org 2010-02-16 19:57
---
> In this case, the loop itself is "empty" and we can replace every use of the
> phi with "n" (exit value of the iv).
I don't think that is done by remove_empty_loop anyways and it is already done
by sccp (Propaga
--- Comment #15 from changpeng dot fang at amd dot com 2010-02-16 19:54
---
Hello,
I am not sure whether CD-DCE can fully replace remove_empty_loop. However,
I would prefer to keep remove_empty_loop pass. There are two reasons for
this proposal:
(1) remove_empty_loop was at level -O1 an
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
Priority|P3 |P2
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
--- Comment #14 from steven at gcc dot gnu dot org 2010-01-30 23:15 ---
Yes, it fails with all "do ... while(...)" loops, I think.
We'll have to think of something else, then.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
--- Comment #13 from rguenth at gcc dot gnu dot org 2010-01-30 23:04
---
FAIL: gcc.c-torture/execute/991016-1.c execution, -O2
FAIL: gcc.c-torture/execute/loop-3.c execution, -O2
FAIL: gcc.c-torture/execute/loop-3b.c execution, -O2
FAIL: gcc.dg/doloop-2.c execution test
and other
--- Comment #12 from rguenth at gcc dot gnu dot org 2010-01-30 21:11
---
We seem to miscompile gen*.c. I'll check out the testsuite.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
--- Comment #11 from rguenth at gcc dot gnu dot org 2010-01-30 20:56
---
I'll test it (but I wonder if find_control_dependence is to be corrected
instead).
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #10 from steven at gcc dot gnu dot org 2010-01-30 20:32 ---
The safe thing to do, may be to ignore self control dependence, like so:
- 8< --
Index: tree-ssa-dce.c
=
--- Comment #9 from steven at gcc dot gnu dot org 2010-01-30 17:30 ---
The loop is also properly eliminated if I split the (critical) edge from bb6 to
bb5 the edge that brings in the constant "0" to the "j_1 = PHI ".
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
--- Comment #8 from rguenth at gcc dot gnu dot org 2010-01-30 16:58 ---
And
int foo (int b, int j)
{
if (b)
{
int i;
for (i = 0; i<1000; ++i)
;
j = b;
}
return j;
}
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42906
--- Comment #7 from rguenth at gcc dot gnu dot org 2010-01-30 16:58 ---
Indeed it works for
void bar (void);
int foo (int b, int j)
{
if (b)
{
int i;
for (i = 0; i<1000; ++i)
;
bar ();
j = 0;
}
return j;
}
--
http://gcc.gnu.org/bugzilla/s
--- Comment #6 from rguenth at gcc dot gnu dot org 2010-01-30 16:54 ---
(In reply to comment #4)
> Eh, ignore comment #3. My understanding of CD-DCE really *is* rusty :-).
>
> Being more careful now: IIRC the statement "j = 0" would have been control
> dependent on "if (b)" and marking
--- Comment #5 from rguenth at gcc dot gnu dot org 2010-01-30 16:52 ---
(In reply to comment #3)
> Hack that may be worth trying:
> Index: tree-ssa-dce.c
> ===
> --- tree-ssa-dce.c (revision 156352)
> +++ tree-ssa-dce.c
--- Comment #4 from steven at gcc dot gnu dot org 2010-01-30 16:51 ---
Eh, ignore comment #3. My understanding of CD-DCE really *is* rusty :-).
Being more careful now: IIRC the statement "j = 0" would have been control
dependent on "if (b)" and marking "j = 0" would result in marking "i
--- Comment #3 from steven at gcc dot gnu dot org 2010-01-30 16:45 ---
Hack that may be worth trying:
Index: tree-ssa-dce.c
===
--- tree-ssa-dce.c (revision 156352)
+++ tree-ssa-dce.c (working copy)
@@ -683,7 +683,
--- Comment #2 from steven at gcc dot gnu dot org 2010-01-30 16:42 ---
Even more fun: mark_control_dependent_edges_necessary is called on basic block
6 because a PHI argument is fed to "j_1 = PHI " i.e. a
constant coming from basic block 6:
#1 0x00a16627 in propagate_necessity
--- Comment #1 from steven at gcc dot gnu dot org 2010-01-30 16:37 ---
The loop is deemed necessary because the loop block (bb 6) is control dependent
on itself (?!):
(gdb)
mark_control_dependent_edges_necessary (bb=0x77f264e0, el=0x142c5d0) at
../../trunk/gcc/tree-ssa-dce.c:388
38
--
rguenth at gcc dot gnu dot org changed:
What|Removed |Added
CC||hubicka at gcc dot gnu dot
|
35 matches
Mail list logo