diff options
author | Owen Anderson <resistor@mac.com> | 2009-07-15 22:50:23 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2009-07-15 22:50:23 +0000 |
commit | e3c21e6540df0170e080d675eea2fce84f0a7a0a (patch) | |
tree | a78344dba9f98ba81f0059676e300c5f96eb4086 | |
parent | 662da55c5fc6447ae5205981b30f1869b6f80468 (diff) | |
download | bcm5719-llvm-e3c21e6540df0170e080d675eea2fce84f0a7a0a.tar.gz bcm5719-llvm-e3c21e6540df0170e080d675eea2fce84f0a7a0a.zip |
Add an LLVMContext to Type, hardwired to the global context until Type uniquing is moved on the contexts themselves.
llvm-svn: 75853
-rw-r--r-- | llvm/include/llvm/Type.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/llvm/include/llvm/Type.h b/llvm/include/llvm/Type.h index c311dbedc71..5e09a612220 100644 --- a/llvm/include/llvm/Type.h +++ b/llvm/include/llvm/Type.h @@ -12,6 +12,7 @@ #define LLVM_TYPE_H #include "llvm/AbstractTypeUser.h" +#include "llvm/LLVMContext.h" #include "llvm/Support/Casting.h" #include "llvm/Support/DataTypes.h" #include "llvm/System/Atomic.h" @@ -106,6 +107,9 @@ private: /// mutable sys::cas_flag RefCount; + /// Context - This refers to the LLVMContext in which this type was uniqued. + LLVMContext &Context; + const Type *getForwardedTypeInternal() const; // Some Type instances are allocated as arrays, some aren't. So we provide @@ -114,7 +118,8 @@ private: protected: explicit Type(TypeID id) : ID(id), Abstract(false), SubclassData(0), - RefCount(0), ForwardType(0), NumContainedTys(0), + RefCount(0), Context(getGlobalContext()), + ForwardType(0), NumContainedTys(0), ContainedTys(0) {} virtual ~Type() { assert(AbstractTypeUsers.empty() && "Abstract types remain"); @@ -170,6 +175,9 @@ public: /// module). void dump(const Module *Context) const; + /// getContext - Fetch the LLVMContext in which this type was uniqued. + LLVMContext &getContext() const { return Context; } + //===--------------------------------------------------------------------===// // Property accessors for dealing with types... Some of these virtual methods // are defined in private classes defined in Type.cpp for primitive types. |