[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.
This commit is contained in:
parent
575bf33a27
commit
aaec22ffbc
@ -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:
|
||||
|
||||
@ -79,32 +79,6 @@ public:
|
||||
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 @@ public:
|
||||
/// `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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user