X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FType.h;h=5e09a6122208000074a67ab81ab7ab4b0e2e0baa;hb=47128fe2969b90880c5ffdbeb8c699a06bbaa9f9;hp=4a8bbf03de48f22e382a736d765101d20d8ce1e6;hpb=d51e5d0ee7137b278933e74aad098a8bf24329ef;p=oota-llvm.git diff --git a/include/llvm/Type.h b/include/llvm/Type.h index 4a8bbf03de4..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" @@ -66,6 +67,7 @@ public: /// value, you can cast to a "DerivedType" subclass (see DerivedTypes.h) /// Note: If you add an element to this, you need to add an element to the /// Type::getPrimitiveType function, or else things will break! + /// Also update LLVMTypeKind and LLVMGetTypeKind () in the C binding. /// enum TypeID { // PrimitiveTypes .. make sure LastPrimitiveTyID stays up to date @@ -105,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 @@ -113,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"); @@ -169,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. @@ -270,7 +279,7 @@ public: /// /// Note that this may not reflect the size of memory allocated for an /// instance of the type or the number of bytes that are written when an - /// intance of the type is stored to memory. The TargetData class provides + /// instance of the type is stored to memory. The TargetData class provides /// additional query functions to provide this information. /// unsigned getPrimitiveSizeInBits() const;