https://github.com/YuriPlyakhin updated https://github.com/llvm/llvm-project/pull/198434
>From ab1a3c8b49391b0dd7cf4849bf0b761475809bfc Mon Sep 17 00:00:00 2001 From: "Plyakhin, Yury" <[email protected]> Date: Tue, 19 May 2026 03:16:35 +0200 Subject: [PATCH 1/6] [clang][test] Move offload tool tests to clang/test/OffloadTools/ Tests for clang-offload-bundler, clang-linker-wrapper, clang-nvlink-wrapper, and clang-sycl-linker were scattered across clang/test/Driver/ and clang/test/Tooling/. Neither location was appropriate: Driver/ is for testing the compiler driver, and Tooling/ is for testing the LibTooling infrastructure. Move them to clang/test/OffloadTools/ with one subdirectory per tool, following the convention used by llvm/test/tools/. The tool-name prefix is dropped from filenames since the containing directory already identifies the tool. The spirv-tools feature/substitution setup is carried over from Tooling's lit.local.cfg into a new lit.local.cfg in clang-linker-wrapper/, since the parent clang/test/lit.cfg.py does not set up that feature. The dead spirv-tools block is removed from Tooling/lit.local.cfg now that no tests there depend on it. --- .../linker-wrapper-canonical-prefixes.c | 0 .../linker-wrapper-hip-amdgcnspirv.c | 0 .../clang-linker-wrapper}/linker-wrapper-hip-no-rdc.c | 0 .../clang-linker-wrapper}/linker-wrapper-image.c | 0 .../clang-linker-wrapper}/linker-wrapper-llvm-help.c | 0 .../clang-linker-wrapper}/linker-wrapper.c | 0 .../test/OffloadTools/clang-linker-wrapper/lit.local.cfg | 6 ++++++ .../clang-linker-wrapper/spirv.cpp} | 0 .../clang-nvlink-wrapper}/nvlink-wrapper.c | 0 .../clang-offload-bundler/asserts-on.c} | 0 .../clang-offload-bundler/basic.c} | 0 .../clang-offload-bundler}/fat-archive-unbundle-ext.c | 0 .../clang-offload-bundler/standardize.c} | 0 .../clang-offload-bundler/zlib.c} | 0 .../clang-offload-bundler/zstd.c} | 0 .../clang-sycl-linker/basic.ll} | 0 .../clang-sycl-linker/split-mode.ll} | 0 clang/test/Tooling/lit.local.cfg | 9 --------- 18 files changed, 6 insertions(+), 9 deletions(-) rename clang/test/{Driver => OffloadTools/clang-linker-wrapper}/linker-wrapper-canonical-prefixes.c (100%) rename clang/test/{Driver => OffloadTools/clang-linker-wrapper}/linker-wrapper-hip-amdgcnspirv.c (100%) rename clang/test/{Driver => OffloadTools/clang-linker-wrapper}/linker-wrapper-hip-no-rdc.c (100%) rename clang/test/{Driver => OffloadTools/clang-linker-wrapper}/linker-wrapper-image.c (100%) rename clang/test/{Driver => OffloadTools/clang-linker-wrapper}/linker-wrapper-llvm-help.c (100%) rename clang/test/{Driver => OffloadTools/clang-linker-wrapper}/linker-wrapper.c (100%) create mode 100644 clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg rename clang/test/{Tooling/clang-linker-wrapper-spirv.cpp => OffloadTools/clang-linker-wrapper/spirv.cpp} (100%) rename clang/test/{Driver => OffloadTools/clang-nvlink-wrapper}/nvlink-wrapper.c (100%) rename clang/test/{Driver/clang-offload-bundler-asserts-on.c => OffloadTools/clang-offload-bundler/asserts-on.c} (100%) rename clang/test/{Driver/clang-offload-bundler.c => OffloadTools/clang-offload-bundler/basic.c} (100%) rename clang/test/{Driver => OffloadTools/clang-offload-bundler}/fat-archive-unbundle-ext.c (100%) rename clang/test/{Driver/clang-offload-bundler-standardize.c => OffloadTools/clang-offload-bundler/standardize.c} (100%) rename clang/test/{Driver/clang-offload-bundler-zlib.c => OffloadTools/clang-offload-bundler/zlib.c} (100%) rename clang/test/{Driver/clang-offload-bundler-zstd.c => OffloadTools/clang-offload-bundler/zstd.c} (100%) rename clang/test/{Tooling/clang-sycl-linker.ll => OffloadTools/clang-sycl-linker/basic.ll} (100%) rename clang/test/{Tooling/clang-sycl-linker-split-mode.ll => OffloadTools/clang-sycl-linker/split-mode.ll} (100%) diff --git a/clang/test/Driver/linker-wrapper-canonical-prefixes.c b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-canonical-prefixes.c similarity index 100% rename from clang/test/Driver/linker-wrapper-canonical-prefixes.c rename to clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-canonical-prefixes.c diff --git a/clang/test/Driver/linker-wrapper-hip-amdgcnspirv.c b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-hip-amdgcnspirv.c similarity index 100% rename from clang/test/Driver/linker-wrapper-hip-amdgcnspirv.c rename to clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-hip-amdgcnspirv.c diff --git a/clang/test/Driver/linker-wrapper-hip-no-rdc.c b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-hip-no-rdc.c similarity index 100% rename from clang/test/Driver/linker-wrapper-hip-no-rdc.c rename to clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-hip-no-rdc.c diff --git a/clang/test/Driver/linker-wrapper-image.c b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c similarity index 100% rename from clang/test/Driver/linker-wrapper-image.c rename to clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-image.c diff --git a/clang/test/Driver/linker-wrapper-llvm-help.c b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-llvm-help.c similarity index 100% rename from clang/test/Driver/linker-wrapper-llvm-help.c rename to clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper-llvm-help.c diff --git a/clang/test/Driver/linker-wrapper.c b/clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper.c similarity index 100% rename from clang/test/Driver/linker-wrapper.c rename to clang/test/OffloadTools/clang-linker-wrapper/linker-wrapper.c diff --git a/clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg b/clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg new file mode 100644 index 0000000000000..002d7f4246b83 --- /dev/null +++ b/clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg @@ -0,0 +1,6 @@ +if config.spirv_tools_tests: + config.available_features.add("spirv-tools") + from lit.llvm import llvm_config + llvm_config.add_tool_substitutions( + ["spirv-dis", "spirv-val", "spirv-as", "spirv-link"] + ) diff --git a/clang/test/Tooling/clang-linker-wrapper-spirv.cpp b/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp similarity index 100% rename from clang/test/Tooling/clang-linker-wrapper-spirv.cpp rename to clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp diff --git a/clang/test/Driver/nvlink-wrapper.c b/clang/test/OffloadTools/clang-nvlink-wrapper/nvlink-wrapper.c similarity index 100% rename from clang/test/Driver/nvlink-wrapper.c rename to clang/test/OffloadTools/clang-nvlink-wrapper/nvlink-wrapper.c diff --git a/clang/test/Driver/clang-offload-bundler-asserts-on.c b/clang/test/OffloadTools/clang-offload-bundler/asserts-on.c similarity index 100% rename from clang/test/Driver/clang-offload-bundler-asserts-on.c rename to clang/test/OffloadTools/clang-offload-bundler/asserts-on.c diff --git a/clang/test/Driver/clang-offload-bundler.c b/clang/test/OffloadTools/clang-offload-bundler/basic.c similarity index 100% rename from clang/test/Driver/clang-offload-bundler.c rename to clang/test/OffloadTools/clang-offload-bundler/basic.c diff --git a/clang/test/Driver/fat-archive-unbundle-ext.c b/clang/test/OffloadTools/clang-offload-bundler/fat-archive-unbundle-ext.c similarity index 100% rename from clang/test/Driver/fat-archive-unbundle-ext.c rename to clang/test/OffloadTools/clang-offload-bundler/fat-archive-unbundle-ext.c diff --git a/clang/test/Driver/clang-offload-bundler-standardize.c b/clang/test/OffloadTools/clang-offload-bundler/standardize.c similarity index 100% rename from clang/test/Driver/clang-offload-bundler-standardize.c rename to clang/test/OffloadTools/clang-offload-bundler/standardize.c diff --git a/clang/test/Driver/clang-offload-bundler-zlib.c b/clang/test/OffloadTools/clang-offload-bundler/zlib.c similarity index 100% rename from clang/test/Driver/clang-offload-bundler-zlib.c rename to clang/test/OffloadTools/clang-offload-bundler/zlib.c diff --git a/clang/test/Driver/clang-offload-bundler-zstd.c b/clang/test/OffloadTools/clang-offload-bundler/zstd.c similarity index 100% rename from clang/test/Driver/clang-offload-bundler-zstd.c rename to clang/test/OffloadTools/clang-offload-bundler/zstd.c diff --git a/clang/test/Tooling/clang-sycl-linker.ll b/clang/test/OffloadTools/clang-sycl-linker/basic.ll similarity index 100% rename from clang/test/Tooling/clang-sycl-linker.ll rename to clang/test/OffloadTools/clang-sycl-linker/basic.ll diff --git a/clang/test/Tooling/clang-sycl-linker-split-mode.ll b/clang/test/OffloadTools/clang-sycl-linker/split-mode.ll similarity index 100% rename from clang/test/Tooling/clang-sycl-linker-split-mode.ll rename to clang/test/OffloadTools/clang-sycl-linker/split-mode.ll diff --git a/clang/test/Tooling/lit.local.cfg b/clang/test/Tooling/lit.local.cfg index 9cda4b31e81da..4cd8ba72fa767 100644 --- a/clang/test/Tooling/lit.local.cfg +++ b/clang/test/Tooling/lit.local.cfg @@ -1,11 +1,2 @@ -import lit.util - if not config.root.clang_staticanalyzer: config.unsupported = True - -if config.spirv_tools_tests: - config.available_features.add("spirv-tools") - from lit.llvm import llvm_config - llvm_config.add_tool_substitutions( - ["spirv-dis", "spirv-val", "spirv-as", "spirv-link"] - ) >From 1b75936c8ebcd2b474717c5de8863cf2e65fecb6 Mon Sep 17 00:00:00 2001 From: "Plyakhin, Yury" <[email protected]> Date: Wed, 20 May 2026 17:40:33 +0200 Subject: [PATCH 2/6] new test --- .../clang-sycl-linker/triple.ll} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename clang/test/{Tooling/clang-sycl-linker-triple.ll => OffloadTools/clang-sycl-linker/triple.ll} (100%) diff --git a/clang/test/Tooling/clang-sycl-linker-triple.ll b/clang/test/OffloadTools/clang-sycl-linker/triple.ll similarity index 100% rename from clang/test/Tooling/clang-sycl-linker-triple.ll rename to clang/test/OffloadTools/clang-sycl-linker/triple.ll >From 1d4acf0dbc9254ecb58278a66d6b2f57f64bc1cf Mon Sep 17 00:00:00 2001 From: "Plyakhin, Yury" <[email protected]> Date: Wed, 20 May 2026 18:14:52 +0200 Subject: [PATCH 3/6] fixed missing feature in cfg --- clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg b/clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg index 002d7f4246b83..c4c42b89f3ba8 100644 --- a/clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg +++ b/clang/test/OffloadTools/clang-linker-wrapper/lit.local.cfg @@ -1,6 +1,10 @@ +from lit.llvm import llvm_config + +if llvm_config.use_lld(required=False): + config.available_features.add("lld") + if config.spirv_tools_tests: config.available_features.add("spirv-tools") - from lit.llvm import llvm_config llvm_config.add_tool_substitutions( ["spirv-dis", "spirv-val", "spirv-as", "spirv-link"] ) >From f02b08177489d27ab6f1deeccd4bab9e82cc84b1 Mon Sep 17 00:00:00 2001 From: "Plyakhin, Yury" <[email protected]> Date: Thu, 21 May 2026 02:32:36 +0200 Subject: [PATCH 4/6] fix --- .../clang-linker-wrapper/spirv.cpp | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp b/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp index ecbfe626129db..4e9294c4ff448 100644 --- a/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp +++ b/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp @@ -1,13 +1,39 @@ // Verify the ELF packaging of OpenMP SPIR-V device images. // REQUIRES: system-linux -// REQUIRES: spirv-tools // REQUIRES: spirv-registered-target -// RUN: %clangxx -fopenmp -fopenmp-targets=spirv64-intel -nogpulib -o %t %s +// REQUIRES: x86-registered-target + +// RUN: %clang -cc1 %s -triple x86_64-unknown-linux-gnu -aux-triple spirv64-intel \ +// RUN: -emit-llvm-bc -emit-llvm-uselists -disable-llvm-passes -fopenmp \ +// RUN: --offload-new-driver --no-offloadlib --offload-targets=spirv64-intel \ +// RUN: -fcxx-exceptions -fexceptions -x c++ -o %t.bc +// RUN: %clang -cc1 %s -triple spirv64-intel -aux-triple x86_64-unknown-linux-gnu \ +// RUN: -emit-obj -fopenmp --offload-new-driver --no-offloadlib \ +// RUN: -fopenmp-is-target-device -fopenmp-host-ir-file-path %t.bc \ +// RUN: -fcxx-exceptions -fexceptions -x c++ -o %t.device.o +// RUN: llvm-offload-binary -o %t.bundle \ +// RUN: --image=file=%t.device.o,triple=spirv64-intel,arch=generic,kind=openmp +// RUN: %clang -cc1 -triple x86_64-unknown-linux-gnu -aux-triple spirv64-intel \ +// RUN: -emit-obj -fopenmp --offload-new-driver --no-offloadlib \ +// RUN: --offload-targets=spirv64-intel -fembed-offload-object=%t.bundle \ +// RUN: -x ir %t.bc -o %t.host.o +// RUN: clang-linker-wrapper --host-triple=x86_64-unknown-linux-gnu \ +// RUN: --device-linker=spirv64-intel=--allow-partial-linkage \ +// RUN: --device-linker=spirv64-intel=--create-library \ +// RUN: --linker-path=/usr/bin/ld %t.host.o -o %t // RUN: llvm-objdump --offloading %t | FileCheck -check-prefix=CHECK %s // CHECK: nested images 1 // CHECK: triple spirv64-intel +// Stub symbols required by the OpenMP offload descriptor registration code +// emitted by clang-linker-wrapper; avoids linking -lomp/-lomptarget/-lc. +extern "C" { +void __tgt_register_lib(void *) {} +void __tgt_unregister_lib(void *) {} +int atexit(void (*)(void)) { return 0; } +} + int main(int argc, char** argv) { return 0; -} +} \ No newline at end of file >From 6af40e3aa802a6be1333b61c632a486509bcc2c9 Mon Sep 17 00:00:00 2001 From: "Plyakhin, Yury" <[email protected]> Date: Fri, 22 May 2026 01:48:08 +0200 Subject: [PATCH 5/6] fixed test --- .../clang-linker-wrapper/spirv.cpp | 26 +++++-------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp b/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp index 4e9294c4ff448..e76aa66a0e0dd 100644 --- a/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp +++ b/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp @@ -1,26 +1,14 @@ // Verify the ELF packaging of OpenMP SPIR-V device images. // REQUIRES: system-linux +// REQUIRES: spirv-tools // REQUIRES: spirv-registered-target // REQUIRES: x86-registered-target -// RUN: %clang -cc1 %s -triple x86_64-unknown-linux-gnu -aux-triple spirv64-intel \ -// RUN: -emit-llvm-bc -emit-llvm-uselists -disable-llvm-passes -fopenmp \ -// RUN: --offload-new-driver --no-offloadlib --offload-targets=spirv64-intel \ -// RUN: -fcxx-exceptions -fexceptions -x c++ -o %t.bc -// RUN: %clang -cc1 %s -triple spirv64-intel -aux-triple x86_64-unknown-linux-gnu \ -// RUN: -emit-obj -fopenmp --offload-new-driver --no-offloadlib \ -// RUN: -fopenmp-is-target-device -fopenmp-host-ir-file-path %t.bc \ -// RUN: -fcxx-exceptions -fexceptions -x c++ -o %t.device.o -// RUN: llvm-offload-binary -o %t.bundle \ -// RUN: --image=file=%t.device.o,triple=spirv64-intel,arch=generic,kind=openmp -// RUN: %clang -cc1 -triple x86_64-unknown-linux-gnu -aux-triple spirv64-intel \ -// RUN: -emit-obj -fopenmp --offload-new-driver --no-offloadlib \ -// RUN: --offload-targets=spirv64-intel -fembed-offload-object=%t.bundle \ -// RUN: -x ir %t.bc -o %t.host.o -// RUN: clang-linker-wrapper --host-triple=x86_64-unknown-linux-gnu \ -// RUN: --device-linker=spirv64-intel=--allow-partial-linkage \ -// RUN: --device-linker=spirv64-intel=--create-library \ -// RUN: --linker-path=/usr/bin/ld %t.host.o -o %t +// RUN: %clang -cc1 %s -triple x86_64-unknown-linux-gnu -emit-llvm-bc -o %t.bc +// RUN: %clang -cc1 %s -triple spirv64-intel -fopenmp-is-target-device -o %t.device.o +// RUN: llvm-offload-binary -o %t.bundle --image=file=%t.device.o,triple=spirv64-intel,arch=generic,kind=openmp +// RUN: %clang -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -fembed-offload-object=%t.bundle -x ir %t.bc -o %t.host.o +// RUN: clang-linker-wrapper --host-triple=x86_64-unknown-linux-gnu --linker-path=/usr/bin/ld %t.host.o -o %t // RUN: llvm-objdump --offloading %t | FileCheck -check-prefix=CHECK %s // CHECK: nested images 1 @@ -36,4 +24,4 @@ int atexit(void (*)(void)) { return 0; } int main(int argc, char** argv) { return 0; -} \ No newline at end of file +} >From ebb356550ac182c25082e5f3a4e658e566396899 Mon Sep 17 00:00:00 2001 From: "Plyakhin, Yury" <[email protected]> Date: Fri, 22 May 2026 20:05:56 +0200 Subject: [PATCH 6/6] fixed spir-v test, renamed --- .../clang-linker-wrapper/{spirv.cpp => openmp-spirv.cpp} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename clang/test/OffloadTools/clang-linker-wrapper/{spirv.cpp => openmp-spirv.cpp} (97%) diff --git a/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp b/clang/test/OffloadTools/clang-linker-wrapper/openmp-spirv.cpp similarity index 97% rename from clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp rename to clang/test/OffloadTools/clang-linker-wrapper/openmp-spirv.cpp index e76aa66a0e0dd..3c6ebe612eb08 100644 --- a/clang/test/OffloadTools/clang-linker-wrapper/spirv.cpp +++ b/clang/test/OffloadTools/clang-linker-wrapper/openmp-spirv.cpp @@ -5,7 +5,7 @@ // REQUIRES: x86-registered-target // RUN: %clang -cc1 %s -triple x86_64-unknown-linux-gnu -emit-llvm-bc -o %t.bc -// RUN: %clang -cc1 %s -triple spirv64-intel -fopenmp-is-target-device -o %t.device.o +// RUN: %clang -cc1 %s -triple spirv64-intel -fopenmp-is-target-device -emit-obj -o %t.device.o // RUN: llvm-offload-binary -o %t.bundle --image=file=%t.device.o,triple=spirv64-intel,arch=generic,kind=openmp // RUN: %clang -cc1 -triple x86_64-unknown-linux-gnu -emit-obj -fembed-offload-object=%t.bundle -x ir %t.bc -o %t.host.o // RUN: clang-linker-wrapper --host-triple=x86_64-unknown-linux-gnu --linker-path=/usr/bin/ld %t.host.o -o %t _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
