diff --git a/clang/test/Driver/clang-sycl-linker-test.cpp b/clang/test/Driver/clang-sycl-linker-test.cpp index 2f860ae74e97d..c399689653784 100644 --- a/clang/test/Driver/clang-sycl-linker-test.cpp +++ b/clang/test/Driver/clang-sycl-linker-test.cpp @@ -1,5 +1,7 @@ // Tests the clang-sycl-linker tool. // +// REQUIRES: spirv-registered-target +// // Test the dry run of a simple case to link two input files. // RUN: %clangxx -emit-llvm -c -target spirv64 %s -o %t_1.bc // RUN: %clangxx -emit-llvm -c -target spirv64 %s -o %t_2.bc diff --git a/clang/test/Driver/link-device-code.test b/clang/test/Driver/link-device-code.test index a5f52fdb7d9ae..231f02b6560e0 100644 --- a/clang/test/Driver/link-device-code.test +++ b/clang/test/Driver/link-device-code.test @@ -1,3 +1,5 @@ +# REQUIRES: spirv-registered-target + # RUN: llvm-as %S/Inputs/SYCL/foo.ll -o %t.foo.bc # RUN: llvm-as %S/Inputs/SYCL/bar.ll -o %t.bar.bc # RUN: llvm-as %S/Inputs/SYCL/baz.ll -o %t.baz.bc diff --git a/clang/test/Driver/sycl-link-spirv-target.cpp b/clang/test/Driver/sycl-link-spirv-target.cpp index 586adae619165..24206e38ad0a7 100644 --- a/clang/test/Driver/sycl-link-spirv-target.cpp +++ b/clang/test/Driver/sycl-link-spirv-target.cpp @@ -1,6 +1,8 @@ // Tests the driver when linking LLVM IR bitcode files and targeting SPIR-V // architecture. // +// REQUIRES: spirv-registered-target +// // Test that -Xlinker options are being passed to clang-sycl-linker. // RUN: touch %t.bc // RUN: %clangxx -### --target=spirv64 --sycl-link -Xlinker -triple=spirv64 -Xlinker --library-path=/tmp \ diff --git a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp index ab718c5a87c40..c640deddc9e74 100644 --- a/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp +++ b/clang/tools/clang-sycl-linker/ClangSYCLLinker.cpp @@ -288,6 +288,9 @@ static Expected runSPIRVCodeGen(StringRef File, const ArgList &Args, if (!M) return createStringError(Err.getMessage()); + if (Error Err = M->materializeAll()) + return std::move(Err); + Triple TargetTriple(Args.getLastArgValue(OPT_triple_EQ)); M->setTargetTriple(TargetTriple);