Skip to content

Commit 7cc89fa

Browse files
authored
[SYCL][Driver] Fix suggested target triple in the warning message (#4475)
The warning message emitted for deprecated target triple includes suggested target triple to be used instead of deprecated one. Currently it prints only architecture component of the target triple, which works only for SPIR target architecture. Non-SPIR targets may support multiple vendor/OS components, so users are expected to specify the full triple. This patch fixes the warning message and suggests all components set before deprecated `sycldevice` environment component if they are not "unknown" (which is default and can be omitted).
1 parent 26184e2 commit 7cc89fa

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

clang/lib/Driver/Driver.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -925,8 +925,17 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C,
925925

926926
// Warn about deprecated `sycldevice` environment component.
927927
if (TT.getEnvironmentName() == "sycldevice") {
928+
// Build a string with suggested target triple.
929+
std::string SuggestedTriple = TT.getArchName().str();
930+
if (TT.getOS() != llvm::Triple::UnknownOS) {
931+
SuggestedTriple += '-';
932+
if (TT.getVendor() != llvm::Triple::UnknownVendor)
933+
SuggestedTriple += TT.getVendorName();
934+
SuggestedTriple += Twine("-" + TT.getOSName()).str();
935+
} else if (TT.getVendor() != llvm::Triple::UnknownVendor)
936+
SuggestedTriple += Twine("-" + TT.getVendorName()).str();
928937
Diag(clang::diag::warn_drv_deprecated_arg)
929-
<< TT.str() << TT.getArchName();
938+
<< TT.str() << SuggestedTriple;
930939
// Drop environment component.
931940
std::string EffectiveTriple =
932941
Twine(TT.getArchName() + "-" + TT.getVendorName() + "-" +

clang/test/Driver/sycl.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,9 @@
2828
// DISABLED-NOT: "-sycl-std={{.*}}"
2929
// DISABLED-NOT: "-fsycl-std-layout-kernel-params"
3030

31-
// RUN: %clangxx -fsycl -fsycl-targets=spir64-unknown-unknown-sycldevice -c %s 2>&1 | FileCheck %s --check-prefix=CHECK_WARNING
31+
// RUN: %clangxx -fsycl -fsycl-targets=spir64-unknown-unknown-sycldevice,nvptx64-nvidia-cuda-sycldevice -fno-sycl-libspirv -nocudalib -c %s 2>&1 | FileCheck %s --check-prefix=CHECK_WARNING
3232
// CHECK_WARNING: argument 'spir64-unknown-unknown-sycldevice' is deprecated, use 'spir64' instead
33+
// CHECK_WARNING: argument 'nvptx64-nvidia-cuda-sycldevice' is deprecated, use 'nvptx64-nvidia-cuda' instead
3334

3435
// RUN: %clang -### -fsycl-device-only -c %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
3536
// RUN: %clang -### -fsycl-device-only %s 2>&1 | FileCheck %s --check-prefix=DEFAULT

0 commit comments

Comments
 (0)