[PATCH] D149742: [SLP]Improve isGatherShuffledEntry by trying per-register shuffle.

Zequan Wu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 29 10:01:43 PDT 2023


zequanwu added a comment.

In D149742#4655482 <https://reviews.llvm.org/D149742#4655482>, @RKSimon wrote:

> @zequanwu Do you have a repro please?

This only happens when using `-fprofile-use=`. I'll try to come up with a smaller repro on Monday.

Stack trace:

  clang: /usr/local/google/home/zequanwu/workspace/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:7602: void llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::add(const TreeEntry &, ArrayRef<int>): Assertion `NumParts > 0 && NumParts < Mask.size() && "Expected positive number of registers."' failed.
  PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
  Stack dump:
  0.      Program arguments: /usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang -MMD -MF obj/third_party/boringssl/boringssl/curve25519.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D_GNU_SOURCE -D_LIBCPP_ENABLE_SAFE_MODE=1 -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -DCR_LIBCXX_REVISION=9b27200e8219bbc9e05ba8435456554a6e35d67d -DCR_SYSROOT_KEY=20230611T210420Z-2 -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DBORINGSSL_IMPLEMENTATION -D_BORINGSSL_LIBPKI_ -DBORINGSSL_ALLOW_CXX_RUNTIME -DBORINGSSL_NO_STATIC_INITIALIZER -DOPENSSL_SMALL -I../.. -Igen -I../../buildtools/third_party/libc++ -I../../third_party/boringssl/src/include -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -split-threshold-for-reg-with-hint=0 -ffp-contract=off -fcomplete-member-pointers -m64 -msse3 -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -gdwarf-4 -g2 -gdwarf-aranges -ggnu-pubnames -Xclang -fuse-ctor-homing -fprofile-use=../../chrome/build/pgo_profiles/chrome-linux-main-1698407887-6c91c384bff1766cf9949635c133936a2feea1bd.profdata -Wno-profile-instr-unprofiled -Wno-profile-instr-out-of-date -Wno-backend-plugin -mllvm -enable-ext-tsp-block-placement=1 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wall -Wno-unused-variable -Wno-c++11-narrowing -Wno-unused-but-set-variable -Wno-misleading-indentation -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wenum-compare-conditional -Wno-ignored-pragma-optimize -Wno-deprecated-builtins -Wno-bitfield-constant-conversion -Wno-deprecated-this-capture -Wno-invalid-offsetof -Wno-vla-extension -Wno-thread-safety-reference-return -Wno-delayed-template-parsing-in-cxx20 -Werror -O2 -fdata-sections -ffunction-sections -fno-unique-section-names -fno-math-errno -std=c11 --sysroot=../../build/linux/debian_bullseye_amd64-sysroot -c ../../third_party/boringssl/src/crypto/curve25519/curve25519.c -o obj/third_party/boringssl/boringssl/curve25519.o
  1.      <eof> parser at end of file
  2.      Optimizer
   #0 0x0000556e5dfa28c8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x7cbf8c8)
   #1 0x0000556e5dfa048e llvm::sys::RunSignalHandlers() (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x7cbd48e)
   #2 0x0000556e5df0a786 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
   #3 0x00007f92cb85a510 (/lib/x86_64-linux-gnu/libc.so.6+0x3c510)
   #4 0x00007f92cb8a80fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
   #5 0x00007f92cb85a472 raise ./signal/../sysdeps/posix/raise.c:27:6
   #6 0x00007f92cb8444b2 abort ./stdlib/abort.c:81:7
   #7 0x00007f92cb8443d5 _nl_load_domain ./intl/loadmsgcat.c:1177:9
   #8 0x00007f92cb8533a2 (/lib/x86_64-linux-gnu/libc.so.6+0x353a2)
   #9 0x0000556e5f69792c llvm::slpvectorizer::BoUpSLP::ShuffleCostEstimator::add(llvm::slpvectorizer::BoUpSLP::TreeEntry const&, llvm::ArrayRef<int>) SLPVectorizer.cpp:0:0
  #10 0x0000556e5f692f38 llvm::slpvectorizer::BoUpSLP::getEntryCost(llvm::slpvectorizer::BoUpSLP::TreeEntry const*, llvm::ArrayRef<llvm::Value*>, llvm::SmallPtrSetImpl<llvm::Value*>&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93aff38)
  #11 0x0000556e5f69c33b llvm::slpvectorizer::BoUpSLP::getTreeCost(llvm::ArrayRef<llvm::Value*>) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93b933b)
  #12 0x0000556e5f6c0a1a llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93dda1a)
  #13 0x0000556e5f6c1a2c llvm::SLPVectorizerPass::tryToVectorize(llvm::Instruction*, llvm::slpvectorizer::BoUpSLP&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93dea2c)
  #14 0x0000556e5f6c4be2 llvm::SLPVectorizerPass::tryToVectorize(llvm::ArrayRef<llvm::WeakTrackingVH>, llvm::slpvectorizer::BoUpSLP&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93e1be2)
  #15 0x0000556e5f6c4b2f llvm::SLPVectorizerPass::vectorizeRootInstruction(llvm::PHINode*, llvm::Instruction*, llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&, llvm::TargetTransformInfo*) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93e1b2f)
  #16 0x0000556e5f6bbc2a llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93d8c2a)
  #17 0x0000556e5f6b96fc llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93d66fc)
  #18 0x0000556e5f6b8c9e llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x93d5c9e)
  #19 0x0000556e5f37319d llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
  #20 0x0000556e5d9f2a24 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x770fa24)
  #21 0x0000556e5be0377d llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) AMDGPUTargetMachine.cpp:0:0
  #22 0x0000556e5d9f6cb3 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x7713cb3)
  #23 0x0000556e5be0351d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) AMDGPUTargetMachine.cpp:0:0
  #24 0x0000556e5d9f1c04 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x770ec04)
  #25 0x0000556e5e74f5b5 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&) BackendUtil.cpp:0:0
  #26 0x0000556e5e746102 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x8463102)
  #27 0x0000556e5ec426b1 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
  #28 0x0000556e60390b56 clang::ParseAST(clang::Sema&, bool, bool) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0xa0adb56)
  #29 0x0000556e5eb59f7f clang::FrontendAction::Execute() (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x8876f7f)
  #30 0x0000556e5eacb01d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x87e801d)
  #31 0x0000556e5ec3ad4e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x8957d4e)
  #32 0x0000556e5ba36012 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x5753012)
  #33 0x0000556e5ba323ed ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
  #34 0x0000556e5e92b9b9 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_0>(long) Job.cpp:0:0
  #35 0x0000556e5df0a4c6 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x7c274c6)
  #36 0x0000556e5e92b0c2 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x86480c2)
  #37 0x0000556e5e8e6107 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x8603107)
  #38 0x0000556e5e8e6647 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x8603647)
  #39 0x0000556e5e9065e9 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x86235e9)
  #40 0x0000556e5ba31836 clang_main(int, char**, llvm::ToolContext const&) (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x574e836)
  #41 0x0000556e5ba42871 main (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x575f871)
  #42 0x00007f92cb8456ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
  #43 0x00007f92cb845785 call_init ./csu/../csu/libc-start.c:128:20
  #44 0x00007f92cb845785 __libc_start_main ./csu/../csu/libc-start.c:347:5
  #45 0x0000556e5ba2e8e1 _start (/usr/local/google/home/zequanwu/workspace/llvm-project/build/cmake/bin/clang+0x574b8e1)
  clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
  clang version 18.0.0 (git at github.com:ZequanWu/llvm-project.git 196d154ab7a76e8ccb11addf61ff53387e397130)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D149742/new/

https://reviews.llvm.org/D149742



More information about the llvm-commits mailing list