diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1ac8049a972f4..1bb465411c4dc 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5482,7 +5482,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Triple.getSubArch() == llvm::Triple::SPIRSubArch_gen) || Triple.isNVPTX() || Triple.isAMDGCN()) { StringRef Device = JA.getOffloadingArch(); - if (!Device.empty()) { + if (!Device.empty() && !SYCL::gen::getGenDeviceMacro(Device).empty()) { Macro = "-D"; Macro += SYCL::gen::getGenDeviceMacro(Device); } diff --git a/clang/test/Driver/sycl-unsupported-arch.cpp b/clang/test/Driver/sycl-unsupported-arch.cpp new file mode 100644 index 0000000000000..e5fd47f339fd5 --- /dev/null +++ b/clang/test/Driver/sycl-unsupported-arch.cpp @@ -0,0 +1,8 @@ +/// Verify that compiler passes are correctly determined +// RUN: %clangxx -fsycl -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx600 -nogpulib -c -ccc-print-phases %s 2>&1 | FileCheck %s --check-prefix=CHECK-PHASES +// CHECK-PHASES: offload, "device-sycl (amdgcn-amd-amdhsa:gfx600)" + +/// Verify that preprocessor works (#8112) +// RUN: %clangxx -fsycl -fsycl-targets=amdgcn-amd-amdhsa -Xsycl-target-backend=amdgcn-amd-amdhsa --offload-arch=gfx600 -nogpulib -E %s 2>&1 | FileCheck %s --check-prefix=CHECK-PREPROCESSOR +// CHECK-PREPROCESSOR: // __CLANG_OFFLOAD_BUNDLE____START__ sycl-amdgcn-amd-amdhsa-gfx600 +