summaryrefslogtreecommitdiff
path: root/include/llvm/ADT/EquivalenceClasses.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/ADT/EquivalenceClasses.h')
-rw-r--r--include/llvm/ADT/EquivalenceClasses.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/llvm/ADT/EquivalenceClasses.h b/include/llvm/ADT/EquivalenceClasses.h
index af293d4c1422..e3f48433c69f 100644
--- a/include/llvm/ADT/EquivalenceClasses.h
+++ b/include/llvm/ADT/EquivalenceClasses.h
@@ -239,6 +239,16 @@ public:
return L1;
}
+ // isEquivalent - Return true if V1 is equivalent to V2. This can happen if
+ // V1 is equal to V2 or if they belong to one equivalence class.
+ bool isEquivalent(const ElemTy &V1, const ElemTy &V2) const {
+ // Fast path: any element is equivalent to itself.
+ if (V1 == V2)
+ return true;
+ auto It = findLeader(V1);
+ return It != member_end() && It == findLeader(V2);
+ }
+
class member_iterator : public std::iterator<std::forward_iterator_tag,
const ElemTy, ptrdiff_t> {
friend class EquivalenceClasses;