llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
27.92k stars 11.52k forks source link

TSan may be flagging false-positives on ppc64 in ThinLTO? #102104

Open awilfox opened 1 month ago

awilfox commented 1 month ago

While trying to debug #96734, I built LLVM with -fsanitize=thread, and virtually all ThinLTO tests failed with many dozens of TSan 'data race' errors, which looked very similar to this example:

==================
WARNING: ThreadSanitizer: data race (pid=53312)
  Atomic write of size 4 at 0x3ffff6d803c8 by thread T2:
    #0 llvm::sys::CompareAndSwap(unsigned int volatile*, unsigned int, unsigned int) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Atomic.cpp:53 (libLLVM.so.18.1+0xe486ac) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #1 void llvm::call_once<void* (&)(llvm::PassRegistry&), std::reference_wrapper<llvm::PassRegistry> >(llvm::once_flag&, void* (&)(llvm::PassRegistry&), std::reference_wrapper<llvm::PassRegistry>&&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Threading.h:94 (libLLVM.so.18.1+0x18a7ac8) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #2 llvm::initializeMachineDominatorTreePass(llvm::PassRegistry&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineDominators.cpp:44 (libLLVM.so.18.1+0x18a7ac8)
    #3 llvm::initializeCodeGen(llvm::PassRegistry&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/CodeGen.cpp:82 (libLLVM.so.18.1+0x15089c8) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #4 llvm::TargetPassConfig::TargetPassConfig(llvm::LLVMTargetMachine&, llvm::legacy::PassManagerBase&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/TargetPassConfig.cpp:577 (libLLVM.so.18.1+0x1ee68e4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #5 X86PassConfig /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Target/X86/X86TargetMachine.cpp:371 (libLLVM.so.18.1+0x8c9a7cc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #6 llvm::X86TargetMachine::createPassConfig(llvm::legacy::PassManagerBase&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Target/X86/X86TargetMachine.cpp:430 (libLLVM.so.18.1+0x8c9a7cc)
    #7 addPassesToGenerateCode /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/LLVMTargetMachine.cpp:121 (libLLVM.so.18.1+0x17a06c4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #8 llvm::LLVMTargetMachine::addPassesToEmitFile(llvm::legacy::PassManagerBase&, llvm::raw_pwrite_stream&, llvm::raw_pwrite_stream*, llvm::CodeGenFileType, bool, llvm::MachineModuleInfoWrapperPass*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/LLVMTargetMachine.cpp:241 (libLLVM.so.18.1+0x17aa9b4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #9 codegen /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:418 (libLLVM.so.18.1+0x4b55f74) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #10 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:593 (libLLVM.so.18.1+0x4b590dc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #11 llvm::lto::thinBackend(llvm::lto::Config const&, unsigned int, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, llvm::Module&, llvm::ModuleSummaryIndex const&, llvm::DenseMap<llvm::StringRef, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> > > > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u> >*, std::vector<unsigned char, std::allocator<unsigned char> > const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:668 (libLLVM.so.18.1+0x4b590dc)
    #12 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1457 (libLLVM.so.18.1+0x4b3c5a0) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #13 runThinLTOBackendThread /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1472 (libLLVM.so.18.1+0x4b3c5a0)
    #14 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1512 (libLLVM.so.18.1+0x4b3c5a0)
    #15 __invoke_impl<void, (anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>&, llvm::BitcodeModule&, llvm::ModuleSummaryIndex&, const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > >&, const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> >&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > >&, const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> >&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> >&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0x4b3c5a0)
    #16 __invoke<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>&, llvm::BitcodeModule&, llvm::ModuleSummaryIndex&, const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > >&, const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> >&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > >&, const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> >&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> >&> /usr/include/c++/13.3.0/bits/invoke.h:96 (libLLVM.so.18.1+0x4b3c5a0)
    #17 __call<void, 0, 1, 2, 3, 4, 5, 6> /usr/include/c++/13.3.0/functional:506 (libLLVM.so.18.1+0x4b3c5a0)
    #18 operator()<> /usr/include/c++/13.3.0/functional:591 (libLLVM.so.18.1+0x4b3c5a0)
    #19 __invoke_impl<void, std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)>&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0x4b3c5a0)
    #20 __invoke_r<void, std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)>&> /usr/include/c++/13.3.0/bits/invoke.h:111 (libLLVM.so.18.1+0x4b3c5a0)
    #21 _M_invoke /usr/include/c++/13.3.0/bits/std_function.h:290 (libLLVM.so.18.1+0x4b3c5a0)
    #22 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591 (libLLVM.so.18.1+0xc00c0c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #23 llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}::operator()() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:135 (libLLVM.so.18.1+0xc00c0c)
    #24 void std::__invoke_impl<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>(std::__invoke_other, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&) /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0xc00c0c)
    #25 std::enable_if<is_invocable_r_v<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>, void>::type std::__invoke_r<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>(llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&) /usr/include/c++/13.3.0/bits/invoke.h:111 (libLLVM.so.18.1+0xc00c0c)
    #26 std::_Function_handler<void (), llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}>::_M_invoke(std::_Any_data const&) /usr/include/c++/13.3.0/bits/std_function.h:290 (libLLVM.so.18.1+0xc00c0c)
    #27 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591 (libLLVM.so.18.1+0xd86b4c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #28 llvm::ThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:101 (libLLVM.so.18.1+0xd86b4c)
    #29 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:49 (libLLVM.so.18.1+0xd87f10) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #30 operator()<llvm::ThreadPool::grow(int)::<lambda()>&> /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:43 (libLLVM.so.18.1+0xd87f10)
    #31 __invoke_impl<void, llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, llvm::ThreadPool::grow(int)::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0xd87f10)
    #32 __invoke<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, llvm::ThreadPool::grow(int)::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:96 (libLLVM.so.18.1+0xd87f10)
    #33 __apply_impl<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<llvm::ThreadPool::grow(int)::<lambda()> >&, 0> /usr/include/c++/13.3.0/tuple:2302 (libLLVM.so.18.1+0xd87f10)
    #34 apply<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<llvm::ThreadPool::grow(int)::<lambda()> >&> /usr/include/c++/13.3.0/tuple:2313 (libLLVM.so.18.1+0xd87f10)
    #35 GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:41 (libLLVM.so.18.1+0xd87f10)
    #36 ThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:55 (libLLVM.so.18.1+0xd87f10)

  Previous read of size 4 at 0x3ffff6d803c8 by thread T1:
    #0 void llvm::call_once<void* (&)(llvm::PassRegistry&), std::reference_wrapper<llvm::PassRegistry> >(llvm::once_flag&, void* (&)(llvm::PassRegistry&), std::reference_wrapper<llvm::PassRegistry>&&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Threading.h:104 (libLLVM.so.18.1+0x18a8154) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #1 llvm::initializeMachineDominatorTreePass(llvm::PassRegistry&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineDominators.cpp:44 (libLLVM.so.18.1+0x18a8154)
    #2 llvm::MachineDominatorTree::MachineDominatorTree() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineDominators.cpp:68 (libLLVM.so.18.1+0x18a8154)
    #3 std::__detail::_MakeUniq<llvm::MachineDominatorTree>::__single_object std::make_unique<llvm::MachineDominatorTree>() /usr/include/c++/13.3.0/bits/unique_ptr.h:1070 (libLLVM.so.18.1+0x16e76f4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #4 llvm::LazyMachineBlockFrequencyInfoPass::calculateIfNotAvailable() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/LazyMachineBlockFrequencyInfo.cpp:78 (libLLVM.so.18.1+0x16e76f4)
    #5 llvm::LazyMachineBlockFrequencyInfoPass::getBFI() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/CodeGen/LazyMachineBlockFrequencyInfo.h:61 (libLLVM.so.18.1+0x8846860) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #6 runOnMachineFunction /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Target/X86/X86FixupLEAs.cpp:238 (libLLVM.so.18.1+0x8846860)
    #7 runOnMachineFunction /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Target/X86/X86FixupLEAs.cpp:221 (libLLVM.so.18.1+0x8846860)
    #8 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineFunctionPass.cpp:93 (libLLVM.so.18.1+0x18e68a4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineFunctionPass.cpp:42 (libLLVM.so.18.1+0x18e83a4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #10 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:1443 (libLLVM.so.18.1+0x11e8c18) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #11 llvm::FPPassManager::runOnModule(llvm::Module&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:1489 (libLLVM.so.18.1+0x11e9330) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #12 runOnModule /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:1558 (libLLVM.so.18.1+0x11eaae4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #13 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:541 (libLLVM.so.18.1+0x11eaae4)
    #14 llvm::legacy::PassManager::run(llvm::Module&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:1685 (libLLVM.so.18.1+0x11eb334) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #15 codegen /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:422 (libLLVM.so.18.1+0x4b55f8c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #16 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:593 (libLLVM.so.18.1+0x4b590dc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #17 llvm::lto::thinBackend(llvm::lto::Config const&, unsigned int, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, llvm::Module&, llvm::ModuleSummaryIndex const&, llvm::DenseMap<llvm::StringRef, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> > > > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u> >*, std::vector<unsigned char, std::allocator<unsigned char> > const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:668 (libLLVM.so.18.1+0x4b590dc)
    #18 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1457 (libLLVM.so.18.1+0x4b3c5a0) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #19 runThinLTOBackendThread /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1472 (libLLVM.so.18.1+0x4b3c5a0)
    #20 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1512 (libLLVM.so.18.1+0x4b3c5a0)
    #21 __invoke_impl<void, (anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>&, llvm::BitcodeModule&, llvm::ModuleSummaryIndex&, const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > >&, const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> >&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > >&, const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> >&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> >&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0x4b3c5a0)
    #22 __invoke<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>&, llvm::BitcodeModule&, llvm::ModuleSummaryIndex&, const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > >&, const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> >&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > >&, const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> >&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> >&> /usr/include/c++/13.3.0/bits/invoke.h:96 (libLLVM.so.18.1+0x4b3c5a0)
    #23 __call<void, 0, 1, 2, 3, 4, 5, 6> /usr/include/c++/13.3.0/functional:506 (libLLVM.so.18.1+0x4b3c5a0)
    #24 operator()<> /usr/include/c++/13.3.0/functional:591 (libLLVM.so.18.1+0x4b3c5a0)
    #25 __invoke_impl<void, std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)>&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0x4b3c5a0)
    #26 __invoke_r<void, std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)>&> /usr/include/c++/13.3.0/bits/invoke.h:111 (libLLVM.so.18.1+0x4b3c5a0)
    #27 _M_invoke /usr/include/c++/13.3.0/bits/std_function.h:290 (libLLVM.so.18.1+0x4b3c5a0)
    #28 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591 (libLLVM.so.18.1+0xc00c0c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #29 llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}::operator()() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:135 (libLLVM.so.18.1+0xc00c0c)
    #30 void std::__invoke_impl<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>(std::__invoke_other, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&) /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0xc00c0c)
    #31 std::enable_if<is_invocable_r_v<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>, void>::type std::__invoke_r<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>(llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&) /usr/include/c++/13.3.0/bits/invoke.h:111 (libLLVM.so.18.1+0xc00c0c)
    #32 std::_Function_handler<void (), llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}>::_M_invoke(std::_Any_data const&) /usr/include/c++/13.3.0/bits/std_function.h:290 (libLLVM.so.18.1+0xc00c0c)
    #33 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591 (libLLVM.so.18.1+0xd86b4c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #34 llvm::ThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:101 (libLLVM.so.18.1+0xd86b4c)
    #35 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:49 (libLLVM.so.18.1+0xd87f10) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #36 operator()<llvm::ThreadPool::grow(int)::<lambda()>&> /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:43 (libLLVM.so.18.1+0xd87f10)
    #37 __invoke_impl<void, llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, llvm::ThreadPool::grow(int)::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0xd87f10)
    #38 __invoke<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, llvm::ThreadPool::grow(int)::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:96 (libLLVM.so.18.1+0xd87f10)
    #39 __apply_impl<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<llvm::ThreadPool::grow(int)::<lambda()> >&, 0> /usr/include/c++/13.3.0/tuple:2302 (libLLVM.so.18.1+0xd87f10)
    #40 apply<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<llvm::ThreadPool::grow(int)::<lambda()> >&> /usr/include/c++/13.3.0/tuple:2313 (libLLVM.so.18.1+0xd87f10)
    #41 GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:41 (libLLVM.so.18.1+0xd87f10)
    #42 ThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:55 (libLLVM.so.18.1+0xd87f10)

  Location is global 'InitializeMachineDominatorTreePassFlag' of size 4 at 0x3ffff6d803c8 (libLLVM.so.18.1+0xc51a3c8)

  Thread T2 (tid=53396, running) created by main thread at:
    #0 pthread_create /home/awilcox/Code/awilfox/gcc-next/system/gcc/src/gcc-13.3.0/libsanitizer/tsan/tsan_interceptors_posix.cpp:1036 (libtsan.so.2+0x3c4d0) (BuildId: c92845fc2f2f0f482ba79571bf8c69c18ab12adb)
    #1 llvm::llvm_execute_on_thread_impl(void* (*)(void*), void*, std::optional<unsigned int>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Unix/Threading.inc:85 (libLLVM.so.18.1+0xe7f3c0) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #2 thread<llvm::ThreadPool::grow(int)::<lambda()>&> /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:131 (libLLVM.so.18.1+0xd861dc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #3 thread<llvm::ThreadPool::grow(int)::<lambda()> > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:78 (libLLVM.so.18.1+0xd861dc)
    #4 construct<llvm::thread, llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/new_allocator.h:191 (libLLVM.so.18.1+0xd861dc)
    #5 construct<llvm::thread, llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/alloc_traits.h:538 (libLLVM.so.18.1+0xd861dc)
    #6 _M_realloc_insert<llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/vector.tcc:468 (libLLVM.so.18.1+0xd861dc)
    #7 emplace_back<llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/vector.tcc:123 (libLLVM.so.18.1+0xd861dc)
    #8 llvm::ThreadPool::grow(int) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:46 (libLLVM.so.18.1+0xd861dc)
    #9 std::shared_future<void> llvm::ThreadPool::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:167 (libLLVM.so.18.1+0xc162f8) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #10 async<std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)> > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:85 (libLLVM.so.18.1+0x4b2f364) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #11 async<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>, llvm::BitcodeModule&, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> > >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > > >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> > >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> > > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:69 (libLLVM.so.18.1+0x4b2f364)
    #12 start /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1499 (libLLVM.so.18.1+0x4b2f364)
    #13 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1827 (libLLVM.so.18.1+0x4b33928) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #14 llvm::lto::LTO::runThinLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)> > (unsigned int, llvm::StringRef, llvm::Twine const&)>, llvm::DenseSet<unsigned long, llvm::DenseMapInfo<unsigned long, void> > const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1848 (libLLVM.so.18.1+0x4b36d04) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #15 llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)> > (unsigned int, llvm::StringRef, llvm::Twine const&)>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1176 (libLLVM.so.18.1+0x4b421e4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #16 run /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-lto2/llvm-lto2.cpp:436 (llvm-lto2+0x29c14) (BuildId: 5961eacb5a77065ebafddaad2256fe568af3ce49)
    #17 main /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-lto2/llvm-lto2.cpp:558 (llvm-lto2+0x12528) (BuildId: 5961eacb5a77065ebafddaad2256fe568af3ce49)

  Thread T1 (tid=53395, running) created by main thread at:
    #0 pthread_create /home/awilcox/Code/awilfox/gcc-next/system/gcc/src/gcc-13.3.0/libsanitizer/tsan/tsan_interceptors_posix.cpp:1036 (libtsan.so.2+0x3c4d0) (BuildId: c92845fc2f2f0f482ba79571bf8c69c18ab12adb)
    #1 llvm::llvm_execute_on_thread_impl(void* (*)(void*), void*, std::optional<unsigned int>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Unix/Threading.inc:85 (libLLVM.so.18.1+0xe7f3c0) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #2 thread<llvm::ThreadPool::grow(int)::<lambda()>&> /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:131 (libLLVM.so.18.1+0xd861dc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #3 thread<llvm::ThreadPool::grow(int)::<lambda()> > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:78 (libLLVM.so.18.1+0xd861dc)
    #4 construct<llvm::thread, llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/new_allocator.h:191 (libLLVM.so.18.1+0xd861dc)
    #5 construct<llvm::thread, llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/alloc_traits.h:538 (libLLVM.so.18.1+0xd861dc)
    #6 _M_realloc_insert<llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/vector.tcc:468 (libLLVM.so.18.1+0xd861dc)
    #7 emplace_back<llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/vector.tcc:123 (libLLVM.so.18.1+0xd861dc)
    #8 llvm::ThreadPool::grow(int) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:46 (libLLVM.so.18.1+0xd861dc)
    #9 std::shared_future<void> llvm::ThreadPool::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:167 (libLLVM.so.18.1+0xc162f8) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #10 async<std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)> > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:85 (libLLVM.so.18.1+0x4b2f364) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #11 async<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>, llvm::BitcodeModule&, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> > >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > > >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> > >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> > > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:69 (libLLVM.so.18.1+0x4b2f364)
    #12 start /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1499 (libLLVM.so.18.1+0x4b2f364)
    #13 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1827 (libLLVM.so.18.1+0x4b33928) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #14 llvm::lto::LTO::runThinLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)> > (unsigned int, llvm::StringRef, llvm::Twine const&)>, llvm::DenseSet<unsigned long, llvm::DenseMapInfo<unsigned long, void> > const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1848 (libLLVM.so.18.1+0x4b36d04) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #15 llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)> > (unsigned int, llvm::StringRef, llvm::Twine const&)>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1176 (libLLVM.so.18.1+0x4b421e4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a)
    #16 run /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-lto2/llvm-lto2.cpp:436 (llvm-lto2+0x29c14) (BuildId: 5961eacb5a77065ebafddaad2256fe568af3ce49)
    #17 main /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-lto2/llvm-lto2.cpp:558 (llvm-lto2+0x12528) (BuildId: 5961eacb5a77065ebafddaad2256fe568af3ce49)

