From 6091eb9d7f7c371e4563952690a39ce0147c84a2 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 16 Jun 2011 21:17:17 +0000 Subject: [PATCH] move the address space into the subclass data field, saving a word on PointerType. 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 | 7 +++---- lib/VMCore/Type.cpp | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/include/llvm/DerivedTypes.h b/include/llvm/DerivedTypes.h index 2c3cf2b8083..25b5978914e 100644 --- a/include/llvm/DerivedTypes.h +++ b/include/llvm/DerivedTypes.h @@ -440,11 +440,10 @@ public: }; -/// PointerType - Class to represent pointers +/// PointerType - Class to represent pointers. /// class PointerType : public SequentialType { friend class TypeMap; - 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; diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp index 54fc5c599b1..ae45d9aed4d 100644 --- a/lib/VMCore/Type.cpp +++ b/lib/VMCore/Type.cpp @@ -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()); } -- 2.34.1