aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Braenne <mboehme@google.com>2023-05-26 09:52:55 +0000
committerMartin Braenne <mboehme@google.com>2023-05-30 07:05:35 +0000
commit5ddb623952cacba0a3933dacd4c70439ca95c70d (patch)
treef006bd0b25626a86c92b5f05c3d94196fb840404
parentdf37e2211ea34f128a53912835bcbc96147a1408 (diff)
downloadllvm-5ddb623952cacba0a3933dacd4c70439ca95c70d.zip
llvm-5ddb623952cacba0a3933dacd4c70439ca95c70d.tar.gz
llvm-5ddb623952cacba0a3933dacd4c70439ca95c70d.tar.bz2
[clang][dataflow] Remove unnecessary `ASTContext` parameter from `ControlFlowContext::build` overload.
When introducing this new overload in https://reviews.llvm.org/D151183, I didn't consider that the `ASTContext` parameter was unnecessary because it could also be obtained from the `FunctionDecl`. Reviewed By: gribozavr2, xazax.hun Differential Revision: https://reviews.llvm.org/D151549
-rw-r--r--clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h3
-rw-r--r--clang/lib/Analysis/FlowSensitive/ControlFlowContext.cpp4
-rw-r--r--clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp2
-rw-r--r--clang/unittests/Analysis/FlowSensitive/TestingSupport.h2
-rw-r--r--clang/unittests/Analysis/FlowSensitive/TypeErasedDataflowAnalysisTest.cpp2
5 files changed, 6 insertions, 7 deletions
diff --git a/clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h b/clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h
index f327011..bb36ed2 100644
--- a/clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h
+++ b/clang/include/clang/Analysis/FlowSensitive/ControlFlowContext.h
@@ -33,8 +33,7 @@ class ControlFlowContext {
public:
/// Builds a ControlFlowContext from a `FunctionDecl`.
/// `Func.hasBody()` must be true, and `Func.isTemplated()` must be false.
- static llvm::Expected<ControlFlowContext> build(const FunctionDecl &Func,
- ASTContext &C);
+ static llvm::Expected<ControlFlowContext> build(const FunctionDecl &Func);
/// Builds a ControlFlowContext from an AST node. `D` is the function in which
/// `S` resides. `D.isTemplated()` must be false.
diff --git a/clang/lib/Analysis/FlowSensitive/ControlFlowContext.cpp b/clang/lib/Analysis/FlowSensitive/ControlFlowContext.cpp
index c62bff3..c80525dc 100644
--- a/clang/lib/Analysis/FlowSensitive/ControlFlowContext.cpp
+++ b/clang/lib/Analysis/FlowSensitive/ControlFlowContext.cpp
@@ -68,13 +68,13 @@ static llvm::BitVector findReachableBlocks(const CFG &Cfg) {
}
llvm::Expected<ControlFlowContext>
-ControlFlowContext::build(const FunctionDecl &Func, ASTContext &C) {
+ControlFlowContext::build(const FunctionDecl &Func) {
if (!Func.hasBody())
return llvm::createStringError(
std::make_error_code(std::errc::invalid_argument),
"Cannot analyze function without a body");
- return build(Func, *Func.getBody(), C);
+ return build(Func, *Func.getBody(), Func.getASTContext());
}
llvm::Expected<ControlFlowContext>
diff --git a/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp b/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp
index 3261239..27ec15a 100644
--- a/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp
+++ b/clang/lib/Analysis/FlowSensitive/DataflowAnalysisContext.cpp
@@ -211,7 +211,7 @@ DataflowAnalysisContext::getControlFlowContext(const FunctionDecl *F) {
return &It->second;
if (F->hasBody()) {
- auto CFCtx = ControlFlowContext::build(*F, F->getASTContext());
+ auto CFCtx = ControlFlowContext::build(*F);
// FIXME: Handle errors.
assert(CFCtx);
auto Result = FunctionContexts.insert({F, std::move(*CFCtx)});
diff --git a/clang/unittests/Analysis/FlowSensitive/TestingSupport.h b/clang/unittests/Analysis/FlowSensitive/TestingSupport.h
index d5591be..aa2b2a2 100644
--- a/clang/unittests/Analysis/FlowSensitive/TestingSupport.h
+++ b/clang/unittests/Analysis/FlowSensitive/TestingSupport.h
@@ -241,7 +241,7 @@ checkDataflow(AnalysisInputs<AnalysisT> AI,
llvm::errc::invalid_argument, "Could not find the target function.");
// Build the control flow graph for the target function.
- auto MaybeCFCtx = ControlFlowContext::build(*Target, Context);
+ auto MaybeCFCtx = ControlFlowContext::build(*Target);
if (!MaybeCFCtx) return MaybeCFCtx.takeError();
auto &CFCtx = *MaybeCFCtx;
diff --git a/clang/unittests/Analysis/FlowSensitive/TypeErasedDataflowAnalysisTest.cpp b/clang/unittests/Analysis/FlowSensitive/TypeErasedDataflowAnalysisTest.cpp
index 1d94b69..473750a 100644
--- a/clang/unittests/Analysis/FlowSensitive/TypeErasedDataflowAnalysisTest.cpp
+++ b/clang/unittests/Analysis/FlowSensitive/TypeErasedDataflowAnalysisTest.cpp
@@ -65,7 +65,7 @@ runAnalysis(llvm::StringRef Code, AnalysisT (*MakeAnalysis)(ASTContext &)) {
assert(Func != nullptr);
auto CFCtx =
- llvm::cantFail(ControlFlowContext::build(*Func, AST->getASTContext()));
+ llvm::cantFail(ControlFlowContext::build(*Func));
AnalysisT Analysis = MakeAnalysis(AST->getASTContext());
DataflowAnalysisContext DACtx(std::make_unique<WatchedLiteralsSolver>());