From 03ccbc57d3e0be0775e824af7dd4cf53f4d0253c Mon Sep 17 00:00:00 2001 From: Maksim Sabianin Date: Mon, 2 Aug 2021 15:09:18 +0300 Subject: [PATCH] update sycldevice warning --- clang/lib/Driver/Driver.cpp | 23 ++++++++++------------- clang/test/Driver/sycl.c | 4 ++-- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 446156f1ea6c3..0dc6506175954 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -909,18 +909,7 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C, if (SYCLTargetsValues) { if (SYCLTargetsValues->getNumValues()) { for (StringRef Val : SYCLTargetsValues->getValues()) { - SmallString<64> Target = Val; - constexpr StringRef SyclDeviceTripleSuffix = "-sycldevice"; - if (Val.endswith(SyclDeviceTripleSuffix)) { - Diag(clang::diag::warn_drv_sycldevice_in_environment_deprecated) << - Val; - - Target = StringRef(Val.begin(), - Val.size() - SyclDeviceTripleSuffix.size()); - Target += StringRef("-unknown"); - } - - llvm::Triple TT(MakeSYCLDeviceTriple(Target)); + llvm::Triple TT(MakeSYCLDeviceTriple(Val)); if (!isValidSYCLTriple(TT)) { Diag(clang::diag::err_drv_invalid_sycl_target) << Val; continue; @@ -935,9 +924,17 @@ void Driver::CreateOffloadingDeviceToolChains(Compilation &C, continue; } + // Warn about deprated `sycldevice` environment component + if (TT.getEnvironmentName() == "sycldevice") { + Diag(clang::diag::warn_drv_sycl_deprecated_triple_component) + << TT.getEnvironmentName(); + TT.setEnvironment( + llvm::Triple::EnvironmentType::UnknownEnvironment); + } + // Store the current triple so that we can check for duplicates in // the following iterations. - FoundNormalizedTriples[NormalizedName] = Target; + FoundNormalizedTriples[NormalizedName] = Val; UniqueSYCLTriplesVec.push_back(TT); } } else diff --git a/clang/test/Driver/sycl.c b/clang/test/Driver/sycl.c index 917f32a756b4f..d37d119c4793f 100644 --- a/clang/test/Driver/sycl.c +++ b/clang/test/Driver/sycl.c @@ -28,8 +28,8 @@ // DISABLED-NOT: "-sycl-std={{.*}}" // DISABLED-NOT: "-fsycl-std-layout-kernel-params" -// RUN: %clangxx -fsycl -fsycl-targets=spir64-unknown-unknown-sycldevice %s 2>&1 | FileCheck %s --check-prefix=CHECK_WARNING -// CHECK_WARNING: Usage of spir64-unknown-unknown-sycldevice option is deprecated, please don't specify sycldevice environment. +// RUN: %clangxx -fsycl -fsycl-targets=spir64-unknown-unknown-sycldevice -c %s 2>&1 | FileCheck %s --check-prefix=CHECK_WARNING +// CHECK_WARNING: The SYCL offloading target triple 'sycldevice' component is deprecated - will be ignored. // RUN: %clang -### -fsycl-device-only -c %s 2>&1 | FileCheck %s --check-prefix=DEFAULT // RUN: %clang -### -fsycl-device-only %s 2>&1 | FileCheck %s --check-prefix=DEFAULT