Issue 204066
Summary [DependenceAnalysis] Assertion failure due to delinearization validation
Labels crash-on-valid, llvm:analysis
Assignees kasuga-fj
Reporter kasuga-fj
    ```llvm
; opt --passes=print<da>

define void @gcd8(i32 %n, ptr %A) {
entry:
  br i1 false, label %entry.for.cond1.preheader_crit_edge, label %for.end15

entry.for.cond1.preheader_crit_edge:              ; preds = %entry
  br label %for.cond1.preheader

for.cond1.preheader: ; preds = %for.inc13.loopexit, %entry.for.cond1.preheader_crit_edge
  %i.06 = phi i32 [ %inc14, %for.inc13.loopexit ], [ 0, %entry.for.cond1.preheader_crit_edge ]
  %B3 = and i32 0, %n
  br label %for.body3

for.body3: ; preds = %for.body3, %for.cond1.preheader
  %indvars.iv = phi i64 [ 0, %for.cond1.preheader ], [ %indvars.iv.next, %for.body3 ]
  %mul4 = mul i32 %B3, %i.06
  %0 = trunc i64 %indvars.iv to i32
  %add = add i32 %mul4, %0
  %idxprom = sext i32 %add to i64
  %arrayidx = getelementptr i32, ptr %A, i64 %idxprom
  store i32 0, ptr %arrayidx, align 4
 %indvars.iv.next = add i64 %indvars.iv, 1
  br i1 false, label %for.body3, label %for.inc13.loopexit

for.inc13.loopexit: ; preds = %for.body3
  %inc14 = add i32 %i.06, 1
  br i1 false, label %for.cond1.preheader, label %for.end15.loopexit

for.end15.loopexit: ; preds = %for.inc13.loopexit
  ret void

for.end15:                                        ; preds = %entry
 ret void
}
```

```
  da analyze - opt: /home/ryotaro/llvm-project/llvm/lib/Analysis/ScalarEvolution.cpp:3242: const llvm::SCEV* llvm::ScalarEvolution::getMulExpr(llvm::SmallVectorImpl<llvm::SCEVUseT<const llvm::SCEV*> >&, llvm::SCEV::NoWrapFlags, unsigned int): Assertion `Ops[i]->getType() == ETy && "SCEVMulExpr operand types don't match!"' failed.
```

Disclosure: The test case is AI generated.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to