[LLVMdev] [LNT] Question about results reliability in LNT infrustructure

Sergei Larin slarin at codeaurora.org
Wed Jul 3 10:29:09 PDT 2013


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?  ...and how it should be
handled in theory?

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






More information about the llvm-dev mailing list