class CGBlockInfo
Declaration
class CGBlockInfo { /* full declaration omitted */ };
Description
CGBlockInfo - Information to generate a block literal.
Declared at: clang/lib/CodeGen/CGBlocks.h:156
Member Variables
- public llvm::StringRef Name
- Name - The name of the block, kindof.
- public unsigned int CXXThisIndex
- The field index of 'this' within the block, if there is one.
- public bool CanBeGlobal
- CanBeGlobal - True if the block can be global, i.e. it has no non-constant captures.
- public bool NeedsCopyDispose
- True if the block has captures that would necessitate custom copy or dispose helper functions if the block were escaping.
- public bool NoEscape
- Indicates whether the block is non-escaping.
- public bool HasCXXObject
- HasCXXObject - True if the block's custom copy/dispose functions need to be run even in GC mode.
- public bool UsesStret
- UsesStret : True if the block uses an stret return. Mutable because it gets set later in the block-creation process.
- public bool HasCapturedVariableLayout
- HasCapturedVariableLayout : True if block has captured variables and their layout meta-data has been generated.
- public bool CapturesNonExternalType
- Indicates whether an object of a non-external C++ class is captured. This bit is used to determine the linkage of the block copy/destroy helper functions.
- public llvm::DenseMap<const VarDecl*, Capture*> Captures
- Mapping from variables to pointers to captures in SortedCaptures.
- public llvm::SmallVector<Capture, 4> SortedCaptures
- The block's captures. Non-constant captures are sorted by their offsets.
- public clang::CodeGen::Address LocalAddress
- public llvm::StructType* StructureType
- public const clang::BlockDecl* Block
- public const clang::BlockExpr* BlockExpression
- public clang::CharUnits BlockSize
- public clang::CharUnits BlockAlign
- public clang::CharUnits CXXThisOffset
- public clang::CharUnits BlockHeaderForcedGapOffset
- public clang::CharUnits BlockHeaderForcedGapSize
- public clang::CodeGen::CGBlockInfo* NextBlockInfo
- The next block in the block-info chain. Invalid if this block info is not part of the CGF's block-info chain, which is true if it corresponds to a global block or a block whose expression has been encountered.
Method Overview
- public CGBlockInfo(const clang::BlockDecl * blockDecl, llvm::StringRef Name)
- public void buildCaptureMap()
- public const clang::BlockDecl * getBlockDecl() const
- public const clang::BlockExpr * getBlockExpr() const
- public const clang::CodeGen::CGBlockInfo::Capture & getCapture(const clang::VarDecl * var) const
- public clang::CodeGen::CGBlockInfo::Capture & getCapture(const clang::VarDecl * var)
Methods
¶CGBlockInfo(const clang::BlockDecl* blockDecl,
llvm::StringRef Name)
CGBlockInfo(const clang::BlockDecl* blockDecl,
llvm::StringRef Name)
Declared at: clang/lib/CodeGen/CGBlocks.h:317
Parameters
- const clang::BlockDecl* blockDecl
- llvm::StringRef Name
¶void buildCaptureMap()
void buildCaptureMap()
Declared at: clang/lib/CodeGen/CGBlocks.h:296
¶const clang::BlockDecl* getBlockDecl() const
const clang::BlockDecl* getBlockDecl() const
Declared at: clang/lib/CodeGen/CGBlocks.h:310
¶const clang::BlockExpr* getBlockExpr() const
const clang::BlockExpr* getBlockExpr() const
Declared at: clang/lib/CodeGen/CGBlocks.h:311
¶const clang::CodeGen::CGBlockInfo::Capture&
getCapture(const clang::VarDecl* var) const
const clang::CodeGen::CGBlockInfo::Capture&
getCapture(const clang::VarDecl* var) const
Declared at: clang/lib/CodeGen/CGBlocks.h:301
Parameters
- const clang::VarDecl* var
¶clang::CodeGen::CGBlockInfo::Capture& getCapture(
const clang::VarDecl* var)
clang::CodeGen::CGBlockInfo::Capture& getCapture(
const clang::VarDecl* var)
Declared at: clang/lib/CodeGen/CGBlocks.h:304
Parameters
- const clang::VarDecl* var