| 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