[llvm-dev] SCEV cannot compute the trip count of Simple loop

Kevin Choi via llvm-dev llvm-dev at lists.llvm.org
Fri Sep 16 14:50:19 PDT 2016


Assuming compiler assumes program is free of UB, I suppose trip count of 2
is always valid. I misplaced valid to trip count when it should've been
"program is valid only for x in [0.6]".

On Fri, Sep 16, 2016 at 2:29 PM, Mehdi Amini <mehdi.amini at apple.com> wrote:

>
> > On Sep 16, 2016, at 2:23 PM, Sanjoy Das <sanjoy at playingwithpointers.com>
> wrote:
> >
> > Hi Mehdi,
> >
> > Mehdi Amini wrote:
> > >
> > >> On Sep 16, 2016, at 1:56 PM, Kevin Choi via llvm-dev
> > >> <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
> > >>
> > >> > int mat[9][9][9];
> > >> > for (p = (x+1) ; p < (x+3) ;p++)
> > >> > mat[x][p-1][i] = mat[x][p-1][i] + 5;____
> > >> > }
> > >> The trip count of 2 should be valid for x in [0,6].
> > >
> > > It is not clear to me why the trip count of 2 isn’t *always* valid.
> >
> > It is always valid to return 2 as the trip count.  But SCEV today is
> > not always able to exploit nsw/nuw due to some systemic issues.
>
> I understood that SCEV can’t deduce it.
> The point was more “abstracting the current implementation limitation”,
> there is no fundamental issue with this code.
>
>> Mehdi
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160916/80848879/attachment.html>


More information about the llvm-dev mailing list