Skip to content

Conversation

@cachemeifyoucan
Copy link
Collaborator

@cachemeifyoucan cachemeifyoucan commented Oct 29, 2024

Add OnDiskTrieRawHashMap. This is a on-disk persistent hash map that
uses a Trie data structure that is similar to TrieRawHashMap.
OnDiskTrieRawHashMap is thread safe and process safe. It is mostly lock
free, except it internally coordinates cross process creation and
closing using file lock.

@llvmbot llvmbot added the cmake Build system in general and CMake in particular label Sep 15, 2025
@cachemeifyoucan cachemeifyoucan changed the title [CAS] Add OnDiskHashMappedTrie [CAS] Add OnDiskTrieRawHashMap Sep 15, 2025
@cachemeifyoucan cachemeifyoucan changed the base branch from users/cachemeifyoucan/spr/main.cas-add-ondiskhashmappedtrie to main September 15, 2025 17:27
@github-actions
Copy link

github-actions bot commented Sep 15, 2025

✅ With the latest revision this PR passed the C/C++ code formatter.

Add OnDiskTrieRawHashMap. This is a on-disk persistent hash map that
uses a Trie data structure that is similar to TrieRawHashMap.
OnDiskTrieRawHashMap is thread safe and process safe. It is mostly lock
free, except it internally coordinates cross process creation and
closing using file lock.

OnDiskTrieRawHashMap is used as the foundation to implement OnDisk CAS
storage which maps hash to store data.

Reviewers: 

Pull Request: #114100
@cachemeifyoucan cachemeifyoucan force-pushed the users/cachemeifyoucan/spr/cas-add-ondiskhashmappedtrie branch from 3d10915 to 01195e5 Compare September 15, 2025 17:31
: Hash(Hash), Data(Data.begin(), Data.size()) {}

ArrayRef<uint8_t> Hash;
ArrayRef<char> Data;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Out of curiosity — why is this using a signed char as storage?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What suggestions you have? It is quite natural as Data can be get as StringRef which is const char*, but I guess you are asking why Hash and Data are different types? I don't really have preference either way.

printHexDigits(OS, Bytes, LastBinaryBit, HashEndBit - LastBinaryBit);
}

static void appendIndexBits(std::string &Prefix, size_t Index,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe use a raw_string_stream here?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is mostly just bit manipulation with adding single char to string. I don't see using a stream is making it easier to read.

Created using spr 1.3.6
@cachemeifyoucan
Copy link
Collaborator Author

Ping

Created using spr 1.3.7
Copy link
Contributor

@ilovepi ilovepi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this mostly looks fine. How much coverage are you getting out of the tests? It seems like it would be relatively low, given the implementation size. i'm not suggesting you need 100% coverage or anything like that, it just seems like there are very few tests for the amount of APIs in the header.

Also unclear on the OnDiskDataAllocator, and how it relates to the rest of this patch.

@cachemeifyoucan
Copy link
Collaborator Author

I think this mostly looks fine. How much coverage are you getting out of the tests? It seems like it would be relatively low, given the implementation size. i'm not suggesting you need 100% coverage or anything like that, it just seems like there are very few tests for the amount of APIs in the header.

Let me make sure it covers most of the APIs. In downstream code, this is treated as an implementation details for the CAS, so I feel it is a bit wasteful to do extensive testing (like thread-safe/multi-process tests) on all layers. But I agree it should cover most of the APIs.

Also unclear on the OnDiskDataAllocator, and how it relates to the rest of this patch.

Going to split that up into a separate PR.

I think maybe I missed it, but why is this included if it's not supported?

Are you suggesting just not building that when the feature is not enabled and trying to use the feature will result in link failure, instead of some error during runtime? I am ok to switch to that too.

Copy link
Contributor

@ilovepi ilovepi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. I just have the 1 Q on the format that I left in line, w.r.t the header layout.

Created using spr 1.3.7
@cachemeifyoucan cachemeifyoucan merged commit 2936a2c into main Sep 29, 2025
9 checks passed
@cachemeifyoucan cachemeifyoucan deleted the users/cachemeifyoucan/spr/cas-add-ondiskhashmappedtrie branch September 29, 2025 19:47
@llvm-ci
Copy link
Collaborator

llvm-ci commented Sep 29, 2025

LLVM Buildbot has detected a new failure on builder clang-armv8-quick running on linaro-clang-armv8-quick while building llvm at step 4 "build stage 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/154/builds/22097

Here is the relevant piece of the build log for the reference
Step 4 (build stage 1) failure: 'ninja' (failure)
...
[386/4920] Linking CXX static library lib/libLLVMTableGenCommon.a
[387/4920] Building CXX object lib/DebugInfo/CodeView/CMakeFiles/LLVMDebugInfoCodeView.dir/TypeRecordHelpers.cpp.o
[388/4920] Building CXX object lib/DebugInfo/CodeView/CMakeFiles/LLVMDebugInfoCodeView.dir/TypeTableCollection.cpp.o
[389/4920] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/MachOObjectFormat.cpp.o
[390/4920] Building CXX object lib/DebugInfo/BTF/CMakeFiles/LLVMDebugInfoBTF.dir/BTFParser.cpp.o
[391/4920] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/OrcRTBridge.cpp.o
[392/4920] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/OrcError.cpp.o
[393/4920] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/AllocationActions.cpp.o
[394/4920] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/ObjectFormats.cpp.o
[395/4920] Building CXX object lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o
FAILED: lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o 
/usr/local/bin/c++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/tcwg-buildbot/worker/clang-armv8-quick/stage1/lib/CAS -I/home/tcwg-buildbot/worker/clang-armv8-quick/llvm/llvm/lib/CAS -I/home/tcwg-buildbot/worker/clang-armv8-quick/stage1/include -I/home/tcwg-buildbot/worker/clang-armv8-quick/llvm/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o -MF lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o.d -o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o -c /home/tcwg-buildbot/worker/clang-armv8-quick/llvm/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp
../llvm/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp:287:54: error: non-constant-expression cannot be narrowed from type 'uint64_t' (aka 'unsigned long long') to 'size_t' (aka 'unsigned int') in initializer list [-Wc++11-narrowing]
  287 |     return TrieHashIndexGenerator{Root.getNumBits(), getNumSubtrieBits(), Hash};
      |                                                      ^~~~~~~~~~~~~~~~~~~
../llvm/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp:287:54: note: insert an explicit cast to silence this issue
  287 |     return TrieHashIndexGenerator{Root.getNumBits(), getNumSubtrieBits(), Hash};
      |                                                      ^~~~~~~~~~~~~~~~~~~
      |                                                      static_cast<size_t>( )
1 error generated.
[396/4920] Linking CXX static library lib/libLLVMCodeGenTypes.a
[397/4920] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/SimpleRemoteEPCUtils.cpp.o
[398/4920] Building CXX object lib/DebugInfo/BTF/CMakeFiles/LLVMDebugInfoBTF.dir/BTFContext.cpp.o
[399/4920] Building CXX object lib/ExecutionEngine/Orc/Shared/CMakeFiles/LLVMOrcShared.dir/SymbolStringPool.cpp.o
[400/4920] Building RISCVTargetParserDef.inc...
[401/4920] Linking CXX static library lib/libLLVMRemarks.a
ninja: build stopped: subcommand failed.

@cachemeifyoucan
Copy link
Collaborator Author

LLVM Buildbot has detected a new failure on builder clang-armv8-quick running on linaro-clang-armv8-quick while building llvm at step 4 "build stage 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/154/builds/22097

Here is the relevant piece of the build log for the reference

Fix: #161268

cachemeifyoucan added a commit that referenced this pull request Sep 29, 2025
Fix a build failure on 32 bit system that caused by a warning of
narrowing `uint64_t` to `size_t`.
@llvm-ci
Copy link
Collaborator

llvm-ci commented Sep 29, 2025

LLVM Buildbot has detected a new failure on builder lldb-arm-ubuntu running on linaro-lldb-arm-ubuntu while building llvm at step 4 "build".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/18/builds/21573

Here is the relevant piece of the build log for the reference
Step 4 (build) failure: build (failure)
...
7.597 [6587/10/302] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangOptionDocEmitter.cpp.o
7.598 [6587/9/303] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangSACheckersEmitter.cpp.o
7.599 [6587/8/304] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangSyntaxEmitter.cpp.o
7.599 [6587/7/305] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/MveEmitter.cpp.o
7.600 [6587/6/306] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/NeonEmitter.cpp.o
7.601 [6587/5/307] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/RISCVVEmitter.cpp.o
7.602 [6587/4/308] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/SveEmitter.cpp.o
7.603 [6587/3/309] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/TableGen.cpp.o
15.515 [6587/2/310] Building CXX object lib/CAS/CMakeFiles/LLVMCAS.dir/DatabaseFile.cpp.o
18.858 [6587/1/311] Building CXX object lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o
FAILED: lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o 
/usr/local/bin/c++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/lib/CAS -I/home/tcwg-buildbot/worker/lldb-arm-ubuntu/llvm-project/llvm/lib/CAS -I/home/tcwg-buildbot/worker/lldb-arm-ubuntu/build/include -I/home/tcwg-buildbot/worker/lldb-arm-ubuntu/llvm-project/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o -MF lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o.d -o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o -c /home/tcwg-buildbot/worker/lldb-arm-ubuntu/llvm-project/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp
../llvm-project/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp:287:54: error: non-constant-expression cannot be narrowed from type 'uint64_t' (aka 'unsigned long long') to 'size_t' (aka 'unsigned int') in initializer list [-Wc++11-narrowing]
  287 |     return TrieHashIndexGenerator{Root.getNumBits(), getNumSubtrieBits(), Hash};
      |                                                      ^~~~~~~~~~~~~~~~~~~
../llvm-project/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp:287:54: note: insert an explicit cast to silence this issue
  287 |     return TrieHashIndexGenerator{Root.getNumBits(), getNumSubtrieBits(), Hash};
      |                                                      ^~~~~~~~~~~~~~~~~~~
      |                                                      static_cast<size_t>( )
1 error generated.
ninja: build stopped: subcommand failed.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Sep 29, 2025

LLVM Buildbot has detected a new failure on builder clang-ppc64le-rhel running on ppc64le-clang-rhel-test while building llvm at step 5 "build-unified-tree".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/145/builds/9948

Here is the relevant piece of the build log for the reference
Step 5 (build-unified-tree) failure: build (failure)
...
25.437 [6250/21/403] Creating library symlink lib/libLLVMFrontendDirective.so
25.437 [6250/20/404] Creating library symlink lib/libclangSupport.so
25.438 [6250/19/405] Linking CXX shared library lib/libLLVMDebugInfoMSF.so.22.0git
25.440 [6249/19/406] Creating library symlink lib/libLLVMTelemetry.so
25.442 [6249/18/407] Creating library symlink lib/libLLVMOption.so
25.442 [6249/17/408] Creating library symlink lib/libLLVMDebugInfoCodeView.so
25.443 [6249/16/409] Creating library symlink lib/libLLVMBitstreamReader.so
25.444 [6249/15/410] Creating library symlink lib/libLLVMDebugInfoMSF.so
25.457 [6249/14/411] Generating Confusables.inc
25.489 [6249/13/412] Linking CXX shared library lib/libLLVMCAS.so.22.0git
FAILED: [code=1] lib/libLLVMCAS.so.22.0git 
: && /home/buildbots/llvm-external-buildbots/clang.20.1.8/bin/clang++ --gcc-toolchain=/gcc-toolchain/usr -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete -Wl,--color-diagnostics  -Wl,--gc-sections  -Xlinker --dependency-file=lib/CAS/CMakeFiles/LLVMCAS.dir/link.d -shared -Wl,-soname,libLLVMCAS.so.22.0git -o lib/libLLVMCAS.so.22.0git lib/CAS/CMakeFiles/LLVMCAS.dir/ActionCache.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/ActionCaches.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/BuiltinCAS.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/DatabaseFile.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/InMemoryCAS.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/MappedFileRegionArena.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/ObjectStore.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskCommon.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/buildbots/llvm-external-buildbots/workers/ppc64le-clang-rhel-test/clang-ppc64le-rhel/build/lib:"  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/buildbots/llvm-external-buildbots/workers/ppc64le-clang-rhel-test/clang-ppc64le-rhel/build/lib && :
ld.lld: error: undefined symbol: pthread_create
>>> referenced by OnDiskTrieRawHashMap.cpp
>>>               lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o:(std::thread::_M_thread_deps_never_run())

ld.lld: error: undefined symbol: pthread_join
>>> referenced by OnDiskTrieRawHashMap.cpp
>>>               lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o:(std::thread::_M_thread_deps_never_run())
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
25.575 [6249/12/413] Building CXX object tools/llvm-cfi-verify/lib/CMakeFiles/obj.LLVMCFIVerify.dir/GraphBuilder.cpp.o
25.704 [6249/11/414] Building CXX object lib/Support/LSP/CMakeFiles/LLVMSupportLSP.dir/Protocol.cpp.o
26.778 [6249/10/415] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/RISCVVEmitter.cpp.o
27.103 [6249/9/416] Building CXX object tools/llvm-cfi-verify/lib/CMakeFiles/obj.LLVMCFIVerify.dir/FileAnalysis.cpp.o
27.393 [6249/8/417] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/SveEmitter.cpp.o
27.738 [6249/7/418] Building CXX object lib/TableGen/CMakeFiles/LLVMTableGen.dir/Record.cpp.o
28.041 [6249/6/419] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangDiagnosticsEmitter.cpp.o
28.076 [6249/5/420] Building CXX object lib/FileCheck/CMakeFiles/LLVMFileCheck.dir/FileCheck.cpp.o
28.290 [6249/4/421] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/MveEmitter.cpp.o
30.997 [6249/3/422] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/NeonEmitter.cpp.o
32.415 [6249/2/423] Building CXX object third-party/unittest/CMakeFiles/llvm_gtest.dir/googletest/src/gtest-all.cc.o
44.350 [6249/1/424] Building CXX object tools/clang/utils/TableGen/CMakeFiles/clang-tblgen.dir/ClangAttrEmitter.cpp.o
ninja: build stopped: subcommand failed.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Sep 29, 2025

LLVM Buildbot has detected a new failure on builder amdgpu-offload-rhel-8-cmake-build-only running on rocm-docker-rhel-8 while building llvm at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/204/builds/23593

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: '../llvm-zorg/zorg/buildbot/builders/annotated/amdgpu-offload-cmake.py --jobs=32' (failure)
...
[1242/8095] Building SPIRVGenInstrInfo.inc...
[1243/8095] Building R600GenMCCodeEmitter.inc...
[1244/8095] Building R600GenDAGISel.inc...
[1245/8095] Building SPIRVGenGlobalISel.inc...
[1246/8095] Building SPIRVGenRegisterBank.inc...
[1247/8095] Building CXX object lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o
[1248/8095] Building SPIRVGenSubtargetInfo.inc...
[1249/8095] Building SPIRVGenTables.inc...
[1250/8095] Building R600GenInstrInfo.inc...
[1251/8095] Linking CXX shared library lib/libLLVMCAS.so.22.0git
FAILED: lib/libLLVMCAS.so.22.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-array-bounds -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMCAS.so.22.0git -o lib/libLLVMCAS.so.22.0git lib/CAS/CMakeFiles/LLVMCAS.dir/ActionCache.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/ActionCaches.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/BuiltinCAS.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/DatabaseFile.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/InMemoryCAS.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/MappedFileRegionArena.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/ObjectStore.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskCommon.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib:"  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib && :
lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o: In function `std::future<std::result_of<std::decay<std::function<void ()> >::type ()>::type> std::async<std::function<void ()>>(std::launch, std::function<void ()>&&)':
OnDiskTrieRawHashMap.cpp:(.text._ZSt5asyncISt8functionIFvvEEJEESt6futureINSt9result_ofIFNSt5decayIT_E4typeEDpNS5_IT0_E4typeEEE4typeEESt6launchOS6_DpOS9_[_ZSt5asyncISt8functionIFvvEEJEESt6futureINSt9result_ofIFNSt5decayIT_E4typeEDpNS5_IT0_E4typeEEE4typeEESt6launchOS6_DpOS9_]+0x279): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
[1252/8095] Building CXX object tools/flang/lib/Decimal/CMakeFiles/FortranDecimal.dir/binary-to-decimal.cpp.o
[1253/8095] Building RISCVTargetParserDef.inc...
[1254/8095] Building X86GenExegesis.inc...
[1255/8095] Building X86GenCallingConv.inc...
[1256/8095] Building X86GenAsmWriter.inc...
[1257/8095] Building X86GenRegisterBank.inc...
[1258/8095] Building X86GenInstrMapping.inc...
[1259/8095] Building X86GenRegisterInfo.inc...
[1260/8095] Building X86GenMnemonicTables.inc...
[1261/8095] Building X86GenAsmWriter1.inc...
[1262/8095] Building X86GenAsmMatcher.inc...
[1263/8095] Building X86GenDisassemblerTables.inc...
[1264/8095] Building X86GenFoldTables.inc...
[1265/8095] Building X86GenFastISel.inc...
[1266/8095] Building X86GenGlobalISel.inc...
[1267/8095] Building X86GenDAGISel.inc...
[1268/8095] Building X86GenInstrInfo.inc...
[1269/8095] Building AMDGPUGenRegBankGICombiner.inc...
[1270/8095] Building AMDGPUGenMCPseudoLowering.inc...
[1271/8095] Building AMDGPUGenPreLegalizeGICombiner.inc...
[1272/8095] Building AMDGPUGenMCCodeEmitter.inc...
[1273/8095] Building AMDGPUGenSubtargetInfo.inc...
[1274/8095] Building AMDGPUGenDisassemblerTables.inc...
[1275/8095] Building AMDGPUGenPostLegalizeGICombiner.inc...
[1276/8095] Building AMDGPUGenSearchableTables.inc...
[1277/8095] Building AMDGPUGenCallingConv.inc...
[1278/8095] Building AMDGPUGenAsmWriter.inc...
[1279/8095] Building AMDGPUGenGlobalISel.inc...
[1280/8095] Building AMDGPUGenDAGISel.inc...
[1281/8095] Building AMDGPUGenInstrInfo.inc...
[1282/8095] Building AMDGPUGenAsmMatcher.inc...
[1283/8095] Building AMDGPUGenRegisterInfo.inc...
[1284/8095] Building AMDGPUGenRegisterBank.inc...
ninja: build stopped: subcommand failed.
Step 7 (build cmake config) failure: build cmake config (failure)
...
[1242/8095] Building SPIRVGenInstrInfo.inc...
[1243/8095] Building R600GenMCCodeEmitter.inc...
[1244/8095] Building R600GenDAGISel.inc...
[1245/8095] Building SPIRVGenGlobalISel.inc...
[1246/8095] Building SPIRVGenRegisterBank.inc...
[1247/8095] Building CXX object lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o
[1248/8095] Building SPIRVGenSubtargetInfo.inc...
[1249/8095] Building SPIRVGenTables.inc...
[1250/8095] Building R600GenInstrInfo.inc...
[1251/8095] Linking CXX shared library lib/libLLVMCAS.so.22.0git
FAILED: lib/libLLVMCAS.so.22.0git 
: && /usr/bin/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-array-bounds -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMCAS.so.22.0git -o lib/libLLVMCAS.so.22.0git lib/CAS/CMakeFiles/LLVMCAS.dir/ActionCache.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/ActionCaches.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/BuiltinCAS.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/DatabaseFile.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/InMemoryCAS.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/MappedFileRegionArena.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/ObjectStore.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskCommon.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib:"  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/botworker/bbot/amdgpu-offload-rhel-8-cmake-build-only/build/lib && :
lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o: In function `std::future<std::result_of<std::decay<std::function<void ()> >::type ()>::type> std::async<std::function<void ()>>(std::launch, std::function<void ()>&&)':
OnDiskTrieRawHashMap.cpp:(.text._ZSt5asyncISt8functionIFvvEEJEESt6futureINSt9result_ofIFNSt5decayIT_E4typeEDpNS5_IT0_E4typeEEE4typeEESt6launchOS6_DpOS9_[_ZSt5asyncISt8functionIFvvEEJEESt6futureINSt9result_ofIFNSt5decayIT_E4typeEDpNS5_IT0_E4typeEEE4typeEESt6launchOS6_DpOS9_]+0x279): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
[1252/8095] Building CXX object tools/flang/lib/Decimal/CMakeFiles/FortranDecimal.dir/binary-to-decimal.cpp.o
[1253/8095] Building RISCVTargetParserDef.inc...
[1254/8095] Building X86GenExegesis.inc...
[1255/8095] Building X86GenCallingConv.inc...
[1256/8095] Building X86GenAsmWriter.inc...
[1257/8095] Building X86GenRegisterBank.inc...
[1258/8095] Building X86GenInstrMapping.inc...
[1259/8095] Building X86GenRegisterInfo.inc...
[1260/8095] Building X86GenMnemonicTables.inc...
[1261/8095] Building X86GenAsmWriter1.inc...
[1262/8095] Building X86GenAsmMatcher.inc...
[1263/8095] Building X86GenDisassemblerTables.inc...
[1264/8095] Building X86GenFoldTables.inc...
[1265/8095] Building X86GenFastISel.inc...
[1266/8095] Building X86GenGlobalISel.inc...
[1267/8095] Building X86GenDAGISel.inc...
[1268/8095] Building X86GenInstrInfo.inc...
[1269/8095] Building AMDGPUGenRegBankGICombiner.inc...
[1270/8095] Building AMDGPUGenMCPseudoLowering.inc...
[1271/8095] Building AMDGPUGenPreLegalizeGICombiner.inc...
[1272/8095] Building AMDGPUGenMCCodeEmitter.inc...
[1273/8095] Building AMDGPUGenSubtargetInfo.inc...
[1274/8095] Building AMDGPUGenDisassemblerTables.inc...
[1275/8095] Building AMDGPUGenPostLegalizeGICombiner.inc...
[1276/8095] Building AMDGPUGenSearchableTables.inc...
[1277/8095] Building AMDGPUGenCallingConv.inc...
[1278/8095] Building AMDGPUGenAsmWriter.inc...
[1279/8095] Building AMDGPUGenGlobalISel.inc...
[1280/8095] Building AMDGPUGenDAGISel.inc...
[1281/8095] Building AMDGPUGenInstrInfo.inc...
[1282/8095] Building AMDGPUGenAsmMatcher.inc...
[1283/8095] Building AMDGPUGenRegisterInfo.inc...
[1284/8095] Building AMDGPUGenRegisterBank.inc...
ninja: build stopped: subcommand failed.

@cachemeifyoucan
Copy link
Collaborator Author

Fix for pthread_create missing symbol: #161283

cachemeifyoucan added a commit that referenced this pull request Sep 29, 2025
Link LLVM_PTHREAD_LIB from LLVMCAS library to fix rhel bots.
@llvm-ci
Copy link
Collaborator

llvm-ci commented Sep 29, 2025

LLVM Buildbot has detected a new failure on builder clang-armv7-global-isel running on linaro-clang-armv7-global-isel while building llvm at step 6 "build stage 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/39/builds/8066

Here is the relevant piece of the build log for the reference
Step 6 (build stage 1) failure: 'ninja' (failure)
...
[520/6213] Building CXX object lib/InterfaceStub/CMakeFiles/LLVMInterfaceStub.dir/IFSStub.cpp.o
[521/6213] Building CXX object lib/InterfaceStub/CMakeFiles/LLVMInterfaceStub.dir/ELFObjHandler.cpp.o
[522/6213] Building CXX object lib/IRReader/CMakeFiles/LLVMIRReader.dir/IRReader.cpp.o
[523/6213] Building CXX object lib/CGData/CMakeFiles/LLVMCGData.dir/CodeGenData.cpp.o
[524/6213] Building CXX object lib/CGData/CMakeFiles/LLVMCGData.dir/CodeGenDataReader.cpp.o
[525/6213] Building CXX object lib/CGData/CMakeFiles/LLVMCGData.dir/CodeGenDataWriter.cpp.o
[526/6213] Building CXX object lib/CGData/CMakeFiles/LLVMCGData.dir/OutlinedHashTreeRecord.cpp.o
[527/6213] Building CXX object lib/CGData/CMakeFiles/LLVMCGData.dir/StableFunctionMap.cpp.o
[528/6213] Building CXX object lib/CGData/CMakeFiles/LLVMCGData.dir/StableFunctionMapRecord.cpp.o
[529/6213] Building CXX object lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o
FAILED: lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o 
/usr/local/bin/c++ -DGTEST_HAS_RTTI=0 -D_DEBUG -D_FILE_OFFSET_BITS=64 -D_GLIBCXX_ASSERTIONS -D_GLIBCXX_USE_CXX11_ABI=1 -D_GNU_SOURCE -D_LARGEFILE_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -I/home/tcwg-buildbot/worker/clang-armv7-global-isel/stage1/lib/CAS -I/home/tcwg-buildbot/worker/clang-armv7-global-isel/llvm/llvm/lib/CAS -I/home/tcwg-buildbot/worker/clang-armv7-global-isel/stage1/include -I/home/tcwg-buildbot/worker/clang-armv7-global-isel/llvm/llvm/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG -std=c++17  -fno-exceptions -funwind-tables -fno-rtti -UNDEBUG -MD -MT lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o -MF lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o.d -o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o -c /home/tcwg-buildbot/worker/clang-armv7-global-isel/llvm/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp
../llvm/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp:287:54: error: non-constant-expression cannot be narrowed from type 'uint64_t' (aka 'unsigned long long') to 'size_t' (aka 'unsigned int') in initializer list [-Wc++11-narrowing]
  287 |     return TrieHashIndexGenerator{Root.getNumBits(), getNumSubtrieBits(), Hash};
      |                                                      ^~~~~~~~~~~~~~~~~~~
../llvm/llvm/lib/CAS/OnDiskTrieRawHashMap.cpp:287:54: note: insert an explicit cast to silence this issue
  287 |     return TrieHashIndexGenerator{Root.getNumBits(), getNumSubtrieBits(), Hash};
      |                                                      ^~~~~~~~~~~~~~~~~~~
      |                                                      static_cast<size_t>( )
1 error generated.
[530/6213] Building CXX object lib/CGData/CMakeFiles/LLVMCGData.dir/OutlinedHashTree.cpp.o
[531/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/AllocationOrder.cpp.o
[532/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/AggressiveAntiDepBreaker.cpp.o
[533/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/AssignmentTrackingAnalysis.cpp.o
[534/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/Analysis.cpp.o
[535/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/AtomicExpandPass.cpp.o
[536/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BranchFolding.cpp.o
[537/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BasicTargetTransformInfo.cpp.o
[538/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BreakFalseDeps.cpp.o
[539/6213] Building CXX object lib/CodeGen/CMakeFiles/LLVMCodeGen.dir/BranchRelaxation.cpp.o
[540/6213] Building AArch64GenAsmMatcher.inc...
[541/6213] Building AArch64GenFastISel.inc...
[542/6213] Building AArch64GenGlobalISel.inc...
[543/6213] Building AArch64GenDAGISel.inc...
ninja: build stopped: subcommand failed.

@llvm-ci
Copy link
Collaborator

llvm-ci commented Sep 30, 2025

LLVM Buildbot has detected a new failure on builder clang-ppc64le-linux-multistage running on ppc64le-clang-multistage-test while building llvm at step 4 "build stage 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/76/builds/13031

Here is the relevant piece of the build log for the reference
Step 4 (build stage 1) failure: 'ninja' (failure)
...
[406/6535] Creating library symlink lib/libLLVMDebugInfoMSF.so
[407/6535] Linking CXX shared library lib/libclangSupport.so.22.0git
[408/6535] Linking CXX shared library lib/libLLVMOption.so.22.0git
[409/6535] Linking C executable bin/count
[410/6535] Linking CXX executable bin/split-file
[411/6535] Linking CXX executable bin/clang-tidy-confusable-chars-gen
[412/6535] Linking CXX executable bin/not
[413/6535] Linking CXX executable bin/yaml-bench
[414/6535] Creating library symlink lib/libclangSupport.so
[415/6535] Linking CXX shared library lib/libLLVMCAS.so.22.0git
FAILED: lib/libLLVMCAS.so.22.0git 
: && /usr/lib64/ccache/c++ -fPIC -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-array-bounds -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wno-comment -Wno-misleading-indentation -fdiagnostics-color -ffunction-sections -fdata-sections -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete   -Wl,-rpath-link,/home/buildbots/llvm-external-buildbots/workers/ppc64le-clang-multistage-test/clang-ppc64le-multistage/stage1/./lib  -Wl,--gc-sections -shared -Wl,-soname,libLLVMCAS.so.22.0git -o lib/libLLVMCAS.so.22.0git lib/CAS/CMakeFiles/LLVMCAS.dir/ActionCache.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/ActionCaches.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/BuiltinCAS.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/DatabaseFile.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/InMemoryCAS.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/MappedFileRegionArena.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/ObjectStore.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskCommon.cpp.o lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o  -Wl,-rpath,"\$ORIGIN/../lib:/home/buildbots/llvm-external-buildbots/workers/ppc64le-clang-multistage-test/clang-ppc64le-multistage/stage1/lib:"  lib/libLLVMSupport.so.22.0git  -Wl,-rpath-link,/home/buildbots/llvm-external-buildbots/workers/ppc64le-clang-multistage-test/clang-ppc64le-multistage/stage1/lib && :
lib/CAS/CMakeFiles/LLVMCAS.dir/OnDiskTrieRawHashMap.cpp.o:(.toc+0x90): undefined reference to `pthread_create'
collect2: error: ld returned 1 exit status
[416/6535] Creating library symlink lib/libLLVMOption.so
[417/6535] Linking CXX executable bin/llvm-undname
[418/6535] Linking CXX executable bin/reduce-chunk-list
[419/6535] Linking CXX executable bin/UnicodeNameMappingGenerator
[420/6535] Linking CXX executable bin/llvm-test-mustache-spec
[421/6535] Generating Confusables.inc
[422/6535] Linking CXX shared library lib/libLLVMSupportLSP.so.22.0git
[423/6535] Linking CXX shared library lib/libLLVMTableGen.so.22.0git
[424/6535] Linking CXX shared library lib/libllvm_gtest.so.22.0git
[425/6535] Linking CXX shared library lib/libLLVMDebugInfoCodeView.so.22.0git
[426/6535] Building CXX object lib/FileCheck/CMakeFiles/LLVMFileCheck.dir/FileCheck.cpp.o
ninja: build stopped: subcommand failed.

mahesh-attarde pushed a commit to mahesh-attarde/llvm-project that referenced this pull request Oct 3, 2025
Add OnDiskTrieRawHashMap. This is a on-disk persistent hash map that
uses a Trie data structure that is similar to TrieRawHashMap.
OnDiskTrieRawHashMap is thread safe and process safe. It is mostly lock
free, except it internally coordinates cross process creation and
closing using file lock.
mahesh-attarde pushed a commit to mahesh-attarde/llvm-project that referenced this pull request Oct 3, 2025
)

Fix a build failure on 32 bit system that caused by a warning of
narrowing `uint64_t` to `size_t`.
mahesh-attarde pushed a commit to mahesh-attarde/llvm-project that referenced this pull request Oct 3, 2025
…lvm#161283)

Link LLVM_PTHREAD_LIB from LLVMCAS library to fix rhel bots.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cmake Build system in general and CMake in particular

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants