Skip to content

Commit 4a94fc9

Browse files
authored
Merge pull request #78556 from hjyamauchi/compilerperf
Sink unnecessary steps for Windows in CompilerInvocation::computeCXXS…
2 parents 6692173 + e767b74 commit 4a94fc9

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

lib/Frontend/CompilerInvocation.cpp

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -364,26 +364,6 @@ setBridgingHeaderFromFrontendOptions(ClangImporterOptions &ImporterOpts,
364364
}
365365

366366
void CompilerInvocation::computeCXXStdlibOptions() {
367-
auto [clangDriver, clangDiagEngine] =
368-
ClangImporter::createClangDriver(LangOpts, ClangImporterOpts);
369-
auto clangDriverArgs = ClangImporter::createClangArgs(
370-
ClangImporterOpts, SearchPathOpts, clangDriver);
371-
auto &clangToolchain =
372-
clangDriver.getToolChain(clangDriverArgs, LangOpts.Target);
373-
auto cxxStdlibKind = clangToolchain.GetCXXStdlibType(clangDriverArgs);
374-
auto cxxDefaultStdlibKind = clangToolchain.GetDefaultCXXStdlibType();
375-
376-
auto toCXXStdlibKind =
377-
[](clang::driver::ToolChain::CXXStdlibType clangCXXStdlibType)
378-
-> CXXStdlibKind {
379-
switch (clangCXXStdlibType) {
380-
case clang::driver::ToolChain::CST_Libcxx:
381-
return CXXStdlibKind::Libcxx;
382-
case clang::driver::ToolChain::CST_Libstdcxx:
383-
return CXXStdlibKind::Libstdcxx;
384-
}
385-
};
386-
387367
// The MSVC driver in Clang is not aware of the C++ stdlib, and currently
388368
// always assumes libstdc++, which is incorrect: the Microsoft stdlib is
389369
// normally used.
@@ -393,8 +373,27 @@ void CompilerInvocation::computeCXXStdlibOptions() {
393373
// (see https://reviews.llvm.org/D101479).
394374
LangOpts.CXXStdlib = CXXStdlibKind::Msvcprt;
395375
LangOpts.PlatformDefaultCXXStdlib = CXXStdlibKind::Msvcprt;
396-
}
397-
if (LangOpts.Target.isOSLinux() || LangOpts.Target.isOSDarwin()) {
376+
} else if (LangOpts.Target.isOSLinux() || LangOpts.Target.isOSDarwin()) {
377+
auto [clangDriver, clangDiagEngine] =
378+
ClangImporter::createClangDriver(LangOpts, ClangImporterOpts);
379+
auto clangDriverArgs = ClangImporter::createClangArgs(
380+
ClangImporterOpts, SearchPathOpts, clangDriver);
381+
auto &clangToolchain =
382+
clangDriver.getToolChain(clangDriverArgs, LangOpts.Target);
383+
auto cxxStdlibKind = clangToolchain.GetCXXStdlibType(clangDriverArgs);
384+
auto cxxDefaultStdlibKind = clangToolchain.GetDefaultCXXStdlibType();
385+
386+
auto toCXXStdlibKind =
387+
[](clang::driver::ToolChain::CXXStdlibType clangCXXStdlibType)
388+
-> CXXStdlibKind {
389+
switch (clangCXXStdlibType) {
390+
case clang::driver::ToolChain::CST_Libcxx:
391+
return CXXStdlibKind::Libcxx;
392+
case clang::driver::ToolChain::CST_Libstdcxx:
393+
return CXXStdlibKind::Libstdcxx;
394+
}
395+
};
396+
398397
LangOpts.CXXStdlib = toCXXStdlibKind(cxxStdlibKind);
399398
LangOpts.PlatformDefaultCXXStdlib = toCXXStdlibKind(cxxDefaultStdlibKind);
400399
}

0 commit comments

Comments
 (0)