This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [graphite] Discuss SCoP definition
- From: "Sebastian Pop" <sebastian dot pop at amd dot com>
- To: "Tobias Grosser" <grosser at fim dot uni-passau dot de>
- Cc: GCC at gcc dot gnu dot org, "Konrad Trifunovic" <konrad dot trifunovic at gmail dot com>
- Date: Fri, 8 Feb 2008 10:11:02 -0600
- Subject: Re: [graphite] Discuss SCoP definition
- References: <bd2d0a90802071242w3f5e11b9re7b366ca258eaa68@mail.gmail.com> <1202436997.1770.120.camel@tobias.wg.>
2008/2/7 Tobias Grosser <grosser@fim.uni-passau.de>:
> 2. Which loops are part of a SCoP:
>
> At the moment we detect the loops, which are part of a SCoP like this:
>
> FORALL_BB_IN_SCOP(bb)
> {
> VEC_loops_add(bb->loop_father);
> }
>
> This seems incorrect if we look at this SCoP:
>
> h #loop0
> |
> a # loop0
> |
> v
> b # loop1
> |\
> v ^
> b | #loop1
> | d #loop1
> v/
> c #loop1
> |
> v
> f #loop0
>
> entry: h
> exit: e
> SCoP: a, b, c, d, f
>
> So there may be bbs like "a", which have a loop_father, but the
> loop_father is not completely contained in the SCoP. Therefore I do not
> think, it is correct to make these loops part of the SCoP.
FORALL_BB_IN_SCOP(bb)
{
loop = bb->loop_father;
entry_loop = scop_entry (scop)->loop_father;
if (loop != entry_loop)
VEC_loops_add(loop);
}
?
Sebastian