-
Notifications
You must be signed in to change notification settings - Fork 15.2k
Closed
Bug
Copy link
Description
Reproducer:
; bin/opt -passes=loop-vectorize test.ll -S
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"
; Function Attrs: optsize
define i64 @main() #0 {
entry:
br label %for.body81.i.i.i.i.i
for.body81.i.i.i.i.i: ; preds = %safe_mod_func_uint64_t_u_u.exit.i.i.i.i.i, %entry
%indvars.iv.i.i.i.i.i = phi i64 [ 0, %entry ], [ %indvars.iv.next.i.i.i.i.i, %safe_mod_func_uint64_t_u_u.exit.i.i.i.i.i ]
br label %safe_mod_func_uint64_t_u_u.exit.i.i.i.i.i
safe_mod_func_uint64_t_u_u.exit.i.i.i.i.i: ; preds = %for.body81.i.i.i.i.i
%cond.i.in.i.i.i.i.i = phi i64 [ %indvars.iv.i.i.i.i.i, %for.body81.i.i.i.i.i ]
%indvars.iv.next.i.i.i.i.i = add i64 %indvars.iv.i.i.i.i.i, 1
%exitcond.not.i.i.i.i.i = icmp eq i64 %indvars.iv.i.i.i.i.i, 49
br i1 %exitcond.not.i.i.i.i.i, label %for.cond126.preheader.i.i.i.preheader.i.i, label %for.body81.i.i.i.i.i
for.cond126.preheader.i.i.i.preheader.i.i: ; preds = %safe_mod_func_uint64_t_u_u.exit.i.i.i.i.i
ret i64 %cond.i.in.i.i.i.i.i
}
attributes #0 = { optsize }
LastActiveLane operand vp<%6> must be prefix mask (a header mask or an EVL-derived mask currently)
opt: /data/zyw/llvm-project/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp:8303: void llvm::LoopVectorizationPlanner::buildVPlansWithVPRecipes(llvm::ElementCount, llvm::ElementCount): Assertion `verifyVPlanIsValid(*Plan) && "VPlan is invalid"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0. Program arguments: ../../llvm-build/bin/opt -passes=loop-vectorize reduced.ll -S
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 "main"
#0 0x000072a76d2193ab llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/zyw/llvm-build/bin/../lib/libLLVMSupport.so.22.0git+0x2193ab)
#1 0x000072a76d2162bf SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x000072a76cc45330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#3 0x000072a76cc9eb2c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#4 0x000072a76cc9eb2c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#5 0x000072a76cc9eb2c pthread_kill ./nptl/pthread_kill.c:89:10
#6 0x000072a76cc4527e raise ./signal/../sysdeps/posix/raise.c:27:6
#7 0x000072a76cc288ff abort ./stdlib/abort.c:81:7
#8 0x000072a76cc2881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#9 0x000072a76cc3b517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#10 0x000072a76fce7797 (/data/zyw/llvm-build/bin/../lib/libLLVMVectorize.so.22.0git+0xe7797)
#11 0x000072a76fce79b4 llvm::LoopVectorizationPlanner::plan(llvm::ElementCount, unsigned int) (/data/zyw/llvm-build/bin/../lib/libLLVMVectorize.so.22.0git+0xe79b4)
#12 0x000072a76fcee691 llvm::LoopVectorizePass::processLoop(llvm::Loop*) (/data/zyw/llvm-build/bin/../lib/libLLVMVectorize.so.22.0git+0xee691)
#13 0x000072a76fcf1df1 llvm::LoopVectorizePass::runImpl(llvm::Function&) (/data/zyw/llvm-build/bin/../lib/libLLVMVectorize.so.22.0git+0xf1df1)
#14 0x000072a76fcf226a llvm::LoopVectorizePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/data/zyw/llvm-build/bin/../lib/libLLVMVectorize.so.22.0git+0xf226a)
#15 0x000072a770c8873d llvm::detail::PassModel<llvm::Function, llvm::LoopVectorizePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/data/zyw/llvm-build/bin/../lib/libLLVMPasses.so.22.0git+0x8873d)
#16 0x000072a76d706cdd llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/data/zyw/llvm-build/bin/../lib/libLLVMCore.so.22.0git+0x306cdd)
#17 0x000072a7714ae09d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/data/zyw/llvm-build/bin/../lib/libLLVMX86CodeGen.so.22.0git+0xae09d)
#18 0x000072a76d7077e0 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/data/zyw/llvm-build/bin/../lib/libLLVMCore.so.22.0git+0x3077e0)
#19 0x000072a771da40ad llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/data/zyw/llvm-build/bin/../lib/libLLVMOptDriver.so.22.0git+0x170ad)
#20 0x000072a76d70527d llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/data/zyw/llvm-build/bin/../lib/libLLVMCore.so.22.0git+0x30527d)
#21 0x000072a771dafb0c 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, bool) (/data/zyw/llvm-build/bin/../lib/libLLVMOptDriver.so.22.0git+0x22b0c)
#22 0x000072a771dba971 optMain (/data/zyw/llvm-build/bin/../lib/libLLVMOptDriver.so.22.0git+0x2d971)
#23 0x000072a76cc2a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#24 0x000072a76cc2a28b call_init ./csu/../csu/libc-start.c:128:20
#25 0x000072a76cc2a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#26 0x00006431d504c092 _start (../../llvm-build/bin/opt+0x1092)
Aborted (core dumped)
llvm version: acb798e