Closed
Description
The following input asserts under opt -passes=loop(indvars),loop-vectorize
:
target triple = "x86_64-unknown-linux-gnu"
define void @test(i64* %ptr.base) {
entry:
br label %loop1
loop1:
br i1 true, label %loop1.latch, label %loop2.preheader
loop2.preheader:
br label %loop2
loop2:
%iv = phi i64 [ 0, %loop2.preheader ], [ %iv.next, %loop2 ]
%ptr = phi i64* [ %ptr.base, %loop2.preheader ], [ %ptr.next, %loop2 ]
%iv.next = add nuw nsw i64 %iv, 1
%ptr.next = getelementptr inbounds i64, i64* %ptr, i64 1
%cmp = icmp eq i64 %iv, 1024
br i1 %cmp, label %loop2.exit, label %loop2
loop2.exit:
%ptr.next.lcssa = phi i64* [ %ptr.next, %loop2 ]
br label %loop1.latch
loop1.latch:
br label %loop1
}
opt: /home/npopov/repos/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:5923: unsigned int llvm::LoopVectorizationCostModel::selectInterleaveCount(llvm::ElementCount, unsigned int): Assertion `LoopCost && "Non-zero loop cost expected"' failed.
[...]
#8 0x000000000341d17c llvm::LoopVectorizationCostModel::selectInterleaveCount(llvm::ElementCount, unsigned int) (build/bin/opt+0x341d17c)
#9 0x0000000003424d84 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (build/bin/opt+0x3424d84)
#10 0x000000000342738e llvm::LoopVectorizePass::runImpl(llvm::Function&, llvm::ScalarEvolution&, llvm::LoopInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::BlockFrequencyInfo&, llvm::TargetLibraryInfo*, llvm::DemandedBits&, llvm::AAResults&, llvm::AssumptionCache&, std::function<llvm::LoopAccessInfo const& (llvm::Loop&)>&, llvm::OptimizationRemarkEmitter&, llvm::ProfileSummaryInfo*) (build/bin/opt+0x342738e)
#11 0x0000000003427bbc llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (build/bin/opt+0x3427bbc)
Metadata
Metadata
Assignees
Type
Projects
Status
Done