summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2016-07-11 04:37:53 +0000
committerDaniel Berlin <dberlin@dberlin.org>2016-07-11 04:37:53 +0000
commite64985fc94993fc748b9afe84943dec659bdab29 (patch)
tree1334d21a9d2258557f64a4a8ed42b35a53209910
parent60e5bdc4704f46bad75b4a27fcb8820e1c0e6560 (diff)
downloadbcm5719-llvm-e64985fc94993fc748b9afe84943dec659bdab29.tar.gz
bcm5719-llvm-e64985fc94993fc748b9afe84943dec659bdab29.zip
Allow BasicBlockEdge to be used in DenseMap
Summary: Add a DenseMapInfo specialization for BasicBlockEdge Reviewers: hfinkel, chandlerc, majnemer Differential Revision: http://reviews.llvm.org/D22207 llvm-svn: 275041
-rw-r--r--llvm/include/llvm/IR/Dominators.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/include/llvm/IR/Dominators.h b/llvm/include/llvm/IR/Dominators.h
index 9d29e207221..f445a49b67b 100644
--- a/llvm/include/llvm/IR/Dominators.h
+++ b/llvm/include/llvm/IR/Dominators.h
@@ -15,6 +15,7 @@
#ifndef LLVM_IR_DOMINATORS_H
#define LLVM_IR_DOMINATORS_H
+#include "llvm/ADT/DenseMapInfo.h"
#include "llvm/ADT/GraphTraits.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/IR/CFG.h"
@@ -54,6 +55,26 @@ public:
bool isSingleEdge() const;
};
+template <> struct DenseMapInfo<BasicBlockEdge> {
+ static unsigned getHashValue(const BasicBlockEdge *V);
+ typedef DenseMapInfo<const BasicBlock *> BBInfo;
+ static inline BasicBlockEdge getEmptyKey() {
+ return BasicBlockEdge(BBInfo::getEmptyKey(), BBInfo::getEmptyKey());
+ }
+ static inline BasicBlockEdge getTombstoneKey() {
+ return BasicBlockEdge(BBInfo::getTombstoneKey(), BBInfo::getTombstoneKey());
+ }
+
+ static unsigned getHashValue(const BasicBlockEdge &Edge) {
+ return hash_combine(BBInfo::getHashValue(Edge.getStart()),
+ BBInfo::getHashValue(Edge.getEnd()));
+ }
+ static bool isEqual(const BasicBlockEdge &LHS, const BasicBlockEdge &RHS) {
+ return BBInfo::isEqual(LHS.getStart(), RHS.getStart()) &&
+ BBInfo::isEqual(LHS.getEnd(), RHS.getEnd());
+ }
+};
+
/// \brief Concrete subclass of DominatorTreeBase that is used to compute a
/// normal dominator tree.
///
OpenPOWER on IntegriCloud