https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
Andrew Pinski changed:
What|Removed |Added
CC||xinliangli at gmail dot com
--- Comment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
Richard Biener changed:
What|Removed |Added
Status|ASSIGNED|RESOLVED
Resolution|---
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #31 from Richard Biener ---
Author: rguenth
Date: Wed Aug 17 08:11:32 2016
New Revision: 239523
URL: https://gcc.gnu.org/viewcvs?rev=239523=gcc=rev
Log:
2016-08-17 Richard Biener
PR
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
Richard Biener changed:
What|Removed |Added
CC||ysrumyan at gmail dot com
--- Comment
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #29 from Andrew Pinski ---
We unswitch on the outer loops now in GCC 6 and above.
So can we consider this as fixed?
The code for aarch64-linux-gnu on the trunk looks like:
.L3:
mov w19, 0
.p2align 3
.L4:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #27 from Richard Biener rguenth at gcc dot gnu.org ---
Some more TLC to be applied before it's ready for prime time (and obviously
testing). Eventually integrating with LIM sounds better?
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
Richard Biener rguenth at gcc dot gnu.org changed:
What|Removed |Added
Attachment #11231|0 |1
is
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #28 from Richard Biener rguenth at gcc dot gnu.org ---
Created attachment 32051
-- http://gcc.gnu.org/bugzilla/attachment.cgi?id=32051action=edit
updated patch
Slight update to apply all possible hoists to PR60042.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
Richard Biener rguenth at gcc dot gnu.org changed:
What|Removed |Added
CC|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #24 from rguenther at suse dot de rguenther at suse dot de
2011-10-20 07:43:44 UTC ---
On Wed, 19 Oct 2011, pinskia at gcc dot gnu.org wrote:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #23 from Andrew Pinski
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #23 from Andrew Pinski pinskia at gcc dot gnu.org 2011-10-19
19:10:38 UTC ---
The other way to handle this is to allow unswitch loops to handle non inner
loops which from what I can tell is a two line patch.
--- Comment #20 from rguenth at gcc dot gnu dot org 2006-10-24 13:56
---
So, where do we want to go?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
--- Comment #21 from rakdver at gcc dot gnu dot org 2006-10-24 13:58
---
(In reply to comment #20)
So, where do we want to go?
Unless the basic patch is approved (which did not happen so far, despite of
several pings), I do not know. I will try to resend the patch, perhaps that
--- Comment #22 from dberlin at gcc dot gnu dot org 2006-10-24 14:23
---
(In reply to comment #19)
So it is indeed chicken and egg ;) load-PRE does not PRE the loads if the
loop
is not in do-while form, and we won't hoist the loop header copies until the
loads are PREd. As to
--- Comment #17 from rguenther at suse dot de 2006-04-10 08:10 ---
Subject: Re: loop header should also be pulled
out of the inner loop too
On Mon, 9 Apr 2006, rakdver at gcc dot gnu dot org wrote:
(In reply to comment #14)
(In reply to comment #11)
I updated the patch for
--- Comment #18 from rakdver at atrey dot karlin dot mff dot cuni dot cz
2006-04-10 10:24 ---
Subject: Re: loop header should also be pulled out of the inner loop too
actually, thinking about it again, it should suffice to teach
invariant_without_guard_p about invariant memory
--- Comment #19 from rguenth at gcc dot gnu dot org 2006-04-10 11:56
---
So it is indeed chicken and egg ;) load-PRE does not PRE the loads if the loop
is not in do-while form, and we won't hoist the loop header copies until the
loads are PREd. As to comment #13, if we are able to
--- Comment #15 from rakdver at gcc dot gnu dot org 2006-04-09 23:51
---
(In reply to comment #14)
(In reply to comment #11)
I updated the patch for current mainline, but it still has issues for some
common uses of loops:
void foo(int *ie, int *je, double *x)
{
int i,
--- Comment #16 from rakdver at gcc dot gnu dot org 2006-04-10 00:03
---
Created an attachment (id=11231)
-- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=11231action=view)
Updated version of the patch, also handling invariant memory references
--
--- Comment #11 from rguenth at gcc dot gnu dot org 2006-04-07 11:34
---
I updated the patch for current mainline, but it still has issues for some
common uses of loops:
void foo(int *ie, int *je, double *x)
{
int i, j;
for (j=0; j*je; ++j)
for (i=0; i*ie; ++i)
x[i+j] =
--- Comment #12 from rguenth at gcc dot gnu dot org 2006-04-07 12:01
---
So what I now have is (ahh, a PROP_loops would be so nice...)
pass_ch
pass_split_crit_edges
pass_pre
[cfg_cleanup to re-merge critical edges]
pass_hoist_guards
which works nice for this scenario, still
--- Comment #13 from rakdver at atrey dot karlin dot mff dot cuni dot cz
2006-04-07 12:57 ---
Subject: Re: loop header should also be pulled out of the inner loop too
I updated the patch for current mainline, but it still has issues for some
common uses of loops:
void foo(int
--- Comment #14 from rakdver at gcc dot gnu dot org 2006-04-07 13:20
---
(In reply to comment #11)
I updated the patch for current mainline, but it still has issues for some
common uses of loops:
void foo(int *ie, int *je, double *x)
{
int i, j;
for (j=0; j*je; ++j)
--- Comment #10 from patchapp at dberlin dot org 2006-02-28 18:15 ---
Subject: Bug number PR23855
A patch for this bug has been added to the patch tracker.
The mailing list url for the patch is
http://gcc.gnu.org/ml/gcc-patches/2006-01/msg01424.html
--
--- Comment #9 from rakdver at gcc dot gnu dot org 2006-01-20 23:56 ---
Patch:
http://gcc.gnu.org/ml/gcc-patches/2006-01/msg01424.html
--
rakdver at gcc dot gnu dot org changed:
What|Removed |Added
--
rakdver at gcc dot gnu dot org changed:
What|Removed |Added
AssignedTo|unassigned at gcc dot gnu |rakdver at gcc dot gnu dot
|dot org
--- Comment #6 from pinskia at gcc dot gnu dot org 2006-01-15 20:08 ---
What really should happen is that we should change the loop to be something
like which helps a different bug too (I cannot find it right now but it has to
do with pulling stuff out of the loops):
void bar(void);
--- Comment #7 from pinskia at gcc dot gnu dot org 2006-01-15 20:12 ---
Oh, that was PR 23970.
And I had meant:
void bar(void);
void foo(int ie, int je)
{
int i, j;
if (0je 0 ie)
{
j = 0;
do {
i =0;
do {
bar();
i++;
} while (i ie);
j++;
} while (j
--- Comment #8 from rakdver at gcc dot gnu dot org 2006-01-15 20:15 ---
Unswitching the condition (i ie) (plus empty loop removal) would produce this
code. Nevertheless, this is a fairly common case, so perhaps it might make
sense to special-case it in loop header copying (for
29 matches
Mail list logo