From eec6feba360c4afcc08f7d4258f64f53d2be7fd5 Mon Sep 17 00:00:00 2001 From: Michael D Toguchi Date: Fri, 22 May 2026 09:57:29 -0700 Subject: [PATCH 1/2] [Driver][SYCL] Some new model settings performed with old model default In the driver, the behavior between the old and the new offload model is dependent on having the old model as the default, and the new model enabled with a switch. Some of the logic in which the old model is set was not strict enough, causing some new model settings be performed for SYCL device. --- clang/lib/Driver/ToolChains/Clang.cpp | 6 ++++-- clang/test/Driver/sycl-offload-old-model.cpp | 9 +++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 5252433413ccf..99742bdcf4e84 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5383,7 +5383,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, (JA.isHostOffloading(C.getActiveOffloadKinds()) && Args.hasFlag(options::OPT_offload_new_driver, options::OPT_no_offload_new_driver, - C.getActiveOffloadKinds() != Action::OFK_None)); + (C.getActiveOffloadKinds() != Action::OFK_None && + C.getActiveOffloadKinds() != Action::OFK_SYCL))); bool IsRDCMode = Args.hasFlag(options::OPT_fgpu_rdc, options::OPT_fno_gpu_rdc, IsSYCL); @@ -7789,7 +7790,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.append({"--offload-new-driver", "-foffload-via-llvm"}); } else if (Args.hasFlag(options::OPT_offload_new_driver, options::OPT_no_offload_new_driver, - C.getActiveOffloadKinds() != Action::OFK_None)) { + (C.getActiveOffloadKinds() != Action::OFK_None && + C.getActiveOffloadKinds() != Action::OFK_SYCL))) { CmdArgs.push_back("--offload-new-driver"); } diff --git a/clang/test/Driver/sycl-offload-old-model.cpp b/clang/test/Driver/sycl-offload-old-model.cpp index 357d3fa0ad3c8..bc9d18b8b8aa1 100644 --- a/clang/test/Driver/sycl-offload-old-model.cpp +++ b/clang/test/Driver/sycl-offload-old-model.cpp @@ -1092,3 +1092,12 @@ // CHECK_FSYCL_FP64_CONV_EMU_WIN-NOT: clang{{.*}} "-cc1" "-triple x86_64-unknown-linux-gnu" {{.*}} "-fsycl-fp64-conv-emu" // CHECK_FSYCL_FP64_CONV_EMU_WIN-DAG: clang{{.*}} "-cc1" "-triple" "spir64_gen{{.*}}" "-fsycl-fp64-conv-emu" // CHECK_FSYCL_FP64_CONV_EMU_WIN-DAG: ocloc{{.*}} "-options" "-ze-fp64-gen-conv-emu" + +/// Check that -fsycl alone does NOT use --offload-new-driver +// RUN: %clangxx -### -fsycl --target=x86_64-unknown-linux-gnu %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-OLD-MODEL %s +// RUN: %clangxx -### -fsycl --no-offload-new-driver --target=x86_64-unknown-linux-gnu %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-OLD-MODEL %s +// RUN: %clang_cl -### -fsycl -- %s 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-OLD-MODEL %s +// CHECK-OLD-MODEL-DEFAULT-NOT: "--offload-new-driver" From 050214dd164334140ea83f57facda3cc28722937 Mon Sep 17 00:00:00 2001 From: Michael D Toguchi Date: Fri, 22 May 2026 10:03:12 -0700 Subject: [PATCH 2/2] fix wrong var in test --- clang/test/Driver/sycl-offload-old-model.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/clang/test/Driver/sycl-offload-old-model.cpp b/clang/test/Driver/sycl-offload-old-model.cpp index bc9d18b8b8aa1..edd69cc9aae40 100644 --- a/clang/test/Driver/sycl-offload-old-model.cpp +++ b/clang/test/Driver/sycl-offload-old-model.cpp @@ -1100,4 +1100,4 @@ // RUN: | FileCheck -check-prefix=CHECK-OLD-MODEL %s // RUN: %clang_cl -### -fsycl -- %s 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-OLD-MODEL %s -// CHECK-OLD-MODEL-DEFAULT-NOT: "--offload-new-driver" +// CHECK-OLD-MODEL-NOT: "--offload-new-driver"