Issue |
89438
|
Summary |
[SLPVectorize] Assertion `MinBWs.contains(TE->UserTreeIndices.front().UserTE) && "Expected user in MinBWs."' failed.
|
Labels |
llvm:SLPVectorizer,
crash-on-valid
|
Assignees |
|
Reporter |
dtcxzyw
|
It breaks our CI when building spike: https://github.com/dtcxzyw/llvm-opt-benchmark/issues/536.
Reduced test case: https://godbolt.org/z/484T99KPh
```
; bin/opt -passes=slp-vectorizer -S test.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-pc-linux-gnu"
define i64 @_Z20fast_rv32i_vaesdm_vvP11processor_t6insn_tm(ptr %p) {
%1 = getelementptr i8, ptr %p, i64 13
%2 = getelementptr i8, ptr %p, i64 14
%3 = getelementptr i8, ptr %p, i64 15
%4 = getelementptr i8, ptr %p, i64 12
%5 = zext i8 0 to i32
%6 = and i32 %5, 0
%.not866 = icmp eq i32 %6, 0
%7 = select i1 %.not866, i32 0, i32 0
%8 = xor i32 0, %7
%9 = zext i8 0 to i32
%10 = and i32 %9, 0
%.not871 = icmp eq i32 %10, 0
%11 = select i1 %.not871, i32 0, i32 0
%12 = xor i32 0, %11
%13 = xor i32 %9, 0
%14 = xor i32 %13, 0
%15 = xor i32 %14, 0
%16 = xor i32 %15, 0
%17 = xor i32 %16, 0
%18 = xor i32 %17, %12
%19 = xor i32 %18, 0
%20 = xor i32 %19, 0
%21 = xor i32 %20, 0
%22 = xor i32 %21, 0
%23 = trunc i32 %22 to i8
store i8 %23, ptr %4, align 1
%24 = xor i32 %9, 0
%25 = xor i32 %24, 0
%26 = xor i32 %25, 0
%27 = xor i32 %26, 0
%28 = xor i32 %27, 0
%29 = xor i32 %28, %8
%30 = xor i32 %29, 0
%31 = xor i32 %30, 0
%32 = xor i32 %31, 0
%33 = xor i32 %32, 0
%34 = trunc i32 %33 to i8
store i8 %34, ptr %1, align 1
%35 = xor i32 0, %5
%36 = xor i32 %35, 0
%37 = xor i32 %36, 0
%38 = xor i32 %37, 0
%39 = xor i32 %38, 0
%40 = xor i32 %39, %8
%41 = xor i32 %40, 0
%42 = xor i32 %41, 0
%43 = xor i32 %42, 0
%44 = xor i32 %43, 0
%45 = trunc i32 %44 to i8
store i8 %45, ptr %2, align 1
%46 = xor i32 %35, 0
%47 = xor i32 %46, 0
%48 = xor i32 %47, 0
%49 = xor i32 %48, 0
%50 = xor i32 %49, %8
%51 = xor i32 %50, 0
%52 = xor i32 %51, 0
%53 = xor i32 %52, 0
%54 = xor i32 %53, 0
%55 = trunc i32 %54 to i8
store i8 %55, ptr %3, align 1
ret i64 0
}
```
```
opt: /home/dtcxzyw/WorkSpace/Projects/compilers/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13142: llvm::Value* llvm::slpvectorizer::BoUpSLP::vectorizeTree(const ExtraValueToDebugLocsMap&, llvm::SmallVectorImpl<std::pair<llvm::Value*, llvm::Value*> >&, llvm::Instruction*): Assertion `MinBWs.contains(TE->UserTreeIndices.front().UserTE) && "Expected user in MinBWs."' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: bin/opt -passes=slp-vectorizer reduced.ll -S
#0 0x000070d20f217b20 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.19.0git+0x217b20)
#1 0x000070d20f214b2f llvm::sys::RunSignalHandlers() (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.19.0git+0x214b2f)
#2 0x000070d20f214c85 SignalHandler(int) Signals.cpp:0:0
#3 0x000070d20ec42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x000070d20ec969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x000070d20ec969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x000070d20ec969fc pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x000070d20ec42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
#8 0x000070d20ec287f3 abort ./stdlib/abort.c:81:7
#9 0x000070d20ec2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000070d20ec39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x000070d209b8a836 llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::MapVector<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 2u>, llvm::DenseMap<llvm::Value*, unsigned int, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, unsigned int>>, llvm::SmallVector<std::pair<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 2u>>, 0u>> const&, llvm::SmallVectorImpl<std::pair<llvm::Value*, llvm::Value*>>&, llvm::Instruction*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.19.0git+0x18a836)
#12 0x000070d209b8afcc llvm::slpvectorizer::BoUpSLP::vectorizeTree() (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.19.0git+0x18afcc)
#13 0x000070d209b9e368 llvm::SLPVectorizerPass::vectorizeStoreChain(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, unsigned int, unsigned int) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.19.0git+0x19e368)
#14 0x000070d209b9f309 llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&)::'lambda'(std::set<std::pair<unsigned int, int>, llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&)::StoreDistCompare, std::allocator<std::pair<unsigned int, int>>> const&)::operator()(std::set<std::pair<unsigned int, int>, llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&)::StoreDistCompare, std::allocator<std::pair<unsigned int, int>>> const&) const SLPVectorizer.cpp:0:0
#15 0x000070d209b9fddc llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.19.0git+0x19fddc)
#16 0x000070d209ba04d9 llvm::SLPVectorizerPass::vectorizeStoreChains(llvm::slpvectorizer::BoUpSLP&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.19.0git+0x1a04d9)
#17 0x000070d209ba0fa1 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.19.0git+0x1a0fa1)
#18 0x000070d209ba1a55 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.19.0git+0x1a1a55)
#19 0x000070d20a4c3866 llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMPasses.so.19.0git+0xc3866)
#20 0x000070d207547f80 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x347f80)
#21 0x000070d20ded3956 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0xd3956)
#22 0x000070d207546c17 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x346c17)
#23 0x000070d20ded4d56 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMX86CodeGen.so.19.0git+0xd4d56)
#24 0x000070d207544e31 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.19.0git+0x344e31)
#25 0x000070d20f705314 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) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.19.0git+0x2d314)
#26 0x000070d20f712502 optMain (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.19.0git+0x3a502)
#27 0x000070d20ec29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#28 0x000070d20ec29e40 call_init ./csu/../csu/libc-start.c:128:20
#29 0x000070d20ec29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#30 0x00006220d953f095 _start (bin/opt+0x1095)
Aborted (core dumped)
```
llvm version: a6a4d4a0949fa7aab93429754704f28505d56d3f
cc @alexey-bataev
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs