template <typename T> struct isPodLike;
template <> struct isPodLike<StringRef> { static const bool value = true; };
- template <typename T> struct DenseMapInfo;
- template<> struct DenseMapInfo<StringRef> {
- static StringRef getEmptyKey() { return StringRef(); }
- static StringRef getTombstoneKey() { return StringRef(" ", 0); }
- static unsigned getHashValue(StringRef const val);
- static bool isEqual(StringRef const lhs,
- StringRef const rhs) { return lhs.equals(rhs); }
- };
}
#endif
#ifndef LLVM_DEBUGINFO_H
#define LLVM_DEBUGINFO_H
-#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
class DIType;
class DIObjCProperty;
- /// Map from a pair <unique type name, an unsigned flag> to MDNode.
- typedef DenseMap<std::pair<StringRef, unsigned>, MDNode*> DITypeHashMap;
-
/// DIDescriptor - A thin wraper around MDNode to access encoded debug info.
/// This should not be stored in a container, because the underlying MDNode
/// may change in certain situations.
}
static inline bool classof(const MapHNode *) { return true; }
- typedef llvm::DenseMap<StringRef, HNode*> NameToNode;
+ struct StrMappingInfo {
+ static StringRef getEmptyKey() { return StringRef(); }
+ static StringRef getTombstoneKey() { return StringRef(" ", 0); }
+ static unsigned getHashValue(StringRef const val) {
+ return llvm::HashString(val); }
+ static bool isEqual(StringRef const lhs,
+ StringRef const rhs) { return lhs.equals(rhs); }
+ };
+ typedef llvm::DenseMap<StringRef, HNode*, StrMappingInfo> NameToNode;
bool isValidKey(StringRef key);
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/OwningPtr.h"
-#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/edit_distance.h"
#include <bitset>
hash_code llvm::hash_value(StringRef S) {
return hash_combine_range(S.begin(), S.end());
}
-
-unsigned DenseMapInfo<StringRef>::getHashValue(StringRef const val) {
- return llvm::HashString(val);
-}