[llvm] [SLP]Improve minbitwidth analysis. (PR #84536)

via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 15 09:56:10 PDT 2024


goldsteinn wrote:

Think this also is causing a failure when building `llvm-test-suite`:
```
FAILED: MultiSource/Benchmarks/MiBench/consumer-jpeg/CMakeFiles/consumer-jpeg.dir/jdsample.c.o 
/home/noah/programs/opensource/llvm-dev/src/llvm-test-suite/build/tools/timeit --summary MultiSource/Benchmarks/MiBench/consumer-jpeg/CMakeFiles/consumer-jpeg.dir/jdsample.c.o.time /home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/clang -DNDEBUG  -fuse-ld=lld --ld-path=/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/ld.lld -O3    -O3 -DNDEBUG   -w -Werror=date-time -MD -MT MultiSource/Benchmarks/MiBench/consumer-jpeg/CMakeFiles/consumer-jpeg.dir/jdsample.c.o -MF MultiSource/Benchmarks/MiBench/consumer-jpeg/CMakeFiles/consumer-jpeg.dir/jdsample.c.o.d -o MultiSource/Benchmarks/MiBench/consumer-jpeg/CMakeFiles/consumer-jpeg.dir/jdsample.c.o -c /home/noah/programs/opensource/llvm-dev/src/llvm-test-suite/MultiSource/Benchmarks/MiBench/consumer-jpeg/jdsample.c
clang: /home/noah/programs/opensource/llvm-dev/src/llvm-project/llvm/include/llvm/ADT/DenseMap.h:1270: pointer llvm::DenseMapIterator<const llvm::slpvectorizer::BoUpSLP::TreeEntry *, std::pair<unsigned long, bool>>::operator->() const [KeyT = const llvm::slpvectorizer::BoUpSLP::TreeEntry *, ValueT = std::pair<unsigned long, bool>, KeyInfoT = llvm::DenseMapInfo<const llvm::slpvectorizer::BoUpSLP::TreeEntry *>, Bucket = llvm::detail::DenseMapPair<const llvm::slpvectorizer::BoUpSLP::TreeEntry *, std::pair<unsigned long, bool>>, IsConst = false]: Assertion `Ptr != End && "dereferencing end() iterator"' 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/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/clang -DNDEBUG -fuse-ld=lld --ld-path=/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/ld.lld -O3 -O3 -DNDEBUG -w -Werror=date-time -MD -MT MultiSource/Benchmarks/MiBench/consumer-jpeg/CMakeFiles/consumer-jpeg.dir/jdsample.c.o -MF MultiSource/Benchmarks/MiBench/consumer-jpeg/CMakeFiles/consumer-jpeg.dir/jdsample.c.o.d -o MultiSource/Benchmarks/MiBench/consumer-jpeg/CMakeFiles/consumer-jpeg.dir/jdsample.c.o -c /home/noah/programs/opensource/llvm-dev/src/llvm-test-suite/MultiSource/Benchmarks/MiBench/consumer-jpeg/jdsample.c
1.	<eof> parser at end of file
2.	Optimizer
 #0 0x00007f82fe244c18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMSupport.so.19.0git+0x244c18)
 #1 0x00007f82fe2425f0 llvm::sys::RunSignalHandlers() (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMSupport.so.19.0git+0x2425f0)
 #2 0x00007f82fe16d566 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
 #3 0x00007f82fd842520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f82fd8969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007f82fd8969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007f82fd8969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007f82fd842476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007f82fd8287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007f82fd82871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007f82fd839e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00007f83015ce8d7 (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMVectorize.so.19.0git+0x1ce8d7)
#12 0x00007f83015e7b36 llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::slpvectorizer::BoUpSLP::TreeEntry*, bool) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMVectorize.so.19.0git+0x1e7b36)
#13 0x00007f83015ee39f llvm::slpvectorizer::BoUpSLP::vectorizeTree(llvm::MapVector<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 2u>, llvm::DenseMap<llvm::Value*, unsigned int, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, unsigned int>>, llvm::SmallVector<std::pair<llvm::Value*, llvm::SmallVector<llvm::Instruction*, 2u>>, 0u>> const&, llvm::SmallVectorImpl<std::pair<llvm::Value*, llvm::Value*>>&, llvm::Instruction*) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMVectorize.so.19.0git+0x1ee39f)
#14 0x00007f83015ee055 llvm::slpvectorizer::BoUpSLP::vectorizeTree() (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMVectorize.so.19.0git+0x1ee055)
#15 0x00007f8301604d7e llvm::SLPVectorizerPass::tryToVectorizeList(llvm::ArrayRef<llvm::Value*>, llvm::slpvectorizer::BoUpSLP&, bool) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMVectorize.so.19.0git+0x204d7e)
#16 0x00007f830160a694 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&) SLPVectorizer.cpp:0:0
#17 0x00007f83015ff4f3 llvm::SLPVectorizerPass::vectorizeChainsInBlock(llvm::BasicBlock*, llvm::slpvectorizer::BoUpSLP&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMVectorize.so.19.0git+0x1ff4f3)
#18 0x00007f83015fd19c llvm::SLPVectorizerPass::runImpl(llvm::Function&, llvm::ScalarEvolution*, llvm::TargetTransformInfo*, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::LoopInfo*, llvm::DominatorTree*, llvm::AssumptionCache*, llvm::DemandedBits*, llvm::OptimizationRemarkEmitter*) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMVectorize.so.19.0git+0x1fd19c)
#19 0x00007f83015fc49e llvm::SLPVectorizerPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMVectorize.so.19.0git+0x1fc49e)
#20 0x00007f82fcfd1e9d llvm::detail::PassModel<llvm::Function, llvm::SLPVectorizerPass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) PassBuilder.cpp:0:0
#21 0x00007f82fe925fff llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMCore.so.19.0git+0x525fff)
#22 0x00007f83085d65cd llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) AMDGPUTargetMachine.cpp:0:0
#23 0x00007f82fe92b37b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMCore.so.19.0git+0x52b37b)
#24 0x00007f83085d636d llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) AMDGPUTargetMachine.cpp:0:0
#25 0x00007f82fe924aef llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMCore.so.19.0git+0x524aef)
#26 0x00007f8302f2683a (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
#27 0x00007f8302f19bd9 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>>, clang::BackendConsumer*) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangCodeGen.so.19.0git+0x319bd9)
#28 0x00007f83033c00dc clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangCodeGen.so.19.0git+0x7c00dc)
#29 0x00007f82fc6e2379 clang::ParseAST(clang::Sema&, bool, bool) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/../lib/libclangParse.so.19.0git+0x81379)
#30 0x00007f83011fdec4 clang::FrontendAction::Execute() (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangFrontend.so.19.0git+0x1fdec4)
#31 0x00007f830114e7dd clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangFrontend.so.19.0git+0x14e7dd)
#32 0x00007f8304f7bc47 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangFrontendTool.so.19.0git+0x5c47)
#33 0x000055d326570e14 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/clang+0x1ae14)
#34 0x000055d32656d1c0 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#35 0x00007f8300d779c9 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
#36 0x00007f82fe16d286 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libLLVMSupport.so.19.0git+0x16d286)
#37 0x00007f8300d7697f clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangDriver.so.19.0git+0x17697f)
#38 0x00007f8300d259cc clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangDriver.so.19.0git+0x1259cc)
#39 0x00007f8300d25fa7 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangDriver.so.19.0git+0x125fa7)
#40 0x00007f8300d4c609 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/../lib/libclangDriver.so.19.0git+0x14c609)
#41 0x000055d32656c28d clang_main(int, char**, llvm::ToolContext const&) (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/clang+0x1628d)
#42 0x000055d32657fd43 main (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/clang+0x29d43)
#43 0x00007f82fd829d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#44 0x00007f82fd829e40 call_init ./csu/../csu/libc-start.c:128:20
#45 0x00007f82fd829e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#46 0x000055d326569535 _start (/home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin/clang+0x13535)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
clang version 19.0.0git (git at github.com:llvm/llvm-project.git c3a1eb6207d85cb37ea29306481b40c9f6402309)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/noah/programs/opensource/llvm-dev/src/llvm-project/build/bin
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/jdsample-da2de5.c
clang: note: diagnostic msg: /tmp/jdsample-da2de5.sh
clang: note: diagnostic msg: 

********************
```

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


More information about the llvm-commits mailing list