SUMMARY: ThreadSanitizer: data race /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Atomic.cpp:53 in llvm::sys::CompareAndSwap(unsigned int volatile*, unsigned int, unsigned int)
==================

These are the tests that failed with these errors:

  LLVM :: LTO/Resolution/X86/dead-strip-alias.ll
  LLVM :: LTO/Resolution/X86/lto-unit-check.ll
  LLVM :: LTO/Resolution/X86/not-prevailing.ll
  LLVM :: ThinLTO/X86/alias_internal.ll
  LLVM :: ThinLTO/X86/asm.ll
  LLVM :: ThinLTO/X86/cache-decoupled-from-filenames.ll
  LLVM :: ThinLTO/X86/cache-decoupled-from-order.ll
  LLVM :: ThinLTO/X86/cache-icall.ll
  LLVM :: ThinLTO/X86/cache-import-lists.ll
  LLVM :: ThinLTO/X86/cache-typeid-resolutions.ll
  LLVM :: ThinLTO/X86/cache.ll
  LLVM :: ThinLTO/X86/callees-metadata.ll
  LLVM :: ThinLTO/X86/check_var_import_odr.ll
  LLVM :: ThinLTO/X86/ctor-dtor-alias.ll
  LLVM :: ThinLTO/X86/ctor-dtor-alias2.ll
  LLVM :: ThinLTO/X86/debuginfo-compositetype-import.ll
  LLVM :: ThinLTO/X86/devirt2.ll
  LLVM :: ThinLTO/X86/devirt_after_filtering_unreachable.ll
  LLVM :: ThinLTO/X86/devirt_alias.ll
  LLVM :: ThinLTO/X86/devirt_available_externally.ll
  LLVM :: ThinLTO/X86/devirt_external_comdat_same_guid.ll
  LLVM :: ThinLTO/X86/devirt_local_same_guid.ll
  LLVM :: ThinLTO/X86/devirt_promote.ll
  LLVM :: ThinLTO/X86/devirt_promote_legacy.ll
  LLVM :: ThinLTO/X86/devirt_single_hybrid.ll
  LLVM :: ThinLTO/X86/diagnostic-handler-remarks-with-hotness.ll
  LLVM :: ThinLTO/X86/diagnostic-handler-remarks.ll
  LLVM :: ThinLTO/X86/dicompositetype-unique-alias.ll
  LLVM :: ThinLTO/X86/dicompositetype-unique.ll
  LLVM :: ThinLTO/X86/dicompositetype-unique2.ll
  LLVM :: ThinLTO/X86/dot-dumper.ll
  LLVM :: ThinLTO/X86/dot-dumper2.ll
  LLVM :: ThinLTO/X86/dsolocal_dllimport.ll
  LLVM :: ThinLTO/X86/emit-inprocess-files.ll
  LLVM :: ThinLTO/X86/empty_module_with_cache.ll
  LLVM :: ThinLTO/X86/funcattrs-prop-exported-internal.ll
  LLVM :: ThinLTO/X86/funcattrs-prop-maythrow.ll
  LLVM :: ThinLTO/X86/funcattrs-prop-undefined.ll
  LLVM :: ThinLTO/X86/funcattrs-prop-weak.ll
  LLVM :: ThinLTO/X86/funcattrs-prop.ll
  LLVM :: ThinLTO/X86/funcimport.ll
  LLVM :: ThinLTO/X86/funcimport2.ll
  LLVM :: ThinLTO/X86/funcimport_alwaysinline.ll
  LLVM :: ThinLTO/X86/function_entry_count.ll
  LLVM :: ThinLTO/X86/globals-import-blockaddr.ll
  LLVM :: ThinLTO/X86/guid_collision.ll
  LLVM :: ThinLTO/X86/hidden-escaped-symbols-alt.ll
  LLVM :: ThinLTO/X86/hidden-escaped-symbols.ll
  LLVM :: ThinLTO/X86/ifunc-import.ll
  LLVM :: ThinLTO/X86/import-constant.ll
  LLVM :: ThinLTO/X86/import-dsolocal.ll
  LLVM :: ThinLTO/X86/import-metadata.ll
  LLVM :: ThinLTO/X86/import-ro-constant.ll
  LLVM :: ThinLTO/X86/index-const-prop-O0.ll
  LLVM :: ThinLTO/X86/index-const-prop-alias.ll
  LLVM :: ThinLTO/X86/index-const-prop-cache.ll
  LLVM :: ThinLTO/X86/index-const-prop-comdat.ll
  LLVM :: ThinLTO/X86/index-const-prop-dead.ll
  LLVM :: ThinLTO/X86/index-const-prop-full-lto.ll
  LLVM :: ThinLTO/X86/index-const-prop-gvref-pie.ll
  LLVM :: ThinLTO/X86/index-const-prop-gvref.ll
  LLVM :: ThinLTO/X86/index-const-prop-ldst.ll
  LLVM :: ThinLTO/X86/index-const-prop-linkage.ll
  LLVM :: ThinLTO/X86/index-const-prop2.ll
  LLVM :: ThinLTO/X86/linkonce_aliasee_ref_import.ll
  LLVM :: ThinLTO/X86/linkonce_odr_unnamed_addr.ll
  LLVM :: ThinLTO/X86/linkonce_resolution_comdat.ll
  LLVM :: ThinLTO/X86/lower_type_test_phi.ll
  LLVM :: ThinLTO/X86/memprof-supports-hot-cold-new.ll
  LLVM :: ThinLTO/X86/module_asm2.ll
  LLVM :: ThinLTO/X86/module_asm_glob.ll
  LLVM :: ThinLTO/X86/noinline.ll
  LLVM :: ThinLTO/X86/nonprevailing_weak_globals_import.ll
  LLVM :: ThinLTO/X86/nossp.ll
  LLVM :: ThinLTO/X86/personality-local.ll
  LLVM :: ThinLTO/X86/personality.ll
  LLVM :: ThinLTO/X86/pr35472.ll
  LLVM :: ThinLTO/X86/prevailing_weak_globals_import.ll
  LLVM :: ThinLTO/X86/public-type-test.ll
  LLVM :: ThinLTO/X86/reference_non_importable.ll
  LLVM :: ThinLTO/X86/save_objects.ll
  LLVM :: ThinLTO/X86/selective-save-temps.ll
  LLVM :: ThinLTO/X86/strong_non_prevailing.ll
  LLVM :: ThinLTO/X86/visibility-elf.ll
  LLVM :: ThinLTO/X86/visibility-macho.ll
  LLVM :: ThinLTO/X86/weak_resolution.ll
  LLVM :: ThinLTO/X86/windows-vftable.ll
  LLVM :: ThinLTO/X86/workload.ll
  LLVM :: ThinLTO/X86/writeonly-with-refs.ll
  LLVM :: ThinLTO/X86/writeonly2.ll

