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)

Declared at: clang/lib/CodeGen/CGBlocks.h:317

Parameters

const clang::BlockDecl* blockDecl
llvm::StringRef Name

void buildCaptureMap()

Declared at: clang/lib/CodeGen/CGBlocks.h:296

const clang::BlockDecl* getBlockDecl() const

Declared at: clang/lib/CodeGen/CGBlocks.h:310

const clang::BlockExpr* getBlockExpr() const

Declared at: clang/lib/CodeGen/CGBlocks.h:311

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)

Declared at: clang/lib/CodeGen/CGBlocks.h:304

Parameters

const clang::VarDecl* var