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: tob...@grosser.es
> To: seb...@gmail.com; hiradi...@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 <hiradi...@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...@samsung.com>
>>> Sebastian Pop <s....@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
                                          

Reply via email to