Skip to content

Commit 7439fb4

Browse files
authored
[Driver][SYCL][NewOffloadModel] Hook up options for the offload-wrapper (intel#14001)
Additional options can be passed along to the clang-offload-wrapper via -Xsycl-target-backend and -Xsycl-target-link. Hook up the ability to pass the values from these options along to the clang-linker-wrapper.
1 parent 0b8a3e7 commit 7439fb4

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11120,6 +11120,32 @@ void LinkerWrapper::ConstructJob(Compilation &C, const JobAction &JA,
1112011120
for (const auto &A : TranslatorArgs)
1112111121
appendOption(OptString, A);
1112211122
CmdArgs.push_back(Args.MakeArgString("--llvm-spirv-options=" + OptString));
11123+
11124+
// Formulate and add any offload-wrapper and AOT specific options. These
11125+
// are additional options passed in via -Xsycl-target-linker and
11126+
// -Xsycl-target-backend.
11127+
const toolchains::SYCLToolChain &SYCLTC =
11128+
static_cast<const toolchains::SYCLToolChain &>(getToolChain());
11129+
// Only store compile/link opts in the image descriptor for the SPIR-V
11130+
// target.
11131+
const ArgList &Args =
11132+
C.getArgsForToolChain(nullptr, StringRef(), Action::OFK_SYCL);
11133+
ArgStringList BuildArgs;
11134+
OptString.clear();
11135+
SYCLTC.TranslateBackendTargetArgs(TargetTriple, Args, BuildArgs);
11136+
for (const auto &A : BuildArgs)
11137+
appendOption(OptString, A);
11138+
if (!OptString.empty())
11139+
CmdArgs.push_back(
11140+
Args.MakeArgString("--sycl-backend-compile-options=" + OptString));
11141+
BuildArgs.clear();
11142+
OptString.clear();
11143+
SYCLTC.TranslateLinkerTargetArgs(TargetTriple, Args, BuildArgs);
11144+
for (const auto &A : BuildArgs)
11145+
appendOption(OptString, A);
11146+
if (!OptString.empty())
11147+
CmdArgs.push_back(
11148+
Args.MakeArgString("--sycl-target-link-options=" + OptString));
1112311149
}
1112411150

1112511151
// Construct the link job so we can wrap around it.

clang/test/Driver/sycl-offload-new-driver.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,16 @@
106106
// CHK_ARCH: clang{{.*}} "-triple" "[[TRIPLE]]"
107107
// CHK_ARCH-SAME: "-fsycl-is-device" {{.*}} "--offload-new-driver"{{.*}} "-o" "[[CC1DEVOUT:.+\.bc]]"
108108
// CHK_ARCH-NEXT: clang-offload-packager{{.*}} "--image=file=[[CC1DEVOUT]],triple=[[TRIPLE]],arch=[[ARCH]],kind=sycl"
109+
110+
/// Test option passing behavior for clang-offload-wrapper options.
111+
// RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver \
112+
// RUN: -Xsycl-target-backend -backend-opt -### %s 2>&1 \
113+
// RUN: | FileCheck -check-prefix WRAPPER_OPTIONS_BACKEND %s
114+
// WRAPPER_OPTIONS_BACKEND: clang-linker-wrapper{{.*}} "--triple=spir64"
115+
// WRAPPER_OPTIONS_BACKEND-SAME: "--sycl-backend-compile-options={{.*}}-backend-opt{{.*}}"
116+
117+
// RUN: %clangxx --target=x86_64-unknown-linux-gnu -fsycl --offload-new-driver \
118+
// RUN: -Xsycl-target-linker -link-opt -### %s 2>&1 \
119+
// RUN: | FileCheck -check-prefix WRAPPER_OPTIONS_LINK %s
120+
// WRAPPER_OPTIONS_LINK: clang-linker-wrapper{{.*}} "--triple=spir64"
121+
// WRAPPER_OPTIONS_LINK-SAME: "--sycl-target-link-options={{.*}}-link-opt{{.*}}"

0 commit comments

Comments
 (0)