move the address space into the subclass data field, saving a word on PointerType.
authorChris Lattner <sabre@nondot.org>
Thu, 16 Jun 2011 21:17:17 +0000 (21:17 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 16 Jun 2011 21:17:17 +0000 (21:17 +0000)
This limits the # address spaces to 2^23, which should be good enough.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133192 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/DerivedTypes.h
lib/VMCore/Type.cpp

index 2c3cf2b80839053a7f11e9e0847c50c337c39c3c..25b5978914e06c54aaf0813ac934c3e126579e61 100644 (file)
@@ -440,11 +440,10 @@ public:
 };
 
 
-/// PointerType - Class to represent pointers
+/// PointerType - Class to represent pointers.
 ///
 class PointerType : public SequentialType {
   friend class TypeMap<PointerValType, PointerType>;
-  unsigned AddressSpace;
 
   PointerType(const PointerType &);                   // Do not implement
   const PointerType &operator=(const PointerType &);  // Do not implement
@@ -465,7 +464,7 @@ public:
   static bool isValidElementType(const Type *ElemTy);
 
   /// @brief Return the address space of the Pointer type.
-  inline unsigned getAddressSpace() const { return AddressSpace; }
+  inline unsigned getAddressSpace() const { return getSubclassData(); }
 
   // Implement the AbstractTypeUser interface.
   virtual void refineAbstractType(const DerivedType *OldTy, const Type *NewTy);
@@ -479,7 +478,7 @@ public:
 };
 
 
-/// OpaqueType - Class to represent abstract types
+/// OpaqueType - Class to represent opaque types.
 ///
 class OpaqueType : public DerivedType {
   friend class LLVMContextImpl;
index 54fc5c599b17fbdb1681bb857639b899837b28d1..ae45d9aed4dc0b8f2f6ba93f88bab5094675aec2 100644 (file)
@@ -533,7 +533,7 @@ VectorType::VectorType(const Type *ElType, unsigned NumEl)
 
 PointerType::PointerType(const Type *E, unsigned AddrSpace)
   : SequentialType(PointerTyID, E) {
-  AddressSpace = AddrSpace;
+  setSubclassData(AddrSpace);
   // Calculate whether or not this type is abstract
   setAbstract(E->isAbstract());
 }