From 7e37a6981b8d8c7dc4caee4d05487978ff2cd770 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Thu, 14 Jan 2010 01:39:42 +0000 Subject: [PATCH] Add a DenseMapInfo specialization for BaseSubobject. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93399 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/CGVtable.h | 39 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/lib/CodeGen/CGVtable.h b/lib/CodeGen/CGVtable.h index b479814123..0caaec2816 100644 --- a/lib/CodeGen/CGVtable.h +++ b/lib/CodeGen/CGVtable.h @@ -80,12 +80,47 @@ public: /// getBaseOffset - Returns the base class offset. uint64_t getBaseOffset() const { return BaseOffset; } - + friend bool operator==(const BaseSubobject &LHS, const BaseSubobject &RHS) { return LHS.Base == RHS.Base && LHS.BaseOffset == RHS.BaseOffset; } }; - + +} // end namespace CodeGen +} // end namespace clang + +namespace llvm { + +template<> struct DenseMapInfo { + static clang::CodeGen::BaseSubobject getEmptyKey() { + return clang::CodeGen::BaseSubobject( + DenseMapInfo::getEmptyKey(), + DenseMapInfo::getEmptyKey()); + } + + static clang::CodeGen::BaseSubobject getTombstoneKey() { + return clang::CodeGen::BaseSubobject( + DenseMapInfo::getTombstoneKey(), + DenseMapInfo::getTombstoneKey()); + } + + static unsigned getHashValue(const clang::CodeGen::BaseSubobject &Base) { + return + DenseMapInfo::getHashValue(Base.getBase()) ^ + DenseMapInfo::getHashValue(Base.getBaseOffset()); + } + + static bool isEqual(const clang::CodeGen::BaseSubobject &LHS, + const clang::CodeGen::BaseSubobject &RHS) { + return LHS == RHS; + } +}; + +} + +namespace clang { +namespace CodeGen { + class CGVtableInfo { public: typedef std::vector > -- 2.50.1