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
This commit is contained in:
Chris Lattner 2011-06-16 21:17:17 +00:00
parent e43d745b5c
commit 6091eb9d7f
2 changed files with 4 additions and 5 deletions

View 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;

View 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());
}