mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Merge pull request #78556 from hjyamauchi/compilerperf
Sink unnecessary steps for Windows in CompilerInvocation::computeCXXS…
This commit is contained in:
@@ -364,26 +364,6 @@ setBridgingHeaderFromFrontendOptions(ClangImporterOptions &ImporterOpts,
|
||||
}
|
||||
|
||||
void CompilerInvocation::computeCXXStdlibOptions() {
|
||||
auto [clangDriver, clangDiagEngine] =
|
||||
ClangImporter::createClangDriver(LangOpts, ClangImporterOpts);
|
||||
auto clangDriverArgs = ClangImporter::createClangArgs(
|
||||
ClangImporterOpts, SearchPathOpts, clangDriver);
|
||||
auto &clangToolchain =
|
||||
clangDriver.getToolChain(clangDriverArgs, LangOpts.Target);
|
||||
auto cxxStdlibKind = clangToolchain.GetCXXStdlibType(clangDriverArgs);
|
||||
auto cxxDefaultStdlibKind = clangToolchain.GetDefaultCXXStdlibType();
|
||||
|
||||
auto toCXXStdlibKind =
|
||||
[](clang::driver::ToolChain::CXXStdlibType clangCXXStdlibType)
|
||||
-> CXXStdlibKind {
|
||||
switch (clangCXXStdlibType) {
|
||||
case clang::driver::ToolChain::CST_Libcxx:
|
||||
return CXXStdlibKind::Libcxx;
|
||||
case clang::driver::ToolChain::CST_Libstdcxx:
|
||||
return CXXStdlibKind::Libstdcxx;
|
||||
}
|
||||
};
|
||||
|
||||
// The MSVC driver in Clang is not aware of the C++ stdlib, and currently
|
||||
// always assumes libstdc++, which is incorrect: the Microsoft stdlib is
|
||||
// normally used.
|
||||
@@ -393,8 +373,27 @@ void CompilerInvocation::computeCXXStdlibOptions() {
|
||||
// (see https://reviews.llvm.org/D101479).
|
||||
LangOpts.CXXStdlib = CXXStdlibKind::Msvcprt;
|
||||
LangOpts.PlatformDefaultCXXStdlib = CXXStdlibKind::Msvcprt;
|
||||
}
|
||||
if (LangOpts.Target.isOSLinux() || LangOpts.Target.isOSDarwin()) {
|
||||
} else if (LangOpts.Target.isOSLinux() || LangOpts.Target.isOSDarwin()) {
|
||||
auto [clangDriver, clangDiagEngine] =
|
||||
ClangImporter::createClangDriver(LangOpts, ClangImporterOpts);
|
||||
auto clangDriverArgs = ClangImporter::createClangArgs(
|
||||
ClangImporterOpts, SearchPathOpts, clangDriver);
|
||||
auto &clangToolchain =
|
||||
clangDriver.getToolChain(clangDriverArgs, LangOpts.Target);
|
||||
auto cxxStdlibKind = clangToolchain.GetCXXStdlibType(clangDriverArgs);
|
||||
auto cxxDefaultStdlibKind = clangToolchain.GetDefaultCXXStdlibType();
|
||||
|
||||
auto toCXXStdlibKind =
|
||||
[](clang::driver::ToolChain::CXXStdlibType clangCXXStdlibType)
|
||||
-> CXXStdlibKind {
|
||||
switch (clangCXXStdlibType) {
|
||||
case clang::driver::ToolChain::CST_Libcxx:
|
||||
return CXXStdlibKind::Libcxx;
|
||||
case clang::driver::ToolChain::CST_Libstdcxx:
|
||||
return CXXStdlibKind::Libstdcxx;
|
||||
}
|
||||
};
|
||||
|
||||
LangOpts.CXXStdlib = toCXXStdlibKind(cxxStdlibKind);
|
||||
LangOpts.PlatformDefaultCXXStdlib = toCXXStdlibKind(cxxDefaultStdlibKind);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user