Lines Matching defs:Block
125 // Get the block literal from an expression derived from the block expression.
127 // Block variable declarations are implicitly qualified with const. Therefore
128 // all block variables must be initialized at declaration time and may not be
142 /// Record emitted llvm invoke function and llvm block literal for the
143 /// corresponding block expression.
146 llvm::Value *Block) {
148 "Block expression emitted twice");
150 assert(Block->getType()->isPointerTy() && "Invalid block literal type");
152 EnqueuedBlockMap[E].BlockArg = Block;
164 // The block literal may be assigned to a const variable. Chasing down
165 // to get the block literal.
166 const BlockExpr *Block = getBlockExpr(E);
168 assert(EnqueuedBlockMap.find(Block) != EnqueuedBlockMap.end() &&
169 "Block expression not emitted");
171 // Do not emit the block wrapper again if it has been emitted.
172 if (EnqueuedBlockMap[Block].Kernel) {
173 return EnqueuedBlockMap[Block];
177 CGF, EnqueuedBlockMap[Block].InvokeFunc,
178 EnqueuedBlockMap[Block].BlockArg->stripPointerCasts());
184 EnqueuedBlockMap[Block].Kernel = F;
185 return EnqueuedBlockMap[Block];