[llvm] SLPVectorizer: Avoid looking at uselists of constants (PR #134578)
Alexander Kornienko via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 11 20:15:32 PDT 2025
alexfh wrote:
I managed to gather a line annotated stack trace:
```
#0 0x0000561203aac51d llvm::sys::RunSignalHandlers() llvm-project/llvm/lib/Support/Signals.cpp:106:18
#1 0x0000561203aac51d llvm::sys::CleanupOnSignal(unsigned long) llvm-project/llvm/lib/Support/Unix/Signals.inc:369:3
#2 0x0000561203a8e703 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:73:5
#3 0x0000561203a8e8c7 CrashRecoverySignalHandler(int) (.llvm.2568623048927594347) llvm-project/llvm/lib/Support/CrashRecoveryContext.cpp:391:1
#4 0x00007fd7d4eb2e80 __restore_rt (/usr/grte/v5/lib64/libpthread.so.0+0x14e80)
#5 0x00005612005b44f2 llvm::SmallVectorTemplateCommon<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, void>::begin() llvm-project/llvm/include/llvm/ADT/SmallVector.h:267:45
#6 0x00005612005b44f2 llvm::SmallVectorTemplateCommon<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, void>::end() llvm-project/llvm/include/llvm/ADT/SmallVector.h:269:27
#7 0x00005612005b44f2 llvm::SmallVectorTemplateBase<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, true>::push_back(llvm::slpvectorizer::BoUpSLP::TreeEntry const*) llvm-project/llvm/include/llvm/ADT/SmallVector.h:563:43
#8 0x00005612005b44f2 llvm::slpvectorizer::BoUpSLP::isGatherShuffledSingleRegisterEntry(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::MutableArrayRef<int>, llvm::SmallVectorImpl<llvm::slpvectorizer::BoUpSLP::TreeEntry const*>&, unsigned int, bool) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:14877:15
#9 0x00005612005b44f2 llvm::slpvectorizer::BoUpSLP::isGatherShuffledEntry(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallVectorImpl<int>&, llvm::SmallVectorImpl<llvm::SmallVector<llvm::slpvectorizer::BoUpSLP::TreeEntry const*, 6u>>&, unsigned int, bool) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:15201:9
#10 0x00005612005b44f2 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*>&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:16488:11
#11 0x00005612005b44f2 llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:12318:12
#12 0x00005612005b44f2 llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>, llvm::InstructionCost) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:13928:25
#13 0x00005612005b44f2 llvm::SLPVectorizerPass::vectorizeStoreChain(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, unsigned int, unsigned int, unsigned int&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:20296:28
#14 0x00005612005b44f2 llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::__u::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::__u::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&)::$_0::operator()(std::__u::map<int, unsigned int, std::__u::less<int>, std::__u::allocator<std::__u::pair<int const, unsigned int>>> const&) const (.cold) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:20544:19
#15 0x00005611ffa88f06 llvm::SLPVectorizerPass::vectorizeStores(llvm::ArrayRef<llvm::StoreInst*>, llvm::slpvectorizer::BoUpSLP&, llvm::DenseSet<std::__u::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, llvm::DenseMapInfo<std::__u::tuple<llvm::Value*, llvm::Value*, llvm::Value*, llvm::Value*, unsigned int>, void>>&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:20769:36
#16 0x00005611ffe2b37d bool tryToVectorizeSequence<llvm::StoreInst>(llvm::SmallVectorImpl<llvm::StoreInst*>&, llvm::function_ref<bool (llvm::StoreInst*, llvm::StoreInst*)>, llvm::function_ref<bool (llvm::StoreInst*, llvm::StoreInst*)>, llvm::function_ref<bool (llvm::ArrayRef<llvm::StoreInst*>, bool)>, bool, llvm::slpvectorizer::BoUpSLP&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:23128:21
#17 0x00005611ffe2b37d llvm::SLPVectorizerPass::vectorizeStoreChains(llvm::slpvectorizer::BoUpSLP&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:23915:16
#18 0x00005611ffe2b37d llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:20199:18
#19 0x00005611ff3bda21 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:20131:18
```
@alexey-bataev could you take a look at this?
https://github.com/llvm/llvm-project/pull/134578
More information about the llvm-commits
mailing list