Closed
Description
> opt -passes=loop-vectorize -disable-output reduced.ll
opt: Casting.h:578: decltype(auto) llvm::cast(From*) [with To = llvm::VPWidenPHIRecipe; From = llvm::VPRecipeBase]: Assertion `isa<To>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
1. Running pass "function(loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>)" on module "reduced.ll"
2. Running pass "loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>" on function "_QQmain"
#0 0x0000000001b14548 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) ()
#1 0x0000000001b117d4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x00007fa5c5e12990 __restore_rt (/usr/lib64/libpthread.so.0+0x12990)
#3 0x00007fa5c464e52f raise (/usr/lib64/libc.so.6+0x4e52f)
#4 0x00007fa5c4621e65 abort (/usr/lib64/libc.so.6+0x21e65)
#5 0x00007fa5c4621d39 _nl_load_domain.cold.0 (/usr/lib64/libc.so.6+0x21d39)
#6 0x00007fa5c4646e86 (/usr/lib64/libc.so.6+0x46e86)
#7 0x0000000003c10c03 (anonymous namespace)::VPPredicator::convertPhisToBlends(llvm::VPBasicBlock*) VPlanPredicator.cpp:0:0
#8 0x0000000003c17c77 llvm::VPlanTransforms::introduceMasksAndLinearize(llvm::VPlan&, bool) ()
#9 0x0000000003b5ee06 llvm::LoopVectorizationPlanner::tryToBuildVPlanWithVPRecipes(llvm::VFRange&, llvm::LoopVersioning*) ()
#10 0x0000000003b6171c llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount) ()
#11 0x0000000003b6203c llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) ()
#12 0x0000000003b6b67f llvm::LoopVectorizePass::processLoop(llvm::Loop*) ()
#13 0x0000000003b6e270 llvm::LoopVectorizePass::runImpl(llvm::Function&) ()
#14 0x0000000003b6e8c3 llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) ()
#15 0x000000000361e18e llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#16 0x0000000001de1ca0 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) ()
#17 0x0000000002e4a42e llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) NVPTXTargetMachine.cpp:0:0
#18 0x0000000001de21b3 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) ()
#19 0x0000000002e4a3ee llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) NVPTXTargetMachine.cpp:0:0
#20 0x0000000001ddfdd0 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) ()
#21 0x00000000034aa2ba llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) ()
#22 0x0000000001af580a optMain ()
#23 0x00007fa5c463a7e5 __libc_start_main (/usr/lib64/libc.so.6+0x3a7e5)
#24 0x0000000001ae8e6e _start ()
[1] 2235932 abort (core dumped) opt -passes=loop-vectorize -disable-output reduced.ll
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define void @_QQmain() {
._crit_edge:
br label %.preheader.us
.preheader.us: ; preds = %._crit_edge206.us, %._crit_edge
%0 = phi i64 [ %3, %._crit_edge206.us ], [ 0, %._crit_edge ]
br label %._crit_edge206.us
._crit_edge206.us: ; preds = %.preheader.us
%1 = phi i32 [ 0, %.preheader.us ]
%2 = phi i64 [ 0, %.preheader.us ]
%3 = add i64 %0, 1
%exitcond225.not = icmp eq i64 %0, 1
br i1 %exitcond225.not, label %._crit_edge211, label %.preheader.us
._crit_edge211: ; preds = %._crit_edge206.us
ret void
}