diff options
author | Mike Stump <mrs@apple.com> | 2009-10-22 00:49:09 +0000 |
---|---|---|
committer | Mike Stump <mrs@apple.com> | 2009-10-22 00:49:09 +0000 |
commit | 083c25eea14bb4cc4ecc3ec763c60e2e609e22bd (patch) | |
tree | 722fc6df1c643f519bf978f6ffb1ffcd229cc34d /include/clang | |
parent | 080fb19301b1d0ce4149d99b8961e77f7ed4bb2e (diff) |
Extend out the block descriptor structure for debug information with
the copy/dispose helpers as appropriate.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84817 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang')
-rw-r--r-- | include/clang/AST/ASTContext.h | 20 | ||||
-rw-r--r-- | include/clang/Frontend/PCHBitCodes.h | 4 |
2 files changed, 22 insertions, 2 deletions
diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h index 5730aaa8e4..c3ac2ea82d 100644 --- a/include/clang/AST/ASTContext.h +++ b/include/clang/AST/ASTContext.h @@ -147,6 +147,9 @@ class ASTContext { /// \brief Type for the Block descriptor for Blocks CodeGen. RecordDecl *BlockDescriptorType; + /// \brief Type for the Block descriptor for Blocks CodeGen. + RecordDecl *BlockDescriptorExtendedType; + /// \brief Keeps track of all declaration attributes. /// /// Since so few decls have attrs, we keep them in a hash map instead of @@ -407,9 +410,24 @@ public: return QualType(); } + /// This gets the struct used to keep track of the extended descriptor for + /// pointer to blocks. + QualType getBlockDescriptorExtendedType(); + + // Set the type for a Block descriptor extended type. + void setBlockDescriptorExtendedType(QualType T); + /// Get the BlockDescriptorExtendedType type, or NULL if it hasn't yet been + /// built. + QualType getRawBlockdescriptorExtendedType() { + if (BlockDescriptorExtendedType) + return getTagDeclType(BlockDescriptorExtendedType); + return QualType(); + } + /// This gets the struct used to keep track of pointer to blocks, complete /// with captured variables. - QualType getBlockParmType(llvm::SmallVector<const Expr *, 8> &BDRDs); + QualType getBlockParmType(bool BlockHasCopyDispose, + llvm::SmallVector<const Expr *, 8> &BDRDs); /// This builds the struct used for __block variables. QualType BuildByRefType(const char *DeclName, QualType Ty); diff --git a/include/clang/Frontend/PCHBitCodes.h b/include/clang/Frontend/PCHBitCodes.h index dcabcb3187..d83a020ecf 100644 --- a/include/clang/Frontend/PCHBitCodes.h +++ b/include/clang/Frontend/PCHBitCodes.h @@ -438,7 +438,9 @@ namespace clang { /// \brief Objective-C "Class" redefinition type SPECIAL_TYPE_OBJC_CLASS_REDEFINITION = 11, /// \brief Block descriptor type for Blocks CodeGen - SPECIAL_TYPE_BLOCK_DESCRIPTOR = 12 + SPECIAL_TYPE_BLOCK_DESCRIPTOR = 12, + /// \brief Block extedned descriptor type for Blocks CodeGen + SPECIAL_TYPE_BLOCK_EXTENDED_DESCRIPTOR = 13 }; /// \brief Record codes for each kind of declaration. |