I think this is a false positive but I'm not sure. I thought it would be valuable to document this; perhaps there can be a suppression written or such.

llvmbot commented 1 month ago

@llvm/issue-subscribers-backend-powerpc

Author: A. Wilcox (awilfox)

While trying to debug #96734, I built LLVM with `-fsanitize=thread`, and virtually all ThinLTO tests failed with many dozens of TSan 'data race' errors, which looked very similar to this example: ``` ================== WARNING: ThreadSanitizer: data race (pid=53312) Atomic write of size 4 at 0x3ffff6d803c8 by thread T2: #0 llvm::sys::CompareAndSwap(unsigned int volatile*, unsigned int, unsigned int) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Atomic.cpp:53 (libLLVM.so.18.1+0xe486ac) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #1 void llvm::call_once<void* (&)(llvm::PassRegistry&), std::reference_wrapper<llvm::PassRegistry> >(llvm::once_flag&, void* (&)(llvm::PassRegistry&), std::reference_wrapper<llvm::PassRegistry>&&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Threading.h:94 (libLLVM.so.18.1+0x18a7ac8) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #2 llvm::initializeMachineDominatorTreePass(llvm::PassRegistry&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineDominators.cpp:44 (libLLVM.so.18.1+0x18a7ac8) #3 llvm::initializeCodeGen(llvm::PassRegistry&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/CodeGen.cpp:82 (libLLVM.so.18.1+0x15089c8) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #4 llvm::TargetPassConfig::TargetPassConfig(llvm::LLVMTargetMachine&, llvm::legacy::PassManagerBase&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/TargetPassConfig.cpp:577 (libLLVM.so.18.1+0x1ee68e4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #5 X86PassConfig /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Target/X86/X86TargetMachine.cpp:371 (libLLVM.so.18.1+0x8c9a7cc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #6 llvm::X86TargetMachine::createPassConfig(llvm::legacy::PassManagerBase&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Target/X86/X86TargetMachine.cpp:430 (libLLVM.so.18.1+0x8c9a7cc) #7 addPassesToGenerateCode /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/LLVMTargetMachine.cpp:121 (libLLVM.so.18.1+0x17a06c4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #8 llvm::LLVMTargetMachine::addPassesToEmitFile(llvm::legacy::PassManagerBase&, llvm::raw_pwrite_stream&, llvm::raw_pwrite_stream*, llvm::CodeGenFileType, bool, llvm::MachineModuleInfoWrapperPass*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/LLVMTargetMachine.cpp:241 (libLLVM.so.18.1+0x17aa9b4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #9 codegen /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:418 (libLLVM.so.18.1+0x4b55f74) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #10 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:593 (libLLVM.so.18.1+0x4b590dc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #11 llvm::lto::thinBackend(llvm::lto::Config const&, unsigned int, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, llvm::Module&, llvm::ModuleSummaryIndex const&, llvm::DenseMap<llvm::StringRef, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> > > > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u> >*, std::vector<unsigned char, std::allocator<unsigned char> > const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:668 (libLLVM.so.18.1+0x4b590dc) #12 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1457 (libLLVM.so.18.1+0x4b3c5a0) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #13 runThinLTOBackendThread /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1472 (libLLVM.so.18.1+0x4b3c5a0) #14 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1512 (libLLVM.so.18.1+0x4b3c5a0) #15 __invoke_impl<void, (anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>&, llvm::BitcodeModule&, llvm::ModuleSummaryIndex&, const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > >&, const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> >&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > >&, const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> >&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> >&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0x4b3c5a0) #16 __invoke<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>&, llvm::BitcodeModule&, llvm::ModuleSummaryIndex&, const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > >&, const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> >&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > >&, const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> >&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> >&> /usr/include/c++/13.3.0/bits/invoke.h:96 (libLLVM.so.18.1+0x4b3c5a0) #17 __call<void, 0, 1, 2, 3, 4, 5, 6> /usr/include/c++/13.3.0/functional:506 (libLLVM.so.18.1+0x4b3c5a0) #18 operator()<> /usr/include/c++/13.3.0/functional:591 (libLLVM.so.18.1+0x4b3c5a0) #19 __invoke_impl<void, std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)>&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0x4b3c5a0) #20 __invoke_r<void, std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)>&> /usr/include/c++/13.3.0/bits/invoke.h:111 (libLLVM.so.18.1+0x4b3c5a0) #21 _M_invoke /usr/include/c++/13.3.0/bits/std_function.h:290 (libLLVM.so.18.1+0x4b3c5a0) #22 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591 (libLLVM.so.18.1+0xc00c0c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #23 llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}::operator()() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:135 (libLLVM.so.18.1+0xc00c0c) #24 void std::__invoke_impl<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>(std::__invoke_other, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&) /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0xc00c0c) #25 std::enable_if<is_invocable_r_v<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>, void>::type std::__invoke_r<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>(llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&) /usr/include/c++/13.3.0/bits/invoke.h:111 (libLLVM.so.18.1+0xc00c0c) #26 std::_Function_handler<void (), llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}>::_M_invoke(std::_Any_data const&) /usr/include/c++/13.3.0/bits/std_function.h:290 (libLLVM.so.18.1+0xc00c0c) #27 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591 (libLLVM.so.18.1+0xd86b4c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #28 llvm::ThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:101 (libLLVM.so.18.1+0xd86b4c) #29 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:49 (libLLVM.so.18.1+0xd87f10) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #30 operator()<llvm::ThreadPool::grow(int)::<lambda()>&> /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:43 (libLLVM.so.18.1+0xd87f10) #31 __invoke_impl<void, llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, llvm::ThreadPool::grow(int)::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0xd87f10) #32 __invoke<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, llvm::ThreadPool::grow(int)::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:96 (libLLVM.so.18.1+0xd87f10) #33 __apply_impl<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<llvm::ThreadPool::grow(int)::<lambda()> >&, 0> /usr/include/c++/13.3.0/tuple:2302 (libLLVM.so.18.1+0xd87f10) #34 apply<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<llvm::ThreadPool::grow(int)::<lambda()> >&> /usr/include/c++/13.3.0/tuple:2313 (libLLVM.so.18.1+0xd87f10) #35 GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:41 (libLLVM.so.18.1+0xd87f10) #36 ThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:55 (libLLVM.so.18.1+0xd87f10) Previous read of size 4 at 0x3ffff6d803c8 by thread T1: #0 void llvm::call_once<void* (&)(llvm::PassRegistry&), std::reference_wrapper<llvm::PassRegistry> >(llvm::once_flag&, void* (&)(llvm::PassRegistry&), std::reference_wrapper<llvm::PassRegistry>&&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Threading.h:104 (libLLVM.so.18.1+0x18a8154) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #1 llvm::initializeMachineDominatorTreePass(llvm::PassRegistry&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineDominators.cpp:44 (libLLVM.so.18.1+0x18a8154) #2 llvm::MachineDominatorTree::MachineDominatorTree() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineDominators.cpp:68 (libLLVM.so.18.1+0x18a8154) #3 std::__detail::_MakeUniq<llvm::MachineDominatorTree>::__single_object std::make_unique<llvm::MachineDominatorTree>() /usr/include/c++/13.3.0/bits/unique_ptr.h:1070 (libLLVM.so.18.1+0x16e76f4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #4 llvm::LazyMachineBlockFrequencyInfoPass::calculateIfNotAvailable() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/LazyMachineBlockFrequencyInfo.cpp:78 (libLLVM.so.18.1+0x16e76f4) #5 llvm::LazyMachineBlockFrequencyInfoPass::getBFI() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/CodeGen/LazyMachineBlockFrequencyInfo.h:61 (libLLVM.so.18.1+0x8846860) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #6 runOnMachineFunction /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Target/X86/X86FixupLEAs.cpp:238 (libLLVM.so.18.1+0x8846860) #7 runOnMachineFunction /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Target/X86/X86FixupLEAs.cpp:221 (libLLVM.so.18.1+0x8846860) #8 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineFunctionPass.cpp:93 (libLLVM.so.18.1+0x18e68a4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #9 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/CodeGen/MachineFunctionPass.cpp:42 (libLLVM.so.18.1+0x18e83a4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #10 llvm::FPPassManager::runOnFunction(llvm::Function&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:1443 (libLLVM.so.18.1+0x11e8c18) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #11 llvm::FPPassManager::runOnModule(llvm::Module&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:1489 (libLLVM.so.18.1+0x11e9330) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #12 runOnModule /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:1558 (libLLVM.so.18.1+0x11eaae4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #13 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:541 (libLLVM.so.18.1+0x11eaae4) #14 llvm::legacy::PassManager::run(llvm::Module&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/IR/LegacyPassManager.cpp:1685 (libLLVM.so.18.1+0x11eb334) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #15 codegen /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:422 (libLLVM.so.18.1+0x4b55f8c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #16 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:593 (libLLVM.so.18.1+0x4b590dc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #17 llvm::lto::thinBackend(llvm::lto::Config const&, unsigned int, std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, llvm::Module&, llvm::ModuleSummaryIndex const&, llvm::DenseMap<llvm::StringRef, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<unsigned long, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned long> > > > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u> >*, std::vector<unsigned char, std::allocator<unsigned char> > const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTOBackend.cpp:668 (libLLVM.so.18.1+0x4b590dc) #18 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1457 (libLLVM.so.18.1+0x4b3c5a0) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #19 runThinLTOBackendThread /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1472 (libLLVM.so.18.1+0x4b3c5a0) #20 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1512 (libLLVM.so.18.1+0x4b3c5a0) #21 __invoke_impl<void, (anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>&, llvm::BitcodeModule&, llvm::ModuleSummaryIndex&, const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > >&, const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> >&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > >&, const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> >&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> >&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0x4b3c5a0) #22 __invoke<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>&, llvm::BitcodeModule&, llvm::ModuleSummaryIndex&, const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > >&, const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> >&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > >&, const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> >&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> >&> /usr/include/c++/13.3.0/bits/invoke.h:96 (libLLVM.so.18.1+0x4b3c5a0) #23 __call<void, 0, 1, 2, 3, 4, 5, 6> /usr/include/c++/13.3.0/functional:506 (libLLVM.so.18.1+0x4b3c5a0) #24 operator()<> /usr/include/c++/13.3.0/functional:591 (libLLVM.so.18.1+0x4b3c5a0) #25 __invoke_impl<void, std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)>&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0x4b3c5a0) #26 __invoke_r<void, std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)>&> /usr/include/c++/13.3.0/bits/invoke.h:111 (libLLVM.so.18.1+0x4b3c5a0) #27 _M_invoke /usr/include/c++/13.3.0/bits/std_function.h:290 (libLLVM.so.18.1+0x4b3c5a0) #28 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591 (libLLVM.so.18.1+0xc00c0c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #29 llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}::operator()() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:135 (libLLVM.so.18.1+0xc00c0c) #30 void std::__invoke_impl<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>(std::__invoke_other, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&) /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0xc00c0c) #31 std::enable_if<is_invocable_r_v<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>, void>::type std::__invoke_r<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&>(llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}&) /usr/include/c++/13.3.0/bits/invoke.h:111 (libLLVM.so.18.1+0xc00c0c) #32 std::_Function_handler<void (), llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::{lambda()#1}>::_M_invoke(std::_Any_data const&) /usr/include/c++/13.3.0/bits/std_function.h:290 (libLLVM.so.18.1+0xc00c0c) #33 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591 (libLLVM.so.18.1+0xd86b4c) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #34 llvm::ThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:101 (libLLVM.so.18.1+0xd86b4c) #35 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:49 (libLLVM.so.18.1+0xd87f10) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #36 operator()<llvm::ThreadPool::grow(int)::<lambda()>&> /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:43 (libLLVM.so.18.1+0xd87f10) #37 __invoke_impl<void, llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, llvm::ThreadPool::grow(int)::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:61 (libLLVM.so.18.1+0xd87f10) #38 __invoke<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, llvm::ThreadPool::grow(int)::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:96 (libLLVM.so.18.1+0xd87f10) #39 __apply_impl<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<llvm::ThreadPool::grow(int)::<lambda()> >&, 0> /usr/include/c++/13.3.0/tuple:2302 (libLLVM.so.18.1+0xd87f10) #40 apply<llvm::thread::GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > >(void*)::<lambda(auto:4&&, auto:5&& ...)>, std::tuple<llvm::ThreadPool::grow(int)::<lambda()> >&> /usr/include/c++/13.3.0/tuple:2313 (libLLVM.so.18.1+0xd87f10) #41 GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:41 (libLLVM.so.18.1+0xd87f10) #42 ThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:55 (libLLVM.so.18.1+0xd87f10) Location is global 'InitializeMachineDominatorTreePassFlag' of size 4 at 0x3ffff6d803c8 (libLLVM.so.18.1+0xc51a3c8) Thread T2 (tid=53396, running) created by main thread at: #0 pthread_create /home/awilcox/Code/awilfox/gcc-next/system/gcc/src/gcc-13.3.0/libsanitizer/tsan/tsan_interceptors_posix.cpp:1036 (libtsan.so.2+0x3c4d0) (BuildId: c92845fc2f2f0f482ba79571bf8c69c18ab12adb) #1 llvm::llvm_execute_on_thread_impl(void* (*)(void*), void*, std::optional<unsigned int>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Unix/Threading.inc:85 (libLLVM.so.18.1+0xe7f3c0) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #2 thread<llvm::ThreadPool::grow(int)::<lambda()>&> /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:131 (libLLVM.so.18.1+0xd861dc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #3 thread<llvm::ThreadPool::grow(int)::<lambda()> > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:78 (libLLVM.so.18.1+0xd861dc) #4 construct<llvm::thread, llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/new_allocator.h:191 (libLLVM.so.18.1+0xd861dc) #5 construct<llvm::thread, llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/alloc_traits.h:538 (libLLVM.so.18.1+0xd861dc) #6 _M_realloc_insert<llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/vector.tcc:468 (libLLVM.so.18.1+0xd861dc) #7 emplace_back<llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/vector.tcc:123 (libLLVM.so.18.1+0xd861dc) #8 llvm::ThreadPool::grow(int) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:46 (libLLVM.so.18.1+0xd861dc) #9 std::shared_future<void> llvm::ThreadPool::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:167 (libLLVM.so.18.1+0xc162f8) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #10 async<std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)> > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:85 (libLLVM.so.18.1+0x4b2f364) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #11 async<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>, llvm::BitcodeModule&, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> > >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > > >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> > >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> > > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:69 (libLLVM.so.18.1+0x4b2f364) #12 start /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1499 (libLLVM.so.18.1+0x4b2f364) #13 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1827 (libLLVM.so.18.1+0x4b33928) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #14 llvm::lto::LTO::runThinLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)> > (unsigned int, llvm::StringRef, llvm::Twine const&)>, llvm::DenseSet<unsigned long, llvm::DenseMapInfo<unsigned long, void> > const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1848 (libLLVM.so.18.1+0x4b36d04) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #15 llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)> > (unsigned int, llvm::StringRef, llvm::Twine const&)>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1176 (libLLVM.so.18.1+0x4b421e4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #16 run /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-lto2/llvm-lto2.cpp:436 (llvm-lto2+0x29c14) (BuildId: 5961eacb5a77065ebafddaad2256fe568af3ce49) #17 main /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-lto2/llvm-lto2.cpp:558 (llvm-lto2+0x12528) (BuildId: 5961eacb5a77065ebafddaad2256fe568af3ce49) Thread T1 (tid=53395, running) created by main thread at: #0 pthread_create /home/awilcox/Code/awilfox/gcc-next/system/gcc/src/gcc-13.3.0/libsanitizer/tsan/tsan_interceptors_posix.cpp:1036 (libtsan.so.2+0x3c4d0) (BuildId: c92845fc2f2f0f482ba79571bf8c69c18ab12adb) #1 llvm::llvm_execute_on_thread_impl(void* (*)(void*), void*, std::optional<unsigned int>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Unix/Threading.inc:85 (libLLVM.so.18.1+0xe7f3c0) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #2 thread<llvm::ThreadPool::grow(int)::<lambda()>&> /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:131 (libLLVM.so.18.1+0xd861dc) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #3 thread<llvm::ThreadPool::grow(int)::<lambda()> > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:78 (libLLVM.so.18.1+0xd861dc) #4 construct<llvm::thread, llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/new_allocator.h:191 (libLLVM.so.18.1+0xd861dc) #5 construct<llvm::thread, llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/alloc_traits.h:538 (libLLVM.so.18.1+0xd861dc) #6 _M_realloc_insert<llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/vector.tcc:468 (libLLVM.so.18.1+0xd861dc) #7 emplace_back<llvm::ThreadPool::grow(int)::<lambda()> > /usr/include/c++/13.3.0/bits/vector.tcc:123 (libLLVM.so.18.1+0xd861dc) #8 llvm::ThreadPool::grow(int) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:46 (libLLVM.so.18.1+0xd861dc) #9 std::shared_future<void> llvm::ThreadPool::asyncImpl<void>(std::function<void ()>, llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:167 (libLLVM.so.18.1+0xc162f8) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #10 async<std::_Bind<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int> > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo> >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes> >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*> >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule> >)> > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:85 (libLLVM.so.18.1+0x4b2f364) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #11 async<(anonymous namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)::<lambda(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, const llvm::FunctionImporter::ImportMapTy&, const llvm::FunctionImporter::ExportSetTy&, const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes>&, const llvm::GVSummaryMapTy&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule>&)>, llvm::BitcodeModule&, std::reference_wrapper<llvm::ModuleSummaryIndex>, std::reference_wrapper<const llvm::DenseMap<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> >, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, std::unordered_set<long unsigned int, std::hash<long unsigned int>, std::equal_to<long unsigned int>, std::allocator<long unsigned int> > > > >, std::reference_wrapper<const llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> > >, std::reference_wrapper<const std::map<long unsigned int, llvm::GlobalValue::LinkageTypes, std::less<long unsigned int>, std::allocator<std::pair<long unsigned int const, llvm::GlobalValue::LinkageTypes> > > >, std::reference_wrapper<const llvm::DenseMap<long unsigned int, llvm::GlobalValueSummary*, llvm::DenseMapInfo<long unsigned int, void>, llvm::detail::DenseMapPair<long unsigned int, llvm::GlobalValueSummary*> > >, std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, llvm::DenseMapInfo<llvm::StringRef, void>, llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >, llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0> > > > /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:69 (libLLVM.so.18.1+0x4b2f364) #12 start /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1499 (libLLVM.so.18.1+0x4b2f364) #13 operator() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1827 (libLLVM.so.18.1+0x4b33928) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #14 llvm::lto::LTO::runThinLTO(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)> > (unsigned int, llvm::StringRef, llvm::Twine const&)>, llvm::DenseSet<unsigned long, llvm::DenseMapInfo<unsigned long, void> > const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1848 (libLLVM.so.18.1+0x4b36d04) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #15 llvm::lto::LTO::run(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)>, std::function<llvm::Expected<std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, std::default_delete<llvm::CachedFileStream> > > (unsigned int, llvm::Twine const&)> > (unsigned int, llvm::StringRef, llvm::Twine const&)>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/LTO/LTO.cpp:1176 (libLLVM.so.18.1+0x4b421e4) (BuildId: 1076afea7ca68c706bc2b8fcbf5d4f3464cf445a) #16 run /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-lto2/llvm-lto2.cpp:436 (llvm-lto2+0x29c14) (BuildId: 5961eacb5a77065ebafddaad2256fe568af3ce49) #17 main /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-lto2/llvm-lto2.cpp:558 (llvm-lto2+0x12528) (BuildId: 5961eacb5a77065ebafddaad2256fe568af3ce49) SUMMARY: ThreadSanitizer: data race /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Atomic.cpp:53 in llvm::sys::CompareAndSwap(unsigned int volatile*, unsigned int, unsigned int) ================== ``` These are the tests that failed with these errors: ``` LLVM :: LTO/Resolution/X86/dead-strip-alias.ll LLVM :: LTO/Resolution/X86/lto-unit-check.ll LLVM :: LTO/Resolution/X86/not-prevailing.ll LLVM :: ThinLTO/X86/alias_internal.ll LLVM :: ThinLTO/X86/asm.ll LLVM :: ThinLTO/X86/cache-decoupled-from-filenames.ll LLVM :: ThinLTO/X86/cache-decoupled-from-order.ll LLVM :: ThinLTO/X86/cache-icall.ll LLVM :: ThinLTO/X86/cache-import-lists.ll LLVM :: ThinLTO/X86/cache-typeid-resolutions.ll LLVM :: ThinLTO/X86/cache.ll LLVM :: ThinLTO/X86/callees-metadata.ll LLVM :: ThinLTO/X86/check_var_import_odr.ll LLVM :: ThinLTO/X86/ctor-dtor-alias.ll LLVM :: ThinLTO/X86/ctor-dtor-alias2.ll LLVM :: ThinLTO/X86/debuginfo-compositetype-import.ll LLVM :: ThinLTO/X86/devirt2.ll LLVM :: ThinLTO/X86/devirt_after_filtering_unreachable.ll LLVM :: ThinLTO/X86/devirt_alias.ll LLVM :: ThinLTO/X86/devirt_available_externally.ll LLVM :: ThinLTO/X86/devirt_external_comdat_same_guid.ll LLVM :: ThinLTO/X86/devirt_local_same_guid.ll LLVM :: ThinLTO/X86/devirt_promote.ll LLVM :: ThinLTO/X86/devirt_promote_legacy.ll LLVM :: ThinLTO/X86/devirt_single_hybrid.ll LLVM :: ThinLTO/X86/diagnostic-handler-remarks-with-hotness.ll LLVM :: ThinLTO/X86/diagnostic-handler-remarks.ll LLVM :: ThinLTO/X86/dicompositetype-unique-alias.ll LLVM :: ThinLTO/X86/dicompositetype-unique.ll LLVM :: ThinLTO/X86/dicompositetype-unique2.ll LLVM :: ThinLTO/X86/dot-dumper.ll LLVM :: ThinLTO/X86/dot-dumper2.ll LLVM :: ThinLTO/X86/dsolocal_dllimport.ll LLVM :: ThinLTO/X86/emit-inprocess-files.ll LLVM :: ThinLTO/X86/empty_module_with_cache.ll LLVM :: ThinLTO/X86/funcattrs-prop-exported-internal.ll LLVM :: ThinLTO/X86/funcattrs-prop-maythrow.ll LLVM :: ThinLTO/X86/funcattrs-prop-undefined.ll LLVM :: ThinLTO/X86/funcattrs-prop-weak.ll LLVM :: ThinLTO/X86/funcattrs-prop.ll LLVM :: ThinLTO/X86/funcimport.ll LLVM :: ThinLTO/X86/funcimport2.ll LLVM :: ThinLTO/X86/funcimport_alwaysinline.ll LLVM :: ThinLTO/X86/function_entry_count.ll LLVM :: ThinLTO/X86/globals-import-blockaddr.ll LLVM :: ThinLTO/X86/guid_collision.ll LLVM :: ThinLTO/X86/hidden-escaped-symbols-alt.ll LLVM :: ThinLTO/X86/hidden-escaped-symbols.ll LLVM :: ThinLTO/X86/ifunc-import.ll LLVM :: ThinLTO/X86/import-constant.ll LLVM :: ThinLTO/X86/import-dsolocal.ll LLVM :: ThinLTO/X86/import-metadata.ll LLVM :: ThinLTO/X86/import-ro-constant.ll LLVM :: ThinLTO/X86/index-const-prop-O0.ll LLVM :: ThinLTO/X86/index-const-prop-alias.ll LLVM :: ThinLTO/X86/index-const-prop-cache.ll LLVM :: ThinLTO/X86/index-const-prop-comdat.ll LLVM :: ThinLTO/X86/index-const-prop-dead.ll LLVM :: ThinLTO/X86/index-const-prop-full-lto.ll LLVM :: ThinLTO/X86/index-const-prop-gvref-pie.ll LLVM :: ThinLTO/X86/index-const-prop-gvref.ll LLVM :: ThinLTO/X86/index-const-prop-ldst.ll LLVM :: ThinLTO/X86/index-const-prop-linkage.ll LLVM :: ThinLTO/X86/index-const-prop2.ll LLVM :: ThinLTO/X86/linkonce_aliasee_ref_import.ll LLVM :: ThinLTO/X86/linkonce_odr_unnamed_addr.ll LLVM :: ThinLTO/X86/linkonce_resolution_comdat.ll LLVM :: ThinLTO/X86/lower_type_test_phi.ll LLVM :: ThinLTO/X86/memprof-supports-hot-cold-new.ll LLVM :: ThinLTO/X86/module_asm2.ll LLVM :: ThinLTO/X86/module_asm_glob.ll LLVM :: ThinLTO/X86/noinline.ll LLVM :: ThinLTO/X86/nonprevailing_weak_globals_import.ll LLVM :: ThinLTO/X86/nossp.ll LLVM :: ThinLTO/X86/personality-local.ll LLVM :: ThinLTO/X86/personality.ll LLVM :: ThinLTO/X86/pr35472.ll LLVM :: ThinLTO/X86/prevailing_weak_globals_import.ll LLVM :: ThinLTO/X86/public-type-test.ll LLVM :: ThinLTO/X86/reference_non_importable.ll LLVM :: ThinLTO/X86/save_objects.ll LLVM :: ThinLTO/X86/selective-save-temps.ll LLVM :: ThinLTO/X86/strong_non_prevailing.ll LLVM :: ThinLTO/X86/visibility-elf.ll LLVM :: ThinLTO/X86/visibility-macho.ll LLVM :: ThinLTO/X86/weak_resolution.ll LLVM :: ThinLTO/X86/windows-vftable.ll LLVM :: ThinLTO/X86/workload.ll LLVM :: ThinLTO/X86/writeonly-with-refs.ll LLVM :: ThinLTO/X86/writeonly2.ll ``` I think this is a false positive but I'm not sure. I thought it would be valuable to document this; perhaps there can be a suppression written or such.