Skip to content

Commit 1c364d2

Browse files
Fix a disconnect with MSVC library and predefined macro handling.
1 parent 44d2a87 commit 1c364d2

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4753,7 +4753,8 @@ void Clang::ConstructHostCompilerJob(Compilation &C, const JobAction &JA,
47534753
}
47544754

47554755
static void ProcessVSRuntimeLibrary(const ArgList &Args,
4756-
ArgStringList &CmdArgs) {
4756+
ArgStringList &CmdArgs,
4757+
const ToolChain &TC) {
47574758
unsigned RTOptionID = options::OPT__SLASH_MT;
47584759

47594760
if (Args.hasArg(options::OPT__SLASH_LDd))
@@ -4773,31 +4774,38 @@ static void ProcessVSRuntimeLibrary(const ArgList &Args,
47734774
.Default(options::OPT__SLASH_MT);
47744775
}
47754776

4777+
bool isSPIR = TC.getTriple().isSPIR();
47764778
StringRef FlagForCRT;
47774779
switch (RTOptionID) {
47784780
case options::OPT__SLASH_MD:
47794781
if (Args.hasArg(options::OPT__SLASH_LDd))
47804782
CmdArgs.push_back("-D_DEBUG");
4781-
CmdArgs.push_back("-D_MT");
4782-
CmdArgs.push_back("-D_DLL");
4783+
if (!isSPIR) {
4784+
CmdArgs.push_back("-D_MT");
4785+
CmdArgs.push_back("-D_DLL");
4786+
}
47834787
FlagForCRT = "--dependent-lib=msvcrt";
47844788
break;
47854789
case options::OPT__SLASH_MDd:
47864790
CmdArgs.push_back("-D_DEBUG");
4787-
CmdArgs.push_back("-D_MT");
4788-
CmdArgs.push_back("-D_DLL");
4791+
if (!isSPIR) {
4792+
CmdArgs.push_back("-D_MT");
4793+
CmdArgs.push_back("-D_DLL");
4794+
}
47894795
FlagForCRT = "--dependent-lib=msvcrtd";
47904796
break;
47914797
case options::OPT__SLASH_MT:
47924798
if (Args.hasArg(options::OPT__SLASH_LDd))
47934799
CmdArgs.push_back("-D_DEBUG");
4794-
CmdArgs.push_back("-D_MT");
4800+
if (!isSPIR)
4801+
CmdArgs.push_back("-D_MT");
47954802
CmdArgs.push_back("-flto-visibility-public-std");
47964803
FlagForCRT = "--dependent-lib=libcmt";
47974804
break;
47984805
case options::OPT__SLASH_MTd:
47994806
CmdArgs.push_back("-D_DEBUG");
4800-
CmdArgs.push_back("-D_MT");
4807+
if (!isSPIR)
4808+
CmdArgs.push_back("-D_MT");
48014809
CmdArgs.push_back("-flto-visibility-public-std");
48024810
FlagForCRT = "--dependent-lib=libcmtd";
48034811
break;
@@ -7098,7 +7106,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
70987106

70997107
if (Triple.isWindowsMSVCEnvironment() && !D.IsCLMode() &&
71007108
Args.hasArg(options::OPT_fms_runtime_lib_EQ))
7101-
ProcessVSRuntimeLibrary(Args, CmdArgs);
7109+
ProcessVSRuntimeLibrary(Args, CmdArgs, TC);
71027110

71037111
// Handle -fgcc-version, if present.
71047112
VersionTuple GNUCVer;
@@ -8254,7 +8262,7 @@ void Clang::AddClangCLArgs(const ArgList &Args, types::ID InputType,
82548262
CmdArgs.push_back("--dependent-lib=sycl-devicelib-host");
82558263
}
82568264
}
8257-
ProcessVSRuntimeLibrary(Args, CmdArgs);
8265+
ProcessVSRuntimeLibrary(Args, CmdArgs, getToolChain());
82588266

82598267
if (Arg *ShowIncludes =
82608268
Args.getLastArg(options::OPT__SLASH_showIncludes,

0 commit comments

Comments
 (0)