Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:blockInfo

44                                         const CGBlockInfo &blockInfo,
49 const CGBlockInfo &blockInfo) {
50 return CodeGenFunction(CGM).GenerateCopyHelperFunction(blockInfo);
55 const CGBlockInfo &blockInfo) {
56 return CodeGenFunction(CGM).GenerateDestroyHelperFunction(blockInfo);
61 const CGBlockInfo &blockInfo) {
77 blockInfo.BlockSize.getQuantity()));
80 if (blockInfo.NeedsCopyDispose) {
82 elements.push_back(buildCopyHelper(CGM, blockInfo));
85 elements.push_back(buildDisposeHelper(CGM, blockInfo));
90 CGM.getContext().getObjCEncodingForBlock(blockInfo.getBlockExpr());
96 elements.push_back(CGM.getObjCRuntime().BuildGCBlockLayout(CGM, blockInfo));
497 CGBlockInfo &blockInfo =
499 blockInfo.NextBlockInfo = CGF.FirstBlockInfo;
500 CGF.FirstBlockInfo = &blockInfo;
504 computeBlockInfo(CGF.CGM, &CGF, blockInfo);
507 if (blockInfo.CanBeGlobal) return;
510 blockInfo.Address =
511 CGF.CreateTempAlloca(blockInfo.StructureType, "block");
512 blockInfo.Address->setAlignment(blockInfo.BlockAlign.getQuantity());
515 if (!blockInfo.NeedsCopyDispose) return;
527 CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
546 llvm::Value *addr = CGF.Builder.CreateStructGEP(blockInfo.Address,
550 if (!blockInfo.DominatingIP)
551 blockInfo.DominatingIP = cast<llvm::Instruction>(addr);
610 CGBlockInfo blockInfo(blockExpr->getBlockDecl(), CurFn->getName());
611 computeBlockInfo(CGM, this, blockInfo);
612 blockInfo.BlockExpression = blockExpr;
613 return EmitBlockLiteral(blockInfo);
617 OwningPtr<CGBlockInfo> blockInfo;
618 blockInfo.reset(findAndRemoveBlockInfo(&FirstBlockInfo,
621 blockInfo->BlockExpression = blockExpr;
622 return EmitBlockLiteral(*blockInfo);
625 llvm::Value *CodeGenFunction::EmitBlockLiteral(const CGBlockInfo &blockInfo) {
627 bool isLambdaConv = blockInfo.getBlockDecl()->isConversionFromLambda();
629 = CodeGenFunction(CGM).GenerateBlockFunction(CurGD, blockInfo,
635 if (blockInfo.CanBeGlobal)
636 return buildGlobalBlock(CGM, blockInfo, blockFn);
644 llvm::Constant *descriptor = buildBlockDescriptor(CGM, blockInfo);
646 llvm::AllocaInst *blockAddr = blockInfo.Address;
651 if (blockInfo.NeedsCopyDispose) flags |= BLOCK_HAS_COPY_DISPOSE;
652 if (blockInfo.HasCXXObject) flags |= BLOCK_HAS_CXX_OBJ;
653 if (blockInfo.UsesStret) flags |= BLOCK_USE_STRET;
667 const BlockDecl *blockDecl = blockInfo.getBlockDecl();
672 blockInfo.CXXThisIndex,
681 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
700 BlockInfo->getCapture(variable);
774 ActivateCleanupBlock(cleanup, blockInfo.DominatingIP);
782 ConvertType(blockInfo.getBlockExpr()->getType()));
889 assert(BlockInfo && "evaluating block ref without block information?");
890 const CGBlockInfo::Capture &capture = BlockInfo->getCapture(variable);
928 CGBlockInfo blockInfo(blockExpr->getBlockDecl(), name);
929 blockInfo.BlockExpression = blockExpr;
932 computeBlockInfo(*this, 0, blockInfo);
939 blockInfo,
945 return buildGlobalBlock(*this, blockInfo, blockFn);
949 const CGBlockInfo &blockInfo,
951 assert(blockInfo.CanBeGlobal);
961 if (blockInfo.UsesStret) flags |= BLOCK_USE_STRET;
972 fields[4] = buildBlockDescriptor(CGM, blockInfo);
983 literal->setAlignment(blockInfo.BlockAlign.getQuantity());
987 CGM.getTypes().ConvertType(blockInfo.getBlockExpr()->getType());
993 const CGBlockInfo &blockInfo,
997 const BlockDecl *blockDecl = blockInfo.getBlockDecl();
1003 BlockInfo = &blockInfo;
1034 const FunctionProtoType *fnType = blockInfo.getBlockExpr()->getFunctionType();
1040 blockInfo.UsesStret = true;
1053 blockInfo.getBlockExpr()->getBody()->getLocStart());
1062 blockInfo.StructureType->getPointerTo(),
1069 blockInfo.CXXThisIndex,
1081 if (blockInfo.Captures.count(self)) {
1082 const CGBlockInfo::Capture &capture = blockInfo.getCapture(self);
1094 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1133 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1141 Builder, blockInfo);
1177 CodeGenFunction::GenerateCopyHelperFunction(const CGBlockInfo &blockInfo) {
1216 llvm::Type *structPtrTy = blockInfo.StructureType->getPointerTo();
1226 const BlockDecl *blockDecl = blockInfo.getBlockDecl();
1233 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1296 CodeGenFunction::GenerateDestroyHelperFunction(const CGBlockInfo &blockInfo) {
1331 llvm::Type *structPtrTy = blockInfo.StructureType->getPointerTo();
1337 const BlockDecl *blockDecl = blockInfo.getBlockDecl();
1346 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);