aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2009-07-15 22:50:23 +0000
committerOwen Anderson <resistor@mac.com>2009-07-15 22:50:23 +0000
commitfea4ec6dff9634ff134911369f3853bf6bc85dc5 (patch)
treeea49ed9dfbe9eaf86a26445d9efdf4739b7acc4f /include/llvm
parent0c77db32dd8ae10b5a26d60718dbe03dc2745888 (diff)
downloadexternal_llvm-fea4ec6dff9634ff134911369f3853bf6bc85dc5.zip
external_llvm-fea4ec6dff9634ff134911369f3853bf6bc85dc5.tar.gz
external_llvm-fea4ec6dff9634ff134911369f3853bf6bc85dc5.tar.bz2
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
Diffstat (limited to 'include/llvm')
-rw-r--r--include/llvm/Type.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/include/llvm/Type.h b/include/llvm/Type.h
index c311dbe..5e09a61 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.