[llvm] [SLP]Support LShr as base for copyable elements (PR #153393)

Alexander Kornienko via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 8 18:53:51 PDT 2025


alexfh wrote:

We see another crash in SLP vectorizer after this commit, which reproduces also after d0ea176ccea8bdcd60aacc2753734294b9eec71f:
```
assert.h assertion failed at llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:20860 in auto llvm::slpvectorizer::BoUpSLP::BlockScheduling::tryScheduleBundle(ArrayRef<Value *>, BoUpSLP *, const InstructionsState &, const EdgeInfo &)::(anonymous class)::operator()(bool, ScheduleBundle &) const: Picked->isReady() && "must be ready to schedule"
*** Check failure stack trace: ***                                                                                                                                                                                                                       @     0x55a81b288a24  absl::log_internal::LogMessage::SendToLog()                                                                                                                                                                                    @     0x55a81b2889d8  absl::log_internal::LogMessage::Flush()
    @     0x55a81b4fea04  __assert_fail                                                                                                                                                                                                                  @     0x55a81a0bab9b  llvm::slpvectorizer::BoUpSLP::BlockScheduling::tryScheduleBundle()::$_1::operator()()                                                                                                                                          @     0x55a81a0323a6  llvm::slpvectorizer::BoUpSLP::buildTreeRec()
    @     0x55a81a04b64f  llvm::slpvectorizer::BoUpSLP::transformNodes()                                                                                                                                                                                 @     0x55a81a0887ce  llvm::SLPVectorizerPass::vectorizeStoreChain()
    @     0x55a81a08a974  llvm::SLPVectorizerPass::vectorizeStores()::$_0::operator()()                                                                                                                                                                  @     0x55a81a08998b  llvm::SLPVectorizerPass::vectorizeStores()
    @     0x55a81a084ef9  llvm::SLPVectorizerPass::vectorizeStoreChains()                                                                                                                                                                                @     0x55a81a083270  llvm::SLPVectorizerPass::runImpl()
    @     0x55a81a0827fd  llvm::SLPVectorizerPass::run()                                                                                                                                                                                                 @     0x55a81af32519  llvm::PassManager<>::run()
    @     0x55a81af34f5d  llvm::ModuleToFunctionPassAdaptor::run()                                                                                                                                                                                       @     0x55a81af318d9  llvm::PassManager<>::run()
    @     0x55a8158620b0  (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline()                                                                                                                                                           @     0x55a815858664  clang::emitBackendOutput()
    @     0x55a815532338  clang::CodeGenAction::ExecuteAction()                                                                                                                                                                                          @     0x55a8160fa6ca  clang::FrontendAction::Execute()
    @     0x55a81607576d  clang::CompilerInstance::ExecuteAction()                                                                                                                                                                                       @     0x55a81552bfbf  clang::ExecuteCompilerInvocation()
    @     0x55a81552012f  cc1_main()
    @     0x55a81551d4d6  ExecuteCC1Tool()
    @     0x55a816226a1e  llvm::function_ref<>::callback_fn<>()
    @     0x55a81b0eb259  llvm::CrashRecoveryContext::RunSafely()
    @     0x55a816225f24  clang::driver::CC1Command::Execute()
    @     0x55a8161e75d3  clang::driver::Compilation::ExecuteCommand()
    @     0x55a8161e784f  clang::driver::Compilation::ExecuteJobs()                                                                                                                                                                                      @     0x55a816201760  clang::driver::Driver::ExecuteCompilation()
    @     0x55a81551cbcb  clang_main()                                                                                                                                                                                                                   @     0x55a81551b274  main
```

The test case is being reduced.

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


More information about the llvm-commits mailing list