[clang] [Clang] Rework creating offloading toolchains (PR #125556)

Michael Kruse via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 22 03:04:20 PDT 2025


Meinersbur wrote:

Failures of the sinitizer builds look related to this (https://lab.llvm.org/buildbot/#/builders/169/builds/13161):
```
0.	Program arguments: /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/clang -emit-llvm --cuda-device-only --offload=spirv32 -nocudalib -nocudainc /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/test/CodeGenCUDASPIRV/copy-aggregate-byval.cu -o /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/tools/clang/test/CodeGenCUDASPIRV/Output/copy-aggregate-byval.cu.tmp.bc -c
1.	Compilation construction
 #0 0x00005fb87a758eb6 ___interceptor_backtrace /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:4497:13
 #1 0x00005fb881dad278 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Support/Unix/Signals.inc:834:13
 #2 0x00005fb881da6ed9 llvm::sys::RunSignalHandlers() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Support/Signals.cpp:0:5
 #3 0x00005fb881daf17e SignalHandler(int, siginfo_t*, void*) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/lib/Support/Unix/Signals.inc:426:38
 #4 0x00007c6b77045250 (/lib/x86_64-linux-gnu/libc.so.6+0x45250)
 #5 0x00007c6b770a3f1c pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0xa3f1c)
 #6 0x00007c6b7704519e raise (/lib/x86_64-linux-gnu/libc.so.6+0x4519e)
 #7 0x00007c6b77028902 abort (/lib/x86_64-linux-gnu/libc.so.6+0x28902)
 #8 0x00005fb87a7db86c (/home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/clang+0x122b186c)
 #9 0x00005fb87a7d969e __sanitizer::Die() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/compiler-rt/lib/sanitizer_common/sanitizer_termination.cpp:52:5
#10 0x00005fb87a7f4319 (/home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/clang+0x122ca319)
#11 0x00005fb883ae1136 getBuckets /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:901:40
#12 0x00005fb883ae1136 getBuckets /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:575:65
#13 0x00005fb883ae1136 llvm::DenseMapBase<llvm::DenseMap<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>, clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>::initEmpty() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:442:23
#14 0x00005fb883aede68 grow /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:0:64
#15 0x00005fb883aede68 llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>* llvm::DenseMapBase<llvm::DenseMap<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>, clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>::InsertIntoBucketImpl<clang::driver::Action::OffloadKind>(clang::driver::Action::OffloadKind const&, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>*) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:0:0
#16 0x00005fb883aed959 InsertIntoBucket<const clang::driver::Action::OffloadKind &, llvm::detail::DenseSetEmpty &> /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:596:29
#17 0x00005fb883aed959 std::__1::pair<llvm::DenseMapIterator<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>, false>, bool> llvm::DenseMapBase<llvm::DenseMap<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>, clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>::try_emplace<llvm::detail::DenseSetEmpty&>(clang::driver::Action::OffloadKind const&, llvm::detail::DenseSetEmpty&) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:292:17
#18 0x00005fb883a800aa pair<llvm::DenseMapIterator<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>, false>, bool, 0> /home/b/sanitizer-x86_64-linux-fast/build/libcxx_install_asan_ubsan/include/c++/v1/__utility/pair.h:196:53
#19 0x00005fb883a800aa insert /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseSet.h:221:12
#20 0x00005fb883a800aa clang::driver::Driver::CreateOffloadingDeviceToolChains(clang::driver::Compilation&, llvm::SmallVector<std::__1::pair<clang::driver::types::ID, llvm::opt::Arg const*>, 16u>&) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/lib/Driver/Driver.cpp:1073:13
#21 0x00005fb883a960b2 clang::driver::Driver::BuildCompilation(llvm::ArrayRef<char const*>) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/lib/Driver/Driver.cpp:0:3
#22 0x00005fb87a7fa4f9 clang_main(int, char**, llvm::ToolContext const&) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/tools/driver/driver.cpp:376:44
#23 0x00005fb87a826ac6 main /home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/tools/clang/tools/driver/clang-driver.cpp:17:10
#24 0x00007c6b7702a3b8 (/lib/x86_64-linux-gnu/libc.so.6+0x2a3b8)
#25 0x00007c6b7702a47b __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a47b)
#26 0x00005fb87a710325 _start (/home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/bin/clang+0x121e6325)
```

https://lab.llvm.org/buildbot/#/builders/169/builds/13161:
```
==> /home/b/sanitizer-x86_64-linux-fast/build/sanitizer_logs/report.AllClangUnitTests.3460876 <==
/home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:443:35: runtime error: load of value 4294967295, which is not a valid value for type 'const clang::driver::Action::OffloadKind'
    #0 0x63a3ee1a69d5 in llvm::DenseMapBase<llvm::DenseMap<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>, clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>::initEmpty() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:443:35
    #1 0x63a3ee1b1ee7 in grow /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:587:64
    #2 0x63a3ee1b1ee7 in llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>* llvm::DenseMapBase<llvm::DenseMap<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>, clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>::InsertIntoBucketImpl<clang::driver::Action::OffloadKind>(clang::driver::Action::OffloadKind const&, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>*) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h
    #3 0x63a3ee1b19d8 in InsertIntoBucket<const clang::driver::Action::OffloadKind &, llvm::detail::DenseSetEmpty &> /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:594:17
    #4 0x63a3ee1b19d8 in std::__1::pair<llvm::DenseMapIterator<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>, false>, bool> llvm::DenseMapBase<llvm::DenseMap<clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>, clang::driver::Action::OffloadKind, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<clang::driver::Action::OffloadKind, void>, llvm::detail::DenseSetPair<clang::driver::Action::OffloadKind>>::try_emplace<llvm::detail::DenseSetEmpty&>(clang::driver::Action::OffloadKind const&, llvm::detail::DenseSetEmpty&) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseMap.h:292:17
    #5 0x63a3ee14f259 in insert /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/llvm/include/llvm/ADT/DenseSet.h:221:19
    #6 0x63a3ee14f259 in clang::driver::Driver::CreateOffloadingDeviceToolChains(clang::driver::Compilation&, llvm::SmallVector<std::__1::pair<clang::driver::types::ID, llvm::opt::Arg const*>, 16u>&) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/lib/Driver/Driver.cpp:1073:13
    #7 0x63a3ee165121 in clang::driver::Driver::BuildCompilation(llvm::ArrayRef<char const*>) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/lib/Driver/Driver.cpp:1826:3
    #8 0x63a3ef0fc8d4 in clang::tooling::ToolInvocation::run() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/lib/Tooling/Tooling.cpp:414:15
    #9 0x63a3ef0fb75a in clang::tooling::runToolOnCodeWithArgs(std::__1::unique_ptr<clang::FrontendAction, std::__1::default_delete<clang::FrontendAction>>, llvm::Twine const&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, llvm::Twine const&, llvm::Twine const&, std::__1::shared_ptr<clang::PCHContainerOperations>) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/lib/Tooling/Tooling.cpp:221:21
    #10 0x63a3ef0fabc0 in clang::tooling::runToolOnCodeWithArgs(std::__1::unique_ptr<clang::FrontendAction, std::__1::default_delete<clang::FrontendAction>>, llvm::Twine const&, std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>> const&, llvm::Twine const&, llvm::Twine const&, std::__1::shared_ptr<clang::PCHContainerOperations>, std::__1::vector<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>>>>> const&) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/lib/Tooling/Tooling.cpp:247:10
    #11 0x63a3e2fae1a5 in testing::AssertionResult clang::ast_matchers::matchesConditionallyWithCuda<clang::ast_matchers::internal::BindableMatcher<clang::Stmt>>(llvm::Twine const&, clang::ast_matchers::internal::BindableMatcher<clang::Stmt> const&, bool, llvm::StringRef) /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/unittests/ASTMatchers/ASTMatchersTest.h:237:8
    #12 0x63a3e2e4193b in matchesWithCuda<clang::ast_matchers::internal::BindableMatcher<clang::Stmt> > /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/unittests/ASTMatchers/ASTMatchersTest.h:257:10
    #13 0x63a3e2e4193b in clang::ast_matchers::ASTMatchersTestCUDA_CUDAKernelCallExpr_Test::TestBody() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/clang/unittests/ASTMatchers/ASTMatchersNodeTest.cpp:179:3
    #14 0x63a3ea8e7ddc in testing::Test::Run() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/third-party/unittest/googletest/src/gtest.cc:2688:5
    #15 0x63a3ea8ea7e4 in testing::TestInfo::Run() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/third-party/unittest/googletest/src/gtest.cc:2837:11
    #16 0x63a3ea8ec88f in testing::TestSuite::Run() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/third-party/unittest/googletest/src/gtest.cc:3016:30
    #17 0x63a3ea90cc76 in testing::internal::UnitTestImpl::RunAllTests() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/third-party/unittest/googletest/src/gtest.cc:5921:44
    #18 0x63a3ea90be70 in testing::UnitTest::Run() /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/third-party/unittest/googletest/src/gtest.cc:5485:10
    #19 0x63a3ea8c000e in RUN_ALL_TESTS /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/third-party/unittest/googletest/include/gtest/gtest.h:2317:73
    #20 0x63a3ea8c000e in main /home/b/sanitizer-x86_64-linux-fast/build/llvm-project/third-party/unittest/UnitTestMain/TestMain.cpp:55:10
    #21 0x7bbfdcc2a3b7  (/lib/x86_64-linux-gnu/libc.so.6+0x2a3b7) (BuildId: 91f01b4ad171c80b6303d08d1f08cba8b990413d)
    #22 0x7bbfdcc2a47a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a47a) (BuildId: 91f01b4ad171c80b6303d08d1f08cba8b990413d)
    #23 0x63a3e2286b24 in _start (/home/b/sanitizer-x86_64-linux-fast/build/llvm_build_asan_ubsan/tools/clang/unittests/AllClangUnitTests+0xf9bab24)
```

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


More information about the cfe-commits mailing list