[llvm] [SLP]Do extra analysis int minbitwidth if some checks return false. (PR #84363)

via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 20 23:16:32 PDT 2024


mikaelholmen wrote:

Hi @alexey-bataev 
The following crashes with this:
```
opt --passes slp-vectorizer bbi-93626.ll -o /dev/null
```
It fails like:
```
opt: ../include/llvm/ADT/APInt.h:1347: void llvm::APInt::setBits(unsigned int, unsigned int): Assertion `loBit <= BitWidth && "loBit out of range"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: ../../main-github/llvm/build-all/bin/opt --passes slp-vectorizer bbi-93626.ll -o /dev/null
 #0 0x000055b3c282db37 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (../../main-github/llvm/build-all/bin/opt+0x3e18b37)
 #1 0x000055b3c282b60e llvm::sys::RunSignalHandlers() (../../main-github/llvm/build-all/bin/opt+0x3e1660e)
 #2 0x000055b3c282e4ff SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f48507b4630 __restore_rt sigaction.c:0:0
 #4 0x00007f484defb387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007f484defca78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007f484def41a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007f484def4252 (/lib64/libc.so.6+0x2f252)
 #8 0x000055b3c284ed58 llvm::APInt::setBits(unsigned int, unsigned int) APInt.cpp:0:0
 #9 0x000055b3c40731fd llvm::slpvectorizer::BoUpSLP::collectValuesToDemote(llvm::Value*, bool, unsigned int&, llvm::SmallVectorImpl<llvm::Value*>&, llvm::DenseMap<llvm::Instruction*, llvm::SmallVector<unsigned int, 12u>, llvm::DenseMapInfo<llvm::Instruction*, void>, llvm::detail::DenseMapPair<llvm::Instruction*, llvm::SmallVector<unsigned int, 12u>>>&, llvm::DenseSet<llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>>&, unsigned int&, bool&, bool) const::$_141::operator()(llvm::Value*, unsigned int&) const SLPVectorizer.cpp:0:0
#10 0x000055b3c4072f56 llvm::slpvectorizer::BoUpSLP::collectValuesToDemote(llvm::Value*, bool, unsigned int&, llvm::SmallVectorImpl<llvm::Value*>&, llvm::DenseMap<llvm::Instruction*, llvm::SmallVector<unsigned int, 12u>, llvm::DenseMapInfo<llvm::Instruction*, void>, llvm::detail::DenseMapPair<llvm::Instruction*, llvm::SmallVector<unsigned int, 12u>>>&, llvm::DenseSet<llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>>&, unsigned int&, bool&, bool) const (../../main-github/llvm/build-all/bin/opt+0x565df56)
#11 0x000055b3c40733a5 llvm::slpvectorizer::BoUpSLP::collectValuesToDemote(llvm::Value*, bool, unsigned int&, llvm::SmallVectorImpl<llvm::Value*>&, llvm::DenseMap<llvm::Instruction*, llvm::SmallVector<unsigned int, 12u>, llvm::DenseMapInfo<llvm::Instruction*, void>, llvm::detail::DenseMapPair<llvm::Instruction*, llvm::SmallVector<unsigned int, 12u>>>&, llvm::DenseSet<llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>>&, unsigned int&, bool&, bool) const::$_144::operator()(llvm::ArrayRef<llvm::Value*>, bool&) const SLPVectorizer.cpp:0:0
#12 0x000055b3c4072ad1 llvm::slpvectorizer::BoUpSLP::collectValuesToDemote(llvm::Value*, bool, unsigned int&, llvm::SmallVectorImpl<llvm::Value*>&, llvm::DenseMap<llvm::Instruction*, llvm::SmallVector<unsigned int, 12u>, llvm::DenseMapInfo<llvm::Instruction*, void>, llvm::detail::DenseMapPair<llvm::Instruction*, llvm::SmallVector<unsigned int, 12u>>>&, llvm::DenseSet<llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>>&, unsigned int&, bool&, bool) const (../../main-github/llvm/build-all/bin/opt+0x565dad1)
#13 0x000055b3c407442c llvm::slpvectorizer::BoUpSLP::computeMinimumValueSizes() (../../main-github/llvm/build-all/bin/opt+0x565f42c)
#14 0x000055b3c407d0eb llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (../../main-github/llvm/build-all/bin/opt+0x56680eb)
#15 0x000055b3c407e017 llvm::SLPVectorizerPass::tryToVectorize(llvm::Instruction*, llvm::slpvectorizer::BoUpSLP&) (../../main-github/llvm/build-all/bin/opt+0x5669017)
#16 0x000055b3c40ad89d bool llvm::SLPVectorizerPass::vectorizeCmpInsts<std::reverse_iterator<llvm::CmpInst* const*>>(llvm::iterator_range<std::reverse_iterator<llvm::CmpInst* const*>>, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (../../main-github/llvm/build-all/bin/opt+0x569889d)
#17 0x000055b3c4082e07 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&)::$_168::operator()(bool) const SLPVectorizer.cpp:0:0
#18 0x000055b3c4078a64 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (../../main-github/llvm/build-all/bin/opt+0x5663a64)
#19 0x000055b3c4076160 llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (../../main-github/llvm/build-all/bin/opt+0x5661160)
#20 0x000055b3c40757c1 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x56607c1)
#21 0x000055b3c3b3eb7d llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
#22 0x000055b3c2a118f4 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (../../main-github/llvm/build-all/bin/opt+0x3ffc8f4)
#23 0x000055b3c3b372ed llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilderPipelines.cpp:0:0
#24 0x000055b3c2a169be llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0x40019be)
#25 0x000055b3c3b30bad llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) PassBuilderPipelines.cpp:0:0
#26 0x000055b3c2a10466 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (../../main-github/llvm/build-all/bin/opt+0x3ffb466)
#27 0x000055b3c3add3cb 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) (../../main-github/llvm/build-all/bin/opt+0x50c83cb)
#28 0x000055b3c27f60ad optMain (../../main-github/llvm/build-all/bin/opt+0x3de10ad)
#29 0x00007f484dee7555 __libc_start_main (/lib64/libc.so.6+0x22555)
#30 0x000055b3c27efc29 _start (../../main-github/llvm/build-all/bin/opt+0x3ddac29)
Abort (core dumped)
```
[bbi-93626.ll.gz](https://github.com/llvm/llvm-project/files/14686801/bbi-93626.ll.gz)


https://github.com/llvm/llvm-project/pull/84363


More information about the llvm-commits mailing list