#include "clang/AST/CFG.h"
#include "llvm/ADT/SmallPtrSet.h"
+#include "functional" // STL
namespace clang {
/// 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 {
//===--------------------------------------------------------------------===//
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);
}