From fea4ec6dff9634ff134911369f3853bf6bc85dc5 Mon Sep 17 00:00:00 2001 From: Owen Anderson Date: Wed, 15 Jul 2009 22:50:23 +0000 Subject: [PATCH] Add an LLVMContext to Type, hardwired to the global context until Type uniquing is moved on the contexts themselves. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75853 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Type.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/llvm/Type.h b/include/llvm/Type.h index c311dbedc71..5e09a612220 100644 --- a/include/llvm/Type.h +++ b/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.