[LLVMdev] [Polly] Assert in Scope construction

Hongbin Zheng etherzhhb at gmail.com
Thu Jul 4 19:20:35 PDT 2013


Hi Sergei,


On Thu, Jul 4, 2013 at 1:36 AM, Sergei Larin <slarin at codeaurora.org> wrote:

> Should have changed the subject line...
>
> ---
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
> by
> The Linux Foundation
>
>
> > -----Original Message-----
> > From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
> > On Behalf Of Sergei Larin
> > Sent: Wednesday, July 03, 2013 12:29 PM
> > To: 'Tobias Grosser'
> > Cc: 'llvmdev'
> > Subject: Re: [LLVMdev] [LNT] Question about results reliability in LNT
> > infrustructure
> >
> >
> > Tobias,
> >
> >   I seem to trigger an assert in Polly lib/Analysis/TempScopInfo.cpp
> >
> > void TempScopInfo::buildAffineCondition(Value &V, bool inverted,
> >                                         Comparison **Comp) const { ...
> >   ICmpInst *ICmp = dyn_cast<ICmpInst>(&V);
> >   assert(ICmp && "Only ICmpInst of constant as condition supported!");
> ...
> >
> >   The code it chokes on looks like this (see below). The problem is this
> OR-ed
> > compare result:
> >
> >   %cmp3 = icmp sgt i32 %j.0, 2
> >   %cmp5 = icmp eq i32 %j.0, 1
> >   %or.cond13 = or i1 %cmp3, %cmp5
> > <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ==
> > Value V
> >
> >
> > My question - is this a bug or a (missing) feature?

I think it is a bug.


>  ...and how it should
> be
> > handled in theory?
>
Such condition should be filtered out by ScopDetection (line 188 of
ScopDetection.cpp).

Thanks
Hongbin

>
> > Thanks.
> >
> > Sergei
> >
> > define i32 @main() #0 {
> > entry:
> >   %j.0.lcssa.reg2mem = alloca i32, align 8
> >   br label %entry.split
> >
> > entry.split:                                      ; preds = %entry
> >   %call = tail call i32 @foo(i32 0, i32 0) #2
> >   %call1 = tail call i32 @foo(i32 %call, i32 %call) #2
> >   br label %for.cond2
> >
> > for.cond2:                                        ; preds = %for.inc,
> > %entry.split
> >   %j.0 = phi i32 [ 0, %entry.split ], [ %inc, %for.inc ]
> >   %cmp3 = icmp sgt i32 %j.0, 2
> >   %cmp5 = icmp eq i32 %j.0, 1
> >   %or.cond13 = or i1 %cmp3, %cmp5
> >   store i32 %j.0, i32* %j.0.lcssa.reg2mem, align 8
> >   br i1 %or.cond13, label %for.end8, label %for.inc,
> > !llvm.listen.preserve.while.opt !0
> >
> > for.inc:                                          ; preds = %for.cond2
> >   %inc = add nsw i32 %j.0, 1
> >   br label %for.cond2
> >
> > for.end8:                                         ; preds = %for.cond2
> >   %j.0.lcssa.reload = load i32* %j.0.lcssa.reg2mem, align 8
> >   %cmp10 = icmp eq i32 %j.0.lcssa.reload, 1
> >   %add = add nsw i32 %j.0.lcssa.reload, 1
> >   %retval.0 = select i1 %cmp10, i32 1, i32 %add
> >   ret i32 %retval.0
> > }
> >
> >
> > ---
> > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> > hosted by The Linux Foundation
> >
> >
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130705/309413b1/attachment.html>


More information about the llvm-dev mailing list