diff --git a/clang/lib/Driver/ToolChains/SYCL.cpp b/clang/lib/Driver/ToolChains/SYCL.cpp index 03a88b9e89cf..1beeda857857 100644 --- a/clang/lib/Driver/ToolChains/SYCL.cpp +++ b/clang/lib/Driver/ToolChains/SYCL.cpp @@ -416,12 +416,11 @@ const char *SYCL::Linker::constructLLVMLinkCommand( auto isSYCLDeviceLib = [&](const InputInfo &II) { const ToolChain *HostTC = C.getSingleOffloadToolChain(); StringRef LibPostfix = ".o"; - if (HostTC->getTriple().isWindowsMSVCEnvironment() && - C.getDriver().IsCLMode()) - LibPostfix = ".obj"; - else if (isNoRDCDeviceCodeLink(II)) + if (isNoRDCDeviceCodeLink(II)) LibPostfix = ".bc"; - + else if (HostTC->getTriple().isWindowsMSVCEnvironment() && + C.getDriver().IsCLMode()) + LibPostfix = ".obj"; std::string FileName = this->getToolChain().getInputFilename(II); StringRef InputFilename = llvm::sys::path::filename(FileName); const bool IsNVPTX = this->getToolChain().getTriple().isNVPTX(); diff --git a/clang/test/Driver/sycl-no-rdc-win.cpp b/clang/test/Driver/sycl-no-rdc-win.cpp index d2f668f60ad5..02142c61f060 100644 --- a/clang/test/Driver/sycl-no-rdc-win.cpp +++ b/clang/test/Driver/sycl-no-rdc-win.cpp @@ -32,3 +32,9 @@ // CHECK: 96: clang-offload-wrapper, {95}, object, (device-sycl) // CHECK: 97: offload, "device-sycl (spir64-unknown-unknown)" {96}, object // CHECK: 98: linker, {9, 19, 90, 97}, image, (host-sycl) + +// RUN: %clang -### -fsycl -fno-sycl-rdc -c -fsycl-targets=spir64_gen --sysroot=%S/Inputs/SYCL-windows %t1.cpp 2>&1 | FileCheck -check-prefix=CHECK-EARLY %s +// RUN: %clang_cl -### -fsycl -fno-sycl-rdc -c -fsycl-targets=spir64_gen /clang:--sysroot=%S/Inputs/SYCL-windows %t1.cpp 2>&1 | FileCheck -check-prefix=CHECK-EARLY %s +// CHECK-EARLY: llvm-link{{.*}} +// CHECK-EARLY-NOT: -only-needed +// CHECK-EARLY: llvm-link{{.*}}-only-needed \ No newline at end of file