tbaeder created this revision. tbaeder added reviewers: Hahnfeld, phosek, yaxunl, rsmith. tbaeder requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits.
Since ToolChain::GetCXXStdlibType() is a simple getter that might emit the "invalid library name in argument" warning, it can conceivably be called several times while initializing the build pipeline. Before this patch, a simlpe 'clang++ -stdlib=foo ./test.cpp' would print the warning twice. Change this and always only print the warning once. Keep the rest of the semantics of the function. E.g, before: $ clang++ -stdlib=foo ./test.cpp clang-10: error: invalid library name in argument '-stdlib=foo' clang-10: error: invalid library name in argument '-stdlib=foo' After: $ bin/clang++ -stdlib=foo ./test.cpp clang-12: error: invalid library name in argument '-stdlib=foo' Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D95915 Files: clang/lib/Driver/ToolChain.cpp Index: clang/lib/Driver/ToolChain.cpp =================================================================== --- clang/lib/Driver/ToolChain.cpp +++ clang/lib/Driver/ToolChain.cpp @@ -929,8 +929,14 @@ else if (LibName == "platform") return GetDefaultCXXStdlibType(); - if (A) - getDriver().Diag(diag::err_drv_invalid_stdlib_name) << A->getAsString(Args); + if (A) { + static bool InvalidStdlibWarned = false; + if (!InvalidStdlibWarned) { + getDriver().Diag(diag::err_drv_invalid_stdlib_name) + << A->getAsString(Args); + InvalidStdlibWarned = true; + } + } return GetDefaultCXXStdlibType(); }
Index: clang/lib/Driver/ToolChain.cpp =================================================================== --- clang/lib/Driver/ToolChain.cpp +++ clang/lib/Driver/ToolChain.cpp @@ -929,8 +929,14 @@ else if (LibName == "platform") return GetDefaultCXXStdlibType(); - if (A) - getDriver().Diag(diag::err_drv_invalid_stdlib_name) << A->getAsString(Args); + if (A) { + static bool InvalidStdlibWarned = false; + if (!InvalidStdlibWarned) { + getDriver().Diag(diag::err_drv_invalid_stdlib_name) + << A->getAsString(Args); + InvalidStdlibWarned = true; + } + } return GetDefaultCXXStdlibType(); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits