summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2007-09-18 23:40:51 +0000
committerTed Kremenek <kremenek@apple.com>2007-09-18 23:40:51 +0000
commitfb9ea52a13a50c51705b10848ec6d657c19094ec (patch)
treef69757e61ee687fb33177809f0070aedce973c9f
parentd51126b97eacdef13cc9ba59aab3a4d01367f9e5 (diff)
downloadbcm5719-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.h6
-rw-r--r--clang/include/clang/Analysis/UninitializedValues.h2
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;
}
OpenPOWER on IntegriCloud