Allocator: Remove ReferenceAdder hack.
authorBenjamin Kramer <benny.kra@googlemail.com>
Fri, 18 Apr 2014 14:54:51 +0000 (14:54 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Fri, 18 Apr 2014 14:54:51 +0000 (14:54 +0000)
This was a workaround for compilers that had issues with reference
collapsing.

llvm-svn: 206612

llvm/include/llvm/ADT/ScopedHashTable.h
llvm/include/llvm/ADT/StringMap.h
llvm/include/llvm/Support/Allocator.h

index ae16c9c..3cc7738 100644 (file)
@@ -167,10 +167,8 @@ public:
   
 
   /// Access to the allocator.
-  typedef typename ReferenceAdder<AllocatorTy>::result AllocatorRefTy;
-  typedef typename ReferenceAdder<const AllocatorTy>::result AllocatorCRefTy;
-  AllocatorRefTy getAllocator() { return Allocator; }
-  AllocatorCRefTy getAllocator() const { return Allocator; }
+  AllocatorTy &getAllocator() { return Allocator; }
+  const AllocatorTy &getAllocator() const { return Allocator; }
 
   bool count(const K &Key) const {
     return TopLevelMap.count(Key);
index f7f9409..a966977 100644 (file)
@@ -246,10 +246,8 @@ public:
     clear();
   }
 
-  typedef typename ReferenceAdder<AllocatorTy>::result AllocatorRefTy;
-  typedef typename ReferenceAdder<const AllocatorTy>::result AllocatorCRefTy;
-  AllocatorRefTy getAllocator() { return Allocator; }
-  AllocatorCRefTy getAllocator() const { return Allocator; }
+  AllocatorTy &getAllocator() { return Allocator; }
+  const AllocatorTy &getAllocator() const { return Allocator; }
 
   typedef const char* key_type;
   typedef ValueTy mapped_type;
index 774363f..7a7e4c0 100644 (file)
 #include <cstdlib>
 
 namespace llvm {
-template <typename T> struct ReferenceAdder {
-  typedef T &result;
-};
-template <typename T> struct ReferenceAdder<T &> {
-  typedef T result;
-};
 
 /// \brief CRTP base class providing obvious overloads for the core \c
 /// Allocate() methods of LLVM-style allocators.