diff options
Diffstat (limited to 'llvm/lib/VMCore/LLVMContextImpl.h')
| -rw-r--r-- | llvm/lib/VMCore/LLVMContextImpl.h | 109 | 
1 files changed, 3 insertions, 106 deletions
| diff --git a/llvm/lib/VMCore/LLVMContextImpl.h b/llvm/lib/VMCore/LLVMContextImpl.h index 9aba73781c4..a27afc08b9f 100644 --- a/llvm/lib/VMCore/LLVMContextImpl.h +++ b/llvm/lib/VMCore/LLVMContextImpl.h @@ -29,7 +29,6 @@  #include "llvm/ADT/FoldingSet.h"  #include "llvm/ADT/SmallPtrSet.h"  #include "llvm/ADT/StringMap.h" -#include "llvm/ADT/Hashing.h"  #include <vector>  namespace llvm { @@ -90,107 +89,6 @@ struct DenseMapAPFloatKeyInfo {    }  }; -struct AnonStructTypeKeyInfo { -  struct KeyTy { -    ArrayRef<Type*> ETypes; -    bool isPacked; -    KeyTy(const ArrayRef<Type*>& E, bool P) : -      ETypes(E), isPacked(P) {} -    KeyTy(const KeyTy& that) : -      ETypes(that.ETypes), isPacked(that.isPacked) {} -    KeyTy(const StructType* ST) : -      ETypes(ArrayRef<Type*>(ST->element_begin(), ST->element_end())), -      isPacked(ST->isPacked()) {} -    bool operator==(const KeyTy& that) const { -      if (isPacked != that.isPacked) -        return false; -      if (ETypes != that.ETypes) -        return false; -      return true; -    } -    bool operator!=(const KeyTy& that) const { -      return !this->operator==(that); -    } -  }; -  static inline StructType* getEmptyKey() { -    return DenseMapInfo<StructType*>::getEmptyKey(); -  } -  static inline StructType* getTombstoneKey() { -    return DenseMapInfo<StructType*>::getTombstoneKey(); -  } -  static unsigned getHashValue(const KeyTy& Key) { -    GeneralHash Hash; -    Hash.add(Key.ETypes); -    Hash.add(Key.isPacked); -    return Hash.finish(); -  } -  static unsigned getHashValue(const StructType *ST) { -    return getHashValue(KeyTy(ST)); -  } -  static bool isEqual(const KeyTy& LHS, const StructType *RHS) { -    if (RHS == getEmptyKey() || RHS == getTombstoneKey()) -      return false; -    return LHS == KeyTy(RHS); -  } -  static bool isEqual(const StructType *LHS, const StructType *RHS) { -    return LHS == RHS; -  } -}; - -struct FunctionTypeKeyInfo { -  struct KeyTy { -    const Type *ReturnType; -    ArrayRef<Type*> Params; -    bool isVarArg; -    KeyTy(const Type* R, const ArrayRef<Type*>& P, bool V) : -      ReturnType(R), Params(P), isVarArg(V) {} -    KeyTy(const KeyTy& that) : -      ReturnType(that.ReturnType), -      Params(that.Params), -      isVarArg(that.isVarArg) {} -    KeyTy(const FunctionType* FT) : -      ReturnType(FT->getReturnType()), -      Params(ArrayRef<Type*>(FT->param_begin(), FT->param_end())), -      isVarArg(FT->isVarArg()) {} -    bool operator==(const KeyTy& that) const { -      if (ReturnType != that.ReturnType) -        return false; -      if (isVarArg != that.isVarArg) -        return false; -      if (Params != that.Params) -        return false; -      return true; -    } -    bool operator!=(const KeyTy& that) const { -      return !this->operator==(that); -    } -  }; -  static inline FunctionType* getEmptyKey() { -    return DenseMapInfo<FunctionType*>::getEmptyKey(); -  } -  static inline FunctionType* getTombstoneKey() { -    return DenseMapInfo<FunctionType*>::getTombstoneKey(); -  } -  static unsigned getHashValue(const KeyTy& Key) { -    GeneralHash Hash; -    Hash.add(Key.ReturnType); -    Hash.add(Key.Params); -    Hash.add(Key.isVarArg); -    return Hash.finish(); -  } -  static unsigned getHashValue(const FunctionType *FT) { -    return getHashValue(KeyTy(FT)); -  } -  static bool isEqual(const KeyTy& LHS, const FunctionType *RHS) { -    if (RHS == getEmptyKey() || RHS == getTombstoneKey()) -      return false; -    return LHS == KeyTy(RHS); -  } -  static bool isEqual(const FunctionType *LHS, const FunctionType *RHS) { -    return LHS == RHS; -  } -}; -  /// DebugRecVH - This is a CallbackVH used to keep the Scope -> index maps  /// up to date as MDNodes mutate.  This class is implemented in DebugLoc.cpp.  class DebugRecVH : public CallbackVH { @@ -282,10 +180,9 @@ public:    DenseMap<unsigned, IntegerType*> IntegerTypes; -  typedef DenseMap<FunctionType*, bool, FunctionTypeKeyInfo> FunctionTypeMap; -  FunctionTypeMap FunctionTypes; -  typedef DenseMap<StructType*, bool, AnonStructTypeKeyInfo> StructTypeMap; -  StructTypeMap AnonStructTypes; +  // TODO: Optimize FunctionTypes/AnonStructTypes! +  std::map<std::vector<Type*>, FunctionType*> FunctionTypes; +  std::map<std::vector<Type*>, StructType*> AnonStructTypes;    StringMap<StructType*> NamedStructTypes;    unsigned NamedStructTypesUniqueID; | 

