diff options
| author | Ted Kremenek <kremenek@apple.com> | 2007-09-18 23:40:51 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2007-09-18 23:40:51 +0000 |
| commit | fb9ea52a13a50c51705b10848ec6d657c19094ec (patch) | |
| tree | f69757e61ee687fb33177809f0070aedce973c9f | |
| parent | d51126b97eacdef13cc9ba59aab3a4d01367f9e5 (diff) | |
| download | bcm5719-llvm-fb9ea52a13a50c51705b10848ec6d657c19094ec.tar.gz bcm5719-llvm-fb9ea52a13a50c51705b10848ec6d657c19094ec.zip | |
DataflowSolver now acccepts an "_Equal" template parameter that allows the user
to specify how two dataflow values should be compared for equality. The default
is to use std::equal_to.
llvm-svn: 42115
| -rw-r--r-- | clang/Analysis/DataflowSolver.h | 6 | ||||
| -rw-r--r-- | clang/include/clang/Analysis/UninitializedValues.h | 2 |
2 files changed, 5 insertions, 3 deletions
diff --git a/clang/Analysis/DataflowSolver.h b/clang/Analysis/DataflowSolver.h index b89b45b6773..d5e5bbbe805 100644 --- a/clang/Analysis/DataflowSolver.h +++ b/clang/Analysis/DataflowSolver.h @@ -16,6 +16,7 @@ #include "clang/AST/CFG.h" #include "llvm/ADT/SmallPtrSet.h" +#include "functional" // STL namespace clang { @@ -47,7 +48,8 @@ public: /// DataflowSolverTy - Generic dataflow solver. template <typename _DFValuesTy, // Usually a subclass of DataflowValues typename _TransferFuncsTy, - typename _MergeOperatorTy > + typename _MergeOperatorTy, + typename _Equal = std::equal_to<typename _DFValuesTy::ValTy> > class DataflowSolver { //===--------------------------------------------------------------------===// @@ -228,7 +230,7 @@ private: M[E].copyValues(V); WorkList.enqueue(TargetBlock); } - else if (!(V==I->second)) { + else if (!_Equal()(V,I->second)) { I->second.copyValues(V); WorkList.enqueue(TargetBlock); } diff --git a/clang/include/clang/Analysis/UninitializedValues.h b/clang/include/clang/Analysis/UninitializedValues.h index d116da595c5..21e1ebd4476 100644 --- a/clang/include/clang/Analysis/UninitializedValues.h +++ b/clang/include/clang/Analysis/UninitializedValues.h @@ -71,7 +71,7 @@ public: ExprBV.reset(); } - bool operator==(ValTy& RHS) const { + bool operator==(const ValTy& RHS) const { return DeclBV == RHS.DeclBV && ExprBV == RHS.ExprBV; } |

