Skip to content

Commit aa62091

Browse files
committed
pass sycl device lib spv dir to sycl-post-link in clang linker wrapper
Signed-off-by: jinge90 <[email protected]>
1 parent 9a25780 commit aa62091

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10956,7 +10956,7 @@ static void getNonTripleBasedSYCLPostLinkOpts(const ToolChain &TC,
1095610956
SmallString<128> FullLibName(SpvLoc);
1095710957
llvm::sys::path::append(FullLibName, FallbackAssertName);
1095810958
if (llvm::sys::fs::exists(FullLibName)) {
10959-
SmallString<128> SYCLDeviceLibDir("--device-lib-dir=");
10959+
SmallString<128> SYCLDeviceLibDir("--device-lib-spv-dir=");
1096010960
SYCLDeviceLibDir += SpvLoc.str();
1096110961
addArgs(PostLinkArgs, TCArgs, {SYCLDeviceLibDir.str()});
1096210962
break;

clang/tools/clang-linker-wrapper/ClangLinkerWrapper.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,20 @@ runSYCLPostLinkTool(ArrayRef<StringRef> InputFiles, const ArgList &Args) {
727727
SmallVector<StringRef, 8> CmdArgs;
728728
CmdArgs.push_back(*SYCLPostLinkPath);
729729
const llvm::Triple Triple(Args.getLastArgValue(OPT_triple_EQ));
730+
Arg *SYCLDeviceLibLoc = Args.getLastArg(OPT_sycl_device_library_location_EQ);
731+
if (SYCLDeviceLibLoc) {
732+
std::string SYCLDeviceLibSPVLoc = SYCLDeviceLibLoc->getValue();
733+
llvm::Triple HostTriple(Args.getLastArgValue(OPT_host_triple_EQ));
734+
if (HostTriple.isOSWindows())
735+
SYCLDeviceLibSPVLoc += "../bin";
736+
737+
std::string AssertSPVLoc =
738+
SYCLDeviceLibSPVLoc + "/libsycl-fallback-cassert.spv";
739+
if (llvm::sys::fs::exists(AssertSPVLoc)) {
740+
SYCLDeviceLibSPVLoc = "--device-lib-spv-dir=" + SYCLDeviceLibSPVLoc;
741+
CmdArgs.push_back(Args.MakeArgString(StringRef(SYCLDeviceLibSPVLoc)));
742+
}
743+
}
730744
getTripleBasedSYCLPostLinkOpts(Args, CmdArgs, Triple);
731745
StringRef SYCLPostLinkOptions;
732746
if (Arg *A = Args.getLastArg(OPT_sycl_post_link_options_EQ))

llvm/tools/sycl-post-link/sycl-post-link.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ cl::opt<std::string> OutputDir{
105105
cl::value_desc("dirname"), cl::cat(PostLinkCat)};
106106

107107
cl::opt<std::string> DeviceLibDir{
108-
"device-lib-dir",
109-
cl::desc("Directory where sycl fallback device libraries reside"),
108+
"device-lib-spv-dir",
109+
cl::desc("Directory where sycl fallback spirv device libraries reside"),
110110
cl::value_desc("dirname"), cl::cat(PostLinkCat)};
111111

112112
struct TargetFilenamePair {

0 commit comments

Comments
 (0)