Issue 156587
Summary Crash when compiling gsl 2.7
Labels
Assignees
Reporter res0nance
    Experienced a crash with clang 20.1.8 while compiling gsl 2.7 or 2.7.1. Only crashes with an optimized build. Debug builds do not exhibit this crash


Stacktrace:

```
 clang: llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp:3637: llvm::slpvectorizer::BoUpSLP::TreeEntry* llvm::slpvectorizer::BoUpSLP::newTreeEntry(llvm::ArrayRef<llvm::Value*>, TreeEntry::EntryState, std::optional<ScheduleData*>, const {anonymous}::InstructionsState&, const EdgeInfo&, llvm::ArrayRef<int>, llvm::ArrayRef<unsigned int>): Assertion `(hasFullVectorsOrPowerOf2(*TTI, getValueType(VL.front()), VL.size()) || ReuseShuffleIndices.empty()) && "Reshuffling scalars not yet supported for nodes with padding"' 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: /home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang --gcc-toolchain=/home/raihaan/.conan2/p/clang8e06efd24263f/p/gcc-runtime --config clang++-raihaan-libstdc++.cfg -DHAVE_CONFIG_H -I. -I/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src/matrix -I.. -I/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src -DNDEBUG -DHAVE_GNUX86_IEEE_INTERFACE -m64 -fPIC -O3 -MT minmax.lo -MD -MP -MF .deps/minmax.Tpo -c /home/a
 kuna/.conan2/p/b/gsle8db90c23554a/b/src/matrix/minmax.c -o minmax.o
 1. <eof> parser at end of file
 2.      Optimizer
 3.      Running pass "function<eager-inv>(float2int,lower-constant-intrinsics,chr,loop(loop-rotate<header-duplication;no-prepare-for-lto>,loop-deletion),loop-distribute,inject-tli-mappings,loop-vectorize<no-interleave-forced-only;no-vectorize-forced-only;>,infer-alignment,loop-load-elim,instcombine<max-iterations=1;no-verify-fixpoint>,simplifycfg<bonus-inst-threshold=1;forward-switch-cond;switch-range-to-icmp;switch-to-lookup;no-keep-loops;hoist-common-insts;no-hoist-loads-stores-with-cond-faulting;sink-common-insts;speculate-blocks;simplify-cond-branch;no-speculate-unpredictables>,slp-vectorizer,vector-combine,instcombine<max-iterations=1;no-verify-fixpoint>,loop-unroll<O3>,transform-warning,sroa<preserve-cfg>,infer-alignment,instcombine<max-iterations=1;no-verify-fixpoint>,loop-mssa(licm<allowspeculation>),alignment-from-assumptions,loop-sink,instsimplify,div-rem-pairs,tailcallelim,simplifycfg<bonus-inst-threshold=1;no-forward-switch-cond;switch-range-to-icmp;no-switch-to-lookup;keep-loops;no-hoist-common-insts;hoist-loads-stores-with-cond-faulting;no-sink-common-insts;speculate-blocks;simplify-cond-branch;speculate-unpredictables>)" on module "/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src/matrix/minmax.c"
 4. Running pass "slp-vectorizer" on function "gsl_matrix_long_double_minmax_index"
 mv -f .deps/file.Tpo .deps/file.Plo
 mv -f .deps/view.Tpo .deps/view.Plo
  #0 0x000000000227b008 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x227b008)
  #1 0x0000000002278cb4 llvm::sys::CleanupOnSignal(unsigned long) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x2278cb4)
  #2 0x00000000021bfac0 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
  #3 0x00007f9be7339520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
  #4 0x00007f9be738d9fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
  #5 0x00007f9be738d9fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
  #6 0x00007f9be738d9fc pthread_kill ./nptl/pthread_kill.c:89:10
  #7 0x00007f9be7339476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
  #8 0x00007f9be731f7f3 abort ./stdlib/abort.c:81:7
  #9 0x00007f9be731f71b _nl_load_domain ./intl/loadmsgcat.c:1177:9
 #10 0x00007f9be7330e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
 #11 0x00000000043636e9 llvm::slpvectorizer::BoUpSLP::newTreeEntry(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP::TreeEntry::EntryState, std::optional<llvm::slpvectorizer::BoUpSLP::ScheduleData*>, (anonymous namespace)::InstructionsState const&, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&, llvm::ArrayRef<int>, llvm::ArrayRef<unsigned int>) (.isra.0) SLPVectorizer.cpp:0:0
 #12 0x00000000043a51d7 llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&, unsigned int) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x43a51d7)
 #13 0x00000000043a73a4 llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&, unsigned int) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x43a73a4)
 #14 0x00000000043a7a62 auto llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&, unsigned int)::'lambda'(llvm::slpvectorizer::BoUpSLP::TreeEntry*, auto const&)::operator()<llvm::SmallVector<llvm::ArrayRef<llvm::Value*>, 3u>>(llvm::slpvectorizer::BoUpSLP::TreeEntry*, auto const&) const SLPVectorizer.cpp:0:0
 #15 0x00000000043a5a31 llvm::slpvectorizer::BoUpSLP::buildTree_rec(llvm::ArrayRef<llvm::Value*>, unsigned int, llvm::slpvectorizer::BoUpSLP::EdgeInfo const&, unsigned int) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x43a5a31)
 #16 0x00000000043d9892 llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x43d9892)
 #17 0x00000000043ded20 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
 #18 0x00000000043e0be8 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x43e0be8)
 #19 0x00000000043e9bfa llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x43e9bfa)
 #20 0x00000000043ea8c0 llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x43ea8c0)
 #21 0x0000000003c0a41d llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x3c0a41d)
 #22 0x0000000001ce76a6 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x1ce76a6)
 #23 0x0000000000d0db1d 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/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0xd0db1d)
 #24 0x0000000001ce7fb4 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x1ce7fb4)
 #25 0x0000000000d0df0d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0xd0df0d)
 #26 0x0000000001ce9dbf llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x1ce9dbf)
 #27 0x0000000002536cbb (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>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
 #28 0x000000000253b39c clang::emitBackendOutput(clang::CompilerInstance&, clang::CodeGenOptions&, 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>>, clang::BackendConsumer*) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x253b39c)
 #29 0x0000000002c39908 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x2c39908)
 #30 0x0000000004644afc clang::ParseAST(clang::Sema&, bool, bool) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x4644afc)
 #31 0x0000000002f611b1 clang::FrontendAction::Execute() (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x2f611b1)
 #32 0x0000000002edc97b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x2edc97b)
 #33 0x000000000304f42a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x304f42a)
 #34 0x0000000000c818fa cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0xc818fa)
 #35 0x0000000000c79098 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
 #36 0x0000000002c89f39 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::'lambda'()>(long) Job.cpp:0:0
 #37 0x00000000021bff21 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x21bff21)
 #38 0x0000000002c8b1f7 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
 #39 0x0000000002c44fdb clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x2c44fdb)
 #40 0x0000000002c45fef clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x2c45fef)
 #41 0x0000000002c56555 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0x2c56555)
 #42 0x0000000000c7eaa8 clang_main(int, char**, llvm::ToolContext const&) (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0xc7eaa8)
 #43 0x0000000000b6eb8f main (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0xb6eb8f)
 #44 0x00007f9be7320d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
 #45 0x00007f9be7320e40 call_init ./csu/../csu/libc-start.c:128:20
 #46 0x00007f9be7320e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
 #47 0x0000000000c78bc5 _start (/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang+0xc78bc5)
 clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
 clang version 20.1.8
 Target: x86_64-pc-linux-gnu
 Thread model: posix
 InstalledDir: /home/raihaan/.conan2/p/clang8e06efd24263f/p/bin
 Build config: +assertions
 Configuration file: /home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang++-raihaan-libstdc++.cfg
 clang: note: diagnostic msg:
 ****
 
 PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
 Preprocessed source(s) and associated run script(s) are located at:
 clang: note: diagnostic msg: /tmp/minmax-e36d8b.c
 clang: note: diagnostic msg: /tmp/minmax-e36d8b.sh
 clang: note: diagnostic msg:
 
 ****
```

Attached minimax.sh
```
# Crash reproducer for clang version 20.1.8
 # Driver args: "--stdlib=libstdc++" "--rtlib=libgcc" "--unwindlib=libgcc" "--gcc-toolchain=/home/raihaan/.conan2/p/clang8e06efd24263f/p/gcc-runtime" "-D" "HAVE_CONFIG_H" "-I" "." "-I" "/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src/matrix" "-I" ".." "-I" "/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src" "-D" "NDEBUG" "-D" "HAVE_GNUX86_IEEE_INTERFACE" "-m64" "-fPIC" "-O3" "-MT" "minmax.lo" "-MD" "-MP" "-MF" ".deps/minmax.Tpo" "-c" "/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src/matrix/minmax.c" "-o" "minmax.o"
 # Original command: "/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang-20" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-emit-obj" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "minmax.c" "-mrelocation-model" "pic" "-pic-level" "2" "-fhalf-no-semantic-interposition" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-debugger-tuning=gdb" "-fdebug-compilation-dir=/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/build-release/matrix" "-fcoverage-compilation-dir=/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/build-release/matrix" "-resource-dir" "/home/raihaan/.conan2/p/clang8e06efd24263f/p/lib/clang/20" "-dependency-file" ".deps/minmax.Tpo" "-MT" "minmax.lo" "-sys-header-deps" "-MP" "-D" "HAVE_CONFIG_H" "-I" "." "-I" "/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src/matrix" "-I" ".." "-I" "/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src" "-D" "NDEBUG" "-D" "HAVE_GNUX86_IEEE_INTERFACE" "-internal-isystem" "/home/raihaan/.conan2/p/clang8e06efd24263f/p/lib/clang/20/include" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/home/raihaan/.conan2/p/clang8e06efd24263f/p/gcc-runtime/lib/gcc/x86_64-pc-linux-gnu/15.2.0/../../../../x86_64-pc-linux-gnu/include" "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-O3" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fskip-odr-check-in-gmf" "-fcolor-diagnostics" "-vectorize-loops" "-vectorize-slp" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "minmax.o" "-x" "c" "/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/src/matrix/minmax.c"
 "/home/raihaan/.conan2/p/clang8e06efd24263f/p/bin/clang-20" "-cc1" "-triple" "x86_64-pc-linux-gnu" "-emit-obj" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "minmax.c" "-mrelocation-model" "pic" "-pic-level" "2" "-fhalf-no-semantic-interposition" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-debugger-tuning=gdb" "-fdebug-compilation-dir=/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/build-release/matrix" "-fcoverage-compilation-dir=/home/raihaan/.conan2/p/b/gsle8db90c23554a/b/build-release/matrix" "-sys-header-deps" "-D" "HAVE_CONFIG_H" "-D" "NDEBUG" "-D" "HAVE_GNUX86_IEEE_INTERFACE" "-O3" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fskip-odr-check-in-gmf" "-fcolor-diagnostics" "-vectorize-loops" "-vectorize-slp" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c" "minmax-e36d8b.c"
```

[minmax-e36d8b.c](https://github.com/user-attachments/files/22109002/minmax-e36d8b.c)

_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to