Issue 125369
Summary [SLPVectorizer] Assertion `idx < size()' failed.
Labels llvm:SLPVectorizer, crash-on-valid
Assignees
Reporter dtcxzyw
    Reproducer: https://godbolt.org/z/qjncb9xcc
```
; bin/opt -passes=slp-vectorizer reduced.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"

define i32 @main(i32 %inc127.i.i.i9131149.i.i) {
entry:
  br label %for.cond91.preheader.i.i

for.cond91.preheader.i.i: ; preds = %for.end325.i.i, %entry
  %g_845.promoted114212011308.i.i = phi i32 [ 0, %entry ], [ 0, %for.end325.i.i ]
  %g_899.promoted115112181307.i.i = phi i32 [ 0, %entry ], [ 0, %for.end325.i.i ]
 %g_914.promoted117112561305.i.i = phi i32 [ 0, %entry ], [ 0, %for.end325.i.i ]
  br label %for.cond12.preheader.i.i.i

for.cond12.preheader.i.i.i: ; preds = %for.cond183.preheader.i.i.i, %for.cond91.preheader.i.i
  %g_914.promoted11711266.i.i = phi i32 [ %g_914.promoted117112561305.i.i, %for.cond91.preheader.i.i ], [ 0, %for.cond183.preheader.i.i.i ]
  %g_899.promoted11511230.i.i = phi i32 [ %g_899.promoted115112181307.i.i, %for.cond91.preheader.i.i ], [ 0, %for.cond183.preheader.i.i.i ]
  %g_845.promoted11421211.i.i = phi i32 [ %g_845.promoted114212011308.i.i, %for.cond91.preheader.i.i ], [ 0, %for.cond183.preheader.i.i.i ]
  br label %for.end126.i865.i.i

for.cond183.preheader.i.i.i:                      ; No predecessors!
  br label %for.cond12.preheader.i.i.i

for.end126.i865.i.i: ; preds = %func_166.exit1028.i.i, %func_265.exit.i.i954.i.i, %for.cond12.preheader.i.i.i
  %g_914.promoted11711261.i.i = phi i32 [ 0, %func_166.exit1028.i.i ], [ %g_914.promoted11711266.i.i, %for.cond12.preheader.i.i.i ], [ %g_914.promoted11711259.i.i, %func_265.exit.i.i954.i.i ]
  %g_845.promoted11421206.i.i = phi i32 [ %g_845.promoted114212011308.i.i, %func_166.exit1028.i.i ], [ %g_845.promoted11421211.i.i, %for.cond12.preheader.i.i.i ], [ %g_845.promoted11421204.i.i, %func_265.exit.i.i954.i.i ]
 %dec341.i.i.i10161176.i.i = phi i32 [ 0, %func_166.exit1028.i.i ], [ %g_914.promoted11711266.i.i, %for.cond12.preheader.i.i.i ], [ %dec341.i.i.i10161174.i.i, %func_265.exit.i.i954.i.i ]
 %inc127.i.i.i9131147.i.i = phi i32 [ %inc127.i.i.i9131149.i.i, %func_166.exit1028.i.i ], [ %g_845.promoted11421211.i.i, %for.cond12.preheader.i.i.i ], [ %inc127.i.i.i9131145.i.i, %func_265.exit.i.i954.i.i ]
  %g_914.promoted692.i866.i.i = phi i32 [ %inc127.i.i.i9131149.i.i, %func_166.exit1028.i.i ], [ %g_914.promoted11711266.i.i, %for.cond12.preheader.i.i.i ], [ %g_914.promoted689.i955.i.i, %func_265.exit.i.i954.i.i ]
 %g_899.promoted676.i868.i.i = phi i32 [ 0, %func_166.exit1028.i.i ], [ %g_899.promoted11511230.i.i, %for.cond12.preheader.i.i.i ], [ %g_899.promoted671.i957.i.i, %func_265.exit.i.i954.i.i ]
 %g_845.promoted666.i869.i.i = phi i32 [ %inc127.i.i.i9131149.i.i, %func_166.exit1028.i.i ], [ %g_845.promoted11421211.i.i, %for.cond12.preheader.i.i.i ], [ %g_845.promoted663.i958.i.i, %func_265.exit.i.i954.i.i ]
  %g_914.promoted580627.i870.i.i = phi i32 [ %inc127.i.i.i9131149.i.i, %func_166.exit1028.i.i ], [ %g_914.promoted11711266.i.i, %for.cond12.preheader.i.i.i ], [ %g_914.promoted689.i955.i.i, %func_265.exit.i.i954.i.i ]
 %g_899.promoted566615.i872.i.i = phi i32 [ 0, %func_166.exit1028.i.i ], [ %g_899.promoted11511230.i.i, %for.cond12.preheader.i.i.i ], [ %g_899.promoted671.i957.i.i, %func_265.exit.i.i954.i.i ]
 %g_845.promoted560607.i873.i.i = phi i32 [ %inc127.i.i.i9131149.i.i, %func_166.exit1028.i.i ], [ %g_845.promoted11421211.i.i, %for.cond12.preheader.i.i.i ], [ %g_845.promoted663.i958.i.i, %func_265.exit.i.i954.i.i ]
  %g_899.promoted573592.i877.i.i = phi i32 [ 0, %func_166.exit1028.i.i ], [ %g_899.promoted11511230.i.i, %for.cond12.preheader.i.i.i ], [ %g_899.promoted671.i957.i.i, %func_265.exit.i.i954.i.i ]
  %g_914.promoted585590.i879.i.i = phi i32 [ 0, %func_166.exit1028.i.i ], [ %g_914.promoted11711266.i.i, %for.cond12.preheader.i.i.i ], [ %g_914.promoted689.i955.i.i, %func_265.exit.i.i954.i.i ]
  br label %for.cond4.preheader.i.i884.i.i

for.cond4.preheader.i.i884.i.i: ; preds = %func_265.exit.i.i954.i.i, %for.end126.i865.i.i
 %g_914.promoted11711260.i.i = phi i32 [ 0, %for.end126.i865.i.i ], [ 0, %func_265.exit.i.i954.i.i ]
  %g_845.promoted11421205.i.i = phi i32 [ 0, %for.end126.i865.i.i ], [ 0, %func_265.exit.i.i954.i.i ]
 %dec341.i.i.i10161175.i.i = phi i32 [ 0, %for.end126.i865.i.i ], [ 0, %func_265.exit.i.i954.i.i ]
  %inc127.i.i.i9131146.i.i = phi i32 [ 0, %for.end126.i865.i.i ], [ 0, %func_265.exit.i.i954.i.i ]
 %g_914.promoted690.i885.i.i = phi i32 [ 0, %for.end126.i865.i.i ], [ 0, %func_265.exit.i.i954.i.i ]
  %g_899.promoted674.i887.i.i = phi i32 [ 0, %for.end126.i865.i.i ], [ 0, %func_265.exit.i.i954.i.i ]
 %g_845.promoted664.i888.i.i = phi i32 [ 0, %for.end126.i865.i.i ], [ 0, %func_265.exit.i.i954.i.i ]
  br i1 false, label %for.cond143.preheader.i.i.i914.i.i, label %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i

safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i: ; preds = %for.cond4.preheader.i.i884.i.i
  %dec341.i.i.i1016.i.i = add i32 0, 1
  br label %func_265.exit.i.i954.i.i

for.cond143.preheader.i.i.i914.i.i: ; preds = %for.cond4.preheader.i.i884.i.i
  br i1 false, label %cleanup320.i.i.i1013.i.i, label %if.end1330.i.i.i939.i.i

cleanup320.i.i.i1013.i.i: ; preds = %for.cond143.preheader.i.i.i914.i.i
  br label %func_265.exit.i.i954.i.i

if.end1330.i.i.i939.i.i: ; preds = %for.cond143.preheader.i.i.i914.i.i
  br label %func_265.exit.i.i954.i.i

func_265.exit.i.i954.i.i: ; preds = %if.end1330.i.i.i939.i.i, %cleanup320.i.i.i1013.i.i, %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i
  %g_914.promoted11711259.i.i = phi i32 [ %dec341.i.i.i1016.i.i, %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i ], [ %g_914.promoted11711260.i.i, %cleanup320.i.i.i1013.i.i ], [ %g_914.promoted11711260.i.i, %if.end1330.i.i.i939.i.i ]
 %g_845.promoted11421204.i.i = phi i32 [ %g_845.promoted11421205.i.i, %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i ], [ 0, %cleanup320.i.i.i1013.i.i ], [ 0, %if.end1330.i.i.i939.i.i ]
 %dec341.i.i.i10161174.i.i = phi i32 [ %dec341.i.i.i1016.i.i, %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i ], [ %dec341.i.i.i10161175.i.i, %cleanup320.i.i.i1013.i.i ], [ %dec341.i.i.i10161175.i.i, %if.end1330.i.i.i939.i.i ]
  %inc127.i.i.i9131145.i.i = phi i32 [ %inc127.i.i.i9131146.i.i, %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i ], [ 0, %cleanup320.i.i.i1013.i.i ], [ 0, %if.end1330.i.i.i939.i.i ]
 %g_914.promoted689.i955.i.i = phi i32 [ %dec341.i.i.i1016.i.i, %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i ], [ %g_914.promoted690.i885.i.i, %cleanup320.i.i.i1013.i.i ], [ %g_914.promoted690.i885.i.i, %if.end1330.i.i.i939.i.i ]
 %g_899.promoted671.i957.i.i = phi i32 [ %g_899.promoted674.i887.i.i, %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i ], [ 0, %cleanup320.i.i.i1013.i.i ], [ 0, %if.end1330.i.i.i939.i.i ]
 %g_845.promoted663.i958.i.i = phi i32 [ %g_845.promoted664.i888.i.i, %safe_mod_func_uint8_t_u_u.exit.i.i.i909.i.i ], [ 0, %cleanup320.i.i.i1013.i.i ], [ 0, %if.end1330.i.i.i939.i.i ]
  br i1 false, label %for.end126.i865.i.i, label %for.cond4.preheader.i.i884.i.i

func_166.exit1028.i.i: ; No predecessors!
  br label %for.end126.i865.i.i

for.end325.i.i: ; No predecessors!
  br label %for.cond91.preheader.i.i
}
```
```
opt: /home/dtcxzyw/WorkSpace/Projects/compilers/llvm-project/llvm/include/llvm/ADT/SmallVector.h:291: T& llvm::SmallVectorTemplateCommon<T, <template-parameter-1-2> >::operator[](size_type) [with T = std::unique_ptr<llvm::slpvectorizer::BoUpSLP::TreeEntry>; <template-parameter-1-2> = void; reference = std::unique_ptr<llvm::slpvectorizer::BoUpSLP::TreeEntry>&; size_type = long unsigned int]: Assertion `idx < size()' 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
1.      Running pass "function(slp-vectorizer)" on module "reduced.ll"
2.      Running pass "slp-vectorizer" on function "main"
 #0 0x000070561e4173f2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.21.0git+0x2173f2)
 #1 0x000070561e4142df llvm::sys::RunSignalHandlers() (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMSupport.so.21.0git+0x2142df)
 #2 0x000070561e41441c SignalHandler(int) Signals.cpp:0:0
 #3 0x000070561de42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000070561de969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x000070561de969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x000070561de969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x000070561de42476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x000070561de287f3 abort ./stdlib/abort.c:81:7
 #9 0x000070561de2871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x000070561de39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x0000705616c0807e llvm::InstructionCost llvm::slpvectorizer::BoUpSLP::processBuildVector<llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator, llvm::InstructionCost, llvm::TargetTransformInfo, llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP, llvm::SmallPtrSetImpl<llvm::Value*>>(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::Type*, llvm::TargetTransformInfo&, llvm::ArrayRef<llvm::Value*>&, llvm::slpvectorizer::BoUpSLP&, llvm::SmallPtrSetImpl<llvm::Value*>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x20807e)
#12 0x0000705616c09306 llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x209306)
#13 0x0000705616c1eafe llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x21eafe)
#14 0x0000705616c291ba llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x2291ba)
#15 0x0000705616c2df47 bool tryToVectorizeSequence<llvm::Value>(llvm::SmallVectorImpl<llvm::Value*>&, llvm::function_ref<bool (llvm::Value*, llvm::Value*)>, llvm::function_ref<bool (llvm::Value*, llvm::Value*)>, llvm::function_ref<bool (llvm::ArrayRef<llvm::Value*>, bool)>, bool, llvm::slpvectorizer::BoUpSLP&) (.constprop.0) SLPVectorizer.cpp:0:0
#16 0x0000705616c2ff68 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x22ff68)
#17 0x0000705616c37fe6 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.21.0git+0x237fe6)
#18 0x0000705616c38c10 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMVectorize.so.21.0git+0x238c10)
#19 0x00007056189201c5 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.21.0git+0x1201c5)
#20 0x000070561590fc3d 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.21.0git+0x30fc3d)
#21 0x000070561cedbef5 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.21.0git+0xdbef5)
#22 0x000070561590de05 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/../lib/libLLVMCore.so.21.0git+0x30de05)
#23 0x000070561cedc8b5 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.21.0git+0xdc8b5)
#24 0x000070561590eaba 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.21.0git+0x30eaba)
#25 0x000070561e6a6dc6 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.21.0git+0x2fdc6)
#26 0x000070561e6b25c2 optMain (/home/dtcxzyw/WorkSpace/Projects/compilers/LLVM/llvm-build/bin/../lib/libLLVMOptDriver.so.21.0git+0x3b5c2)
#27 0x000070561de29d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#28 0x000070561de29e40 call_init ./csu/../csu/libc-start.c:128:20
#29 0x000070561de29e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#30 0x00005f74b8b1b095 _start (bin/opt+0x1095)
Aborted (core dumped)
```
llvm version: 5c3c0a8cec9205efba78583bd0b8a646270968a1
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to