Skip to content

Commit 6c5ef66

Browse files
committed
[SYCL][Driver] Use dynamic C++ runtime by default in clang on Windows
1 parent 860c7ef commit 6c5ef66

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6272,6 +6272,15 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
62726272
if (getToolChain().getTriple().getSubArch() ==
62736273
llvm::Triple::SPIRSubArch_fpga)
62746274
CmdArgs.push_back("-D__ENABLE_USM_ADDR_SPACE__");
6275+
6276+
#if defined(_WIN32)
6277+
// SYCL library is guaranteed to work correctly only with dynamic runtime.
6278+
if (!D.IsCLMode()) {
6279+
CmdArgs.push_back("-D_MT");
6280+
CmdArgs.push_back("-D_DLL");
6281+
CmdArgs.push_back("--dependent-lib=msvcrt");
6282+
}
6283+
#endif // _WIN32
62756284
}
62766285

62776286
if (IsHIP)
@@ -6835,8 +6844,7 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType,
68356844
// Add SYCL dependent library
68366845
if (Args.hasArg(options::OPT_fsycl) &&
68376846
!Args.hasArg(options::OPT_nolibsycl)) {
6838-
if (RTOptionID == options::OPT__SLASH_MDd ||
6839-
RTOptionID == options::OPT__SLASH_MTd)
6847+
if (RTOptionID == options::OPT__SLASH_MDd)
68406848
CmdArgs.push_back("--dependent-lib=sycld");
68416849
else
68426850
CmdArgs.push_back("--dependent-lib=sycl");

clang/lib/Driver/ToolChains/MSVC.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -370,8 +370,12 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA,
370370
Args.MakeArgString(std::string("-out:") + Output.getFilename()));
371371

372372
if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles) &&
373-
!C.getDriver().IsCLMode())
374-
CmdArgs.push_back("-defaultlib:libcmt");
373+
!C.getDriver().IsCLMode()) {
374+
if (Args.hasArg(options::OPT_fsycl) && !Args.hasArg(options::OPT_nolibsycl))
375+
CmdArgs.push_back("-defaultlib:msvcrt");
376+
else
377+
CmdArgs.push_back("-defaultlib:libcmt");
378+
}
375379

376380
if (!C.getDriver().IsCLMode() && !Args.hasArg(options::OPT_nostdlib) &&
377381
Args.hasArg(options::OPT_fsycl) && !Args.hasArg(options::OPT_nolibsycl)) {

0 commit comments

Comments
 (0)