@@ -364,26 +364,6 @@ setBridgingHeaderFromFrontendOptions(ClangImporterOptions &ImporterOpts,
364
364
}
365
365
366
366
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
-
387
367
// The MSVC driver in Clang is not aware of the C++ stdlib, and currently
388
368
// always assumes libstdc++, which is incorrect: the Microsoft stdlib is
389
369
// normally used.
@@ -393,8 +373,27 @@ void CompilerInvocation::computeCXXStdlibOptions() {
393
373
// (see https://reviews.llvm.org/D101479).
394
374
LangOpts.CXXStdlib = CXXStdlibKind::Msvcprt;
395
375
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
+
398
397
LangOpts.CXXStdlib = toCXXStdlibKind (cxxStdlibKind);
399
398
LangOpts.PlatformDefaultCXXStdlib = toCXXStdlibKind (cxxDefaultStdlibKind);
400
399
}
0 commit comments