* [PATCH] Discard Scops for which entry==exit @ 2015-06-29 20:25 Aditya Kumar 2015-06-30 0:13 ` Sebastian Pop 0 siblings, 1 reply; 8+ messages in thread From: Aditya Kumar @ 2015-06-29 20:25 UTC (permalink / raw) To: hiraditya, gcc-patches, spop In this patch we discard the scops where entry and exit are the same BB. This is an effort to remove graphite-scop-detection.c:limit_scops. Removing the limit_scops function introduces correctness regressions. We are making relevant changes in incremental steps to fix those bugs, and finally we intend to remove limit_scops. 2015-06-29 Aditya Kumar <aditya.k7@samsung.com> Sebastian Pop <s.pop@samsung.com> * graphite-scop-detection.c (build_scops_1): Discard scops for which entry==exit --- gcc/graphite-scop-detection.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index e8ddecd..f57cc4a 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -810,7 +810,14 @@ build_scops_1 (basic_block current, loop_p outermost_loop, { open_scop.exit = sinfo.exit; gcc_assert (open_scop.exit); - scops->safe_push (open_scop); + if (open_scop.entry != open_scop.exit) + scops->safe_push (open_scop); + else + { + sinfo.difficult = true; + sinfo.exits = false; + sinfo.exit = NULL; + } } result.exit = sinfo.exit; -- 2.1.0.243.g30d45f7 ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Discard Scops for which entry==exit 2015-06-29 20:25 [PATCH] Discard Scops for which entry==exit Aditya Kumar @ 2015-06-30 0:13 ` Sebastian Pop 2015-06-30 6:11 ` Tobias Grosser 0 siblings, 1 reply; 8+ messages in thread From: Sebastian Pop @ 2015-06-30 0:13 UTC (permalink / raw) To: Aditya Kumar; +Cc: GCC Patches, Tobias Grosser On Mon, Jun 29, 2015 at 3:04 PM, Aditya Kumar <hiraditya@msn.com> wrote: > In this patch we discard the scops where entry and exit are the same BB. > This is an effort to remove graphite-scop-detection.c:limit_scops. > Removing the limit_scops function introduces correctness regressions. > We are making relevant changes in incremental steps to fix those bugs, > and finally we intend to remove limit_scops. > > 2015-06-29 Aditya Kumar <aditya.k7@samsung.com> > Sebastian Pop <s.pop@samsung.com> > > * graphite-scop-detection.c (build_scops_1): Discard scops for which entry==exit Looks good to me. Let's wait on comments from Tobi before pushing this patch. Thanks, Sebastian > > > --- > gcc/graphite-scop-detection.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c > index e8ddecd..f57cc4a 100644 > --- a/gcc/graphite-scop-detection.c > +++ b/gcc/graphite-scop-detection.c > @@ -810,7 +810,14 @@ build_scops_1 (basic_block current, loop_p outermost_loop, > { > open_scop.exit = sinfo.exit; > gcc_assert (open_scop.exit); > - scops->safe_push (open_scop); > + if (open_scop.entry != open_scop.exit) > + scops->safe_push (open_scop); > + else > + { > + sinfo.difficult = true; > + sinfo.exits = false; > + sinfo.exit = NULL; > + } > } > > result.exit = sinfo.exit; > -- > 2.1.0.243.g30d45f7 > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Discard Scops for which entry==exit 2015-06-30 0:13 ` Sebastian Pop @ 2015-06-30 6:11 ` Tobias Grosser 2015-06-30 7:56 ` Richard Biener 2015-06-30 15:49 ` Aditya K 0 siblings, 2 replies; 8+ messages in thread From: Tobias Grosser @ 2015-06-30 6:11 UTC (permalink / raw) To: Sebastian Pop, Aditya Kumar; +Cc: GCC Patches On 06/30/2015 02:09 AM, Sebastian Pop wrote: > On Mon, Jun 29, 2015 at 3:04 PM, Aditya Kumar <hiraditya@msn.com> wrote: >> In this patch we discard the scops where entry and exit are the same BB. >> This is an effort to remove graphite-scop-detection.c:limit_scops. >> Removing the limit_scops function introduces correctness regressions. >> We are making relevant changes in incremental steps to fix those bugs, >> and finally we intend to remove limit_scops. >> >> 2015-06-29 Aditya Kumar <aditya.k7@samsung.com> >> Sebastian Pop <s.pop@samsung.com> >> >> * graphite-scop-detection.c (build_scops_1): Discard scops for which entry==exit > > Looks good to me. > Let's wait on comments from Tobi before pushing this patch. Hi Sebastian, the commit message should probably give a short reasoning why scops with entry == exit need to be discarded. I currently don't see why they would be incorrect/problematic (despite being possibly very small/empty). Tobias ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Discard Scops for which entry==exit 2015-06-30 6:11 ` Tobias Grosser @ 2015-06-30 7:56 ` Richard Biener 2015-06-30 15:49 ` Aditya K 1 sibling, 0 replies; 8+ messages in thread From: Richard Biener @ 2015-06-30 7:56 UTC (permalink / raw) To: Tobias Grosser; +Cc: Sebastian Pop, Aditya Kumar, GCC Patches On Tue, Jun 30, 2015 at 8:11 AM, Tobias Grosser <tobias@grosser.es> wrote: > On 06/30/2015 02:09 AM, Sebastian Pop wrote: >> >> On Mon, Jun 29, 2015 at 3:04 PM, Aditya Kumar <hiraditya@msn.com> wrote: >>> >>> In this patch we discard the scops where entry and exit are the same BB. >>> This is an effort to remove graphite-scop-detection.c:limit_scops. >>> Removing the limit_scops function introduces correctness regressions. >>> We are making relevant changes in incremental steps to fix those bugs, >>> and finally we intend to remove limit_scops. >>> >>> 2015-06-29 Aditya Kumar <aditya.k7@samsung.com> >>> Sebastian Pop <s.pop@samsung.com> >>> >>> * graphite-scop-detection.c (build_scops_1): Discard scops for >>> which entry==exit >> >> >> Looks good to me. >> Let's wait on comments from Tobi before pushing this patch. > > > Hi Sebastian, > > the commit message should probably give a short reasoning why scops with > entry == exit need to be discarded. I currently don't see why they would be > incorrect/problematic (despite being possibly very small/empty). Dependent on how GRAPHITE initializes loops even a loop can consist of a single basic-block (without LOOPS_HAVE_SIMPLE_LATCHES where you always have at least two BBs for a loop). I suppose GRAPHITE does nothing for non-loops and this is what the check is about? (so rather require a backedge in the SCOP?) Of ocurse I also don't see "correctness" issues here, just maybe a waste of compile-time? Richard. > Tobias ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH] Discard Scops for which entry==exit 2015-06-30 6:11 ` Tobias Grosser 2015-06-30 7:56 ` Richard Biener @ 2015-06-30 15:49 ` Aditya K 2015-07-02 7:53 ` Tobias Grosser 1 sibling, 1 reply; 8+ messages in thread From: Aditya K @ 2015-06-30 15:49 UTC (permalink / raw) To: Tobias Grosser, Sebastian Pop; +Cc: GCC Patches Hi Tobias, A test case (gcc/testsuite/gcc.dg/graphite/pr18792.c) came up when we removed `graphite-scop-detection.c:limit_scops'. The test case is a scop where entry==exit, BB5 (*#) -> BB6 (#); BB6 -> BB5; In this case BB2 is out of the scop. This is basically an empty (infinite) loop with no entry. -- (gdb) p debug_loops(3) loop_0 (header = 0, latch = 1, niter = ) { bb_2 (preds = {bb_0 }, succs = {bb_8 bb_3 }) { <bb 2>: # VUSE <.MEM_7(D)> _5 = *x_10(D)[3]; if (_5 < 0.0) goto <bb 8>; else goto <bb 3>; } bb_3 (preds = {bb_2 }, succs = {bb_4 bb_7 }) { <bb 3>: if (_5>= 0.0) goto <bb 4>; else goto <bb 7>; } bb_4 (preds = {bb_3 bb_8 }, succs = {bb_9 }) { <bb 4>: # .MEM_19 = PHI <.MEM_7(D)(3), .MEM_14(8)> } bb_9 (preds = {bb_4 }, succs = {bb_5 }) { <bb 9>: } bb_7 (preds = {bb_3 }, succs = {bb_1 }) { <bb 7>: # VUSE <.MEM_7(D)> return; } bb_8 (preds = {bb_2 }, succs = {bb_4 }) { <bb 8>: # .MEM_14 = VDEF <.MEM_7(D)> *x_10(D)[3] = 0.0; goto <bb 4>; } loop_2 (header = 5, latch = 6, niter = scev_not_known) { bb_5 (preds = {bb_9 bb_6 }, succs = {bb_6 }) { <bb 5>: # .MEM_25 = PHI <.MEM_19(9), .MEM_25(6)> } bb_6 (preds = {bb_5 }, succs = {bb_5 }) { <bb 6>: goto <bb 5>; } } } digraph all { 0 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#ffffff"> 0 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 2 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#ffffff"> 2 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 3 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#ffffff"> 3 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 4 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#ffffff"> 4 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 9 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#ffffff"> 9 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 5 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#e41a1c"> 5*# </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 6 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#e41a1c"> 6 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 7 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#ffffff"> 7 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 8 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#ffffff"> 8 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 1 [label=< <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"> <TR><TD WIDTH="50" BGCOLOR="#ffffff"> 1 </TD></TR> </TABLE>>, shape=box, style="setlinewidth(0)"] 0 -> 2; 2 -> 8; 2 -> 3; 3 -> 4; 3 -> 7; 4 -> 9; 9 -> 5; 5 -> 6; 6 -> 5; 7 -> 1; 8 -> 4; } -Aditya ---------------------------------------- > Date: Tue, 30 Jun 2015 08:11:01 +0200 > From: tobias@grosser.es > To: sebpop@gmail.com; hiraditya@msn.com > CC: gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] Discard Scops for which entry==exit > > On 06/30/2015 02:09 AM, Sebastian Pop wrote: >> On Mon, Jun 29, 2015 at 3:04 PM, Aditya Kumar <hiraditya@msn.com> wrote: >>> In this patch we discard the scops where entry and exit are the same BB. >>> This is an effort to remove graphite-scop-detection.c:limit_scops. >>> Removing the limit_scops function introduces correctness regressions. >>> We are making relevant changes in incremental steps to fix those bugs, >>> and finally we intend to remove limit_scops. >>> >>> 2015-06-29 Aditya Kumar <aditya.k7@samsung.com> >>> Sebastian Pop <s.pop@samsung.com> >>> >>> * graphite-scop-detection.c (build_scops_1): Discard scops for which entry==exit >> >> Looks good to me. >> Let's wait on comments from Tobi before pushing this patch. > > Hi Sebastian, > > the commit message should probably give a short reasoning why scops with > entry == exit need to be discarded. I currently don't see why they would > be incorrect/problematic (despite being possibly very small/empty). > > Tobias ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Discard Scops for which entry==exit 2015-06-30 15:49 ` Aditya K @ 2015-07-02 7:53 ` Tobias Grosser 2015-07-02 15:37 ` Aditya K 0 siblings, 1 reply; 8+ messages in thread From: Tobias Grosser @ 2015-07-02 7:53 UTC (permalink / raw) To: Aditya K, Sebastian Pop; +Cc: GCC Patches On 06/30/2015 05:47 PM, Aditya K wrote: > Hi Tobias, > A test case (gcc/testsuite/gcc.dg/graphite/pr18792.c) came up when we removed `graphite-scop-detection.c:limit_scops'. > The test case is a scop where entry==exit, > > BB5 (*#) -> BB6 (#); > BB6 -> BB5; > > In this case BB2 is out of the scop. This is basically an empty (infinite) loop with no entr OK, maybe mention this in the commit message. Best, Tobias ^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH] Discard Scops for which entry==exit 2015-07-02 7:53 ` Tobias Grosser @ 2015-07-02 15:37 ` Aditya K 2015-07-02 15:42 ` Tobias Grosser 0 siblings, 1 reply; 8+ messages in thread From: Aditya K @ 2015-07-02 15:37 UTC (permalink / raw) To: Tobias Grosser, Sebastian Pop; +Cc: GCC Patches A test case (gcc/testsuite/gcc.dg/graphite/pr18792.c) came up when we removed `graphite-scop-detection.c:limit_scops'. The test case is a scop where entry==exit, BB5 (*#) -> BB6 (#); BB6 -> BB5; In this case BB2 is out of the scop. This is basically an empty (infinite) loop. 2015-06-29 Aditya Kumar <aditya.k7@samsung.com> Sebastian Pop <s.pop@samsung.com> * graphite-scop-detection.c (build_scops_1): Discard scops for which entry==exit --- gcc/graphite-scop-detection.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/graphite-scop-detection.c b/gcc/graphite-scop-detection.c index e8ddecd..f57cc4a 100644 --- a/gcc/graphite-scop-detection.c +++ b/gcc/graphite-scop-detection.c @@ -810,7 +810,14 @@ build_scops_1 (basic_block current, loop_p outermost_loop, { open_scop.exit = sinfo.exit; gcc_assert (open_scop.exit); - scops->safe_push (open_scop); + if (open_scop.entry != open_scop.exit) + scops->safe_push (open_scop); + else + { + sinfo.difficult = true; + sinfo.exits = false; + sinfo.exit = NULL; + } } result.exit = sinfo.exit; -- 2.1.0.243.g30d45f7 ---------------------------------------- > Date: Thu, 2 Jul 2015 09:53:25 +0200 > From: tobias@grosser.es > To: hiraditya@msn.com; sebpop@gmail.com > CC: gcc-patches@gcc.gnu.org > Subject: Re: [PATCH] Discard Scops for which entry==exit > > On 06/30/2015 05:47 PM, Aditya K wrote: >> Hi Tobias, >> A test case (gcc/testsuite/gcc.dg/graphite/pr18792.c) came up when we removed `graphite-scop-detection.c:limit_scops'. >> The test case is a scop where entry==exit, >> >> BB5 (*#) -> BB6 (#); >> BB6 -> BB5; >> >> In this case BB2 is out of the scop. This is basically an empty (infinite) loop with no entr > > OK, maybe mention this in the commit message. > > > Best, > Tobias > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] Discard Scops for which entry==exit 2015-07-02 15:37 ` Aditya K @ 2015-07-02 15:42 ` Tobias Grosser 0 siblings, 0 replies; 8+ messages in thread From: Tobias Grosser @ 2015-07-02 15:42 UTC (permalink / raw) To: Aditya K, Sebastian Pop; +Cc: GCC Patches On 07/02/2015 05:37 PM, Aditya K wrote: > A test case (gcc/testsuite/gcc.dg/graphite/pr18792.c) came up when we removed `graphite-scop-detection.c:limit_scops'. > The test case is a scop where entry==exit, > > BB5 (*#) -> BB6 (#); > BB6 -> BB5; > > In this case BB2 is out of the scop. This is basically an empty (infinite) loop. LGTM. Tobias ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2015-07-02 15:42 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-06-29 20:25 [PATCH] Discard Scops for which entry==exit Aditya Kumar 2015-06-30 0:13 ` Sebastian Pop 2015-06-30 6:11 ` Tobias Grosser 2015-06-30 7:56 ` Richard Biener 2015-06-30 15:49 ` Aditya K 2015-07-02 7:53 ` Tobias Grosser 2015-07-02 15:37 ` Aditya K 2015-07-02 15:42 ` Tobias Grosser
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).