[clang-tools-extra] 53243f2 - std::optional::value => operator*/operator->
Fangrui Song via cfe-commits
cfe-commits at lists.llvm.org
Fri Dec 16 19:12:11 PST 2022
Author: Fangrui Song
Date: 2022-12-17T03:12:04Z
New Revision: 53243f2a296178b899dcc569475bdcc7e5f30d3b
URL: https://github.com/llvm/llvm-project/commit/53243f2a296178b899dcc569475bdcc7e5f30d3b
DIFF: https://github.com/llvm/llvm-project/commit/53243f2a296178b899dcc569475bdcc7e5f30d3b.diff
LOG: std::optional::value => operator*/operator->
value() has undesired exception checking semantics and calls
__throw_bad_optional_access in libc++. Moreover, the API is unavailable without
_LIBCPP_NO_EXCEPTIONS on older Mach-O platforms (see
_LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS).
This fixes check-clang-tools.
Added:
Modified:
clang-tools-extra/clang-doc/HTMLGenerator.cpp
clang-tools-extra/clangd/ClangdLSPServer.cpp
clang-tools-extra/include-cleaner/unittests/AnalysisTest.cpp
llvm/lib/Transforms/IPO/AttributorAttributes.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-doc/HTMLGenerator.cpp b/clang-tools-extra/clang-doc/HTMLGenerator.cpp
index 03c698cde0459..37598c43e9572 100644
--- a/clang-tools-extra/clang-doc/HTMLGenerator.cpp
+++ b/clang-tools-extra/clang-doc/HTMLGenerator.cpp
@@ -655,10 +655,10 @@ genHTML(const EnumInfo &I, const ClangDocContext &CDCtx) {
if (I.DefLoc) {
if (!CDCtx.RepositoryUrl)
- Out.emplace_back(writeFileDefinition(I.DefLoc.value()));
+ Out.emplace_back(writeFileDefinition(*I.DefLoc));
else
Out.emplace_back(writeFileDefinition(
- I.DefLoc.value(), StringRef{CDCtx.RepositoryUrl.value()}));
+ *I.DefLoc, StringRef{*CDCtx.RepositoryUrl}));
}
std::string Description;
@@ -704,10 +704,10 @@ genHTML(const FunctionInfo &I, const ClangDocContext &CDCtx,
if (I.DefLoc) {
if (!CDCtx.RepositoryUrl)
- Out.emplace_back(writeFileDefinition(I.DefLoc.value()));
+ Out.emplace_back(writeFileDefinition(*I.DefLoc));
else
Out.emplace_back(writeFileDefinition(
- I.DefLoc.value(), StringRef{CDCtx.RepositoryUrl.value()}));
+ *I.DefLoc, StringRef{*CDCtx.RepositoryUrl}));
}
std::string Description;
@@ -771,10 +771,10 @@ genHTML(const RecordInfo &I, Index &InfoIndex, const ClangDocContext &CDCtx,
if (I.DefLoc) {
if (!CDCtx.RepositoryUrl)
- Out.emplace_back(writeFileDefinition(I.DefLoc.value()));
+ Out.emplace_back(writeFileDefinition(*I.DefLoc));
else
Out.emplace_back(writeFileDefinition(
- I.DefLoc.value(), StringRef{CDCtx.RepositoryUrl.value()}));
+ *I.DefLoc, StringRef{*CDCtx.RepositoryUrl}));
}
std::string Description;
diff --git a/clang-tools-extra/clangd/ClangdLSPServer.cpp b/clang-tools-extra/clangd/ClangdLSPServer.cpp
index 306ff3bcec925..6259057e9cf47 100644
--- a/clang-tools-extra/clangd/ClangdLSPServer.cpp
+++ b/clang-tools-extra/clangd/ClangdLSPServer.cpp
@@ -670,8 +670,8 @@ void ClangdLSPServer::onDocumentDidChange(
const DidChangeTextDocumentParams &Params) {
auto WantDiags = WantDiagnostics::Auto;
if (Params.wantDiagnostics)
- WantDiags = Params.wantDiagnostics.value() ? WantDiagnostics::Yes
- : WantDiagnostics::No;
+ WantDiags =
+ *Params.wantDiagnostics ? WantDiagnostics::Yes : WantDiagnostics::No;
PathRef File = Params.textDocument.uri.file();
auto Code = Server->getDraft(File);
diff --git a/clang-tools-extra/include-cleaner/unittests/AnalysisTest.cpp b/clang-tools-extra/include-cleaner/unittests/AnalysisTest.cpp
index 72bec106c12e0..37d71dd4c5c57 100644
--- a/clang-tools-extra/include-cleaner/unittests/AnalysisTest.cpp
+++ b/clang-tools-extra/include-cleaner/unittests/AnalysisTest.cpp
@@ -103,7 +103,7 @@ TEST_F(WalkUsedTest, Basic) {
auto PrivateFile = Header(AST.fileManager().getFile("private.h").get());
auto PublicFile = Header("\"path/public.h\"");
auto MainFile = Header(SM.getFileEntryForID(SM.getMainFileID()));
- auto VectorSTL = Header(tooling::stdlib::Header::named("<vector>").value());
+ auto VectorSTL = Header(*tooling::stdlib::Header::named("<vector>"));
EXPECT_THAT(
offsetToProviders(AST, SM),
UnorderedElementsAre(
diff --git a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
index e8c1b4a5ea4a5..f5c462eaba91b 100644
--- a/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
+++ b/llvm/lib/Transforms/IPO/AttributorAttributes.cpp
@@ -9940,7 +9940,7 @@ struct AAFunctionReachabilityFunction : public AAFunctionReachability {
const Function &Fn) {
std::optional<bool> Cached = isCachedReachable(Fn);
if (Cached)
- return Cached.value();
+ return *Cached;
// The query was not cached, thus it is new. We need to request an update
// explicitly to make sure this the information is properly run to a
More information about the cfe-commits
mailing list