Skip to content

[LoopVectorize] Assertion `verifyVPlanIsValid(*Plan) && "VPlan is invalid"' failed. #167813

@dtcxzyw

Description

@dtcxzyw

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

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions