[clang] aaec22f - [clang][dataflow] Remove deprecated `ValueModel::merge()` function. (#82602)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Feb 27 00:49:20 PST 2024
Author: martinboehme
Date: 2024-02-27T09:49:16+01:00
New Revision: aaec22ffbc9fb0a3b12957166ebf35a7bb2c31e0
URL: https://github.com/llvm/llvm-project/commit/aaec22ffbc9fb0a3b12957166ebf35a7bb2c31e0
DIFF: https://github.com/llvm/llvm-project/commit/aaec22ffbc9fb0a3b12957166ebf35a7bb2c31e0.diff
LOG: [clang][dataflow] Remove deprecated `ValueModel::merge()` function. (#82602)
I'm not aware of any remaining overrides of this function.
While I'm here, change an outdated comment in DataflowAnalysis.h that
still
referred to `merge()`. I've made the comment more general, referring
simply to
`ValueModel`, as we shouldn't really be repeating the documentation of
that
class here anyway.
Added:
Modified:
clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h
clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h
Removed:
################################################################################
diff --git a/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h b/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h
index b95095d2184c0e..3c84704d0d6ceb 100644
--- a/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h
+++ b/clang/include/clang/Analysis/FlowSensitive/DataflowAnalysis.h
@@ -54,10 +54,9 @@ namespace dataflow {
/// Environment &Env)` - applies the analysis transfer
/// function for a given edge from a CFG block of a conditional statement.
///
-/// `Derived` can optionally override the following members:
-/// * `bool merge(QualType, const Value &, const Value &, Value &,
-/// Environment &)` - joins distinct values. This could be a strict
-/// lattice join or a more general widening operation.
+/// `Derived` can optionally override the virtual functions in the
+/// `Environment::ValueModel` interface (which is an indirect base class of
+/// this class).
///
/// `LatticeT` is a bounded join-semilattice that is used by `Derived` and must
/// provide the following public members:
diff --git a/clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h b/clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h
index 0aecc749bf415c..7f8c70d169376e 100644
--- a/clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h
+++ b/clang/include/clang/Analysis/FlowSensitive/DataflowEnvironment.h
@@ -79,32 +79,6 @@ class Environment {
return ComparisonResult::Unknown;
}
- /// DEPRECATED. Override `join` and/or `widen`, instead.
- ///
- /// Modifies `MergedVal` to approximate both `Val1` and `Val2`. This could
- /// be a strict lattice join or a more general widening operation.
- ///
- /// If this function returns true, `MergedVal` will be assigned to a storage
- /// location of type `Type` in `MergedEnv`.
- ///
- /// `Env1` and `Env2` can be used to query child values and path condition
- /// implications of `Val1` and `Val2` respectively.
- ///
- /// Requirements:
- ///
- /// `Val1` and `Val2` must be distinct.
- ///
- /// `Val1`, `Val2`, and `MergedVal` must model values of type `Type`.
- ///
- /// `Val1` and `Val2` must be assigned to the same storage location in
- /// `Env1` and `Env2` respectively.
- virtual bool merge(QualType Type, const Value &Val1,
- const Environment &Env1, const Value &Val2,
- const Environment &Env2, Value &MergedVal,
- Environment &MergedEnv) {
- return true;
- }
-
/// Modifies `JoinedVal` to approximate both `Val1` and `Val2`. This should
/// obey the properties of a lattice join.
///
@@ -121,11 +95,7 @@ class Environment {
/// `Env1` and `Env2` respectively.
virtual void join(QualType Type, const Value &Val1, const Environment &Env1,
const Value &Val2, const Environment &Env2,
- Value &JoinedVal, Environment &JoinedEnv) {
- [[maybe_unused]] bool ShouldKeep =
- merge(Type, Val1, Env1, Val2, Env2, JoinedVal, JoinedEnv);
- assert(ShouldKeep && "dropping merged value is unsupported");
- }
+ Value &JoinedVal, Environment &JoinedEnv) {}
/// This function may widen the current value -- replace it with an
/// approximation that can reach a fixed point more quickly than iterated
More information about the cfe-commits
mailing list