Lines Matching refs:Capture
182 /// A chunk of data that we actually have to capture in the block.
187 const BlockDecl::Capture *Capture; // null for 'this'
192 const BlockDecl::Capture *capture,
195 Capture(capture), Type(type) {}
199 if (!Capture)
202 info.Captures[Capture->getVariable()]
203 = CGBlockInfo::Capture::makeIndex(index);
211 bool LeftByref = left.Capture ? left.Capture->isByRef() : false;
212 bool RightByref = right.Capture ? right.Capture->isByRef() : false;
239 /// Determines if the given type is safe for constant capture in C++.
281 // invalid?), it's not clear what we should do. Maybe capture as
401 info.Captures[variable] = CGBlockInfo::Capture::makeConstant(constant);
405 // If we have a lifetime qualifier, honor it for capture purposes.
595 CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
596 if (capture.isConstant()) continue;
615 capture.getIndex());
630 capture.setCleanup(CGF.EHStack.stable_begin());
702 // If there is nothing to capture, we can emit this as a global block.
735 // Finally, capture all the values into the block.
750 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
753 if (capture.isConstant()) continue;
760 Builder.CreateStructGEP(blockAddr, capture.getIndex(),
767 // We need to use the capture from the enclosing block.
768 const CGBlockInfo::Capture &enclosingCapture =
774 "block.capture.addr");
776 // The lambda capture in a lambda's conversion-to-block-pointer is
799 src = Builder.CreateLoad(src, "byref.capture");
803 // Write that void* into the capture field.
849 EHScopeStack::stable_iterator cleanup = capture.getCleanup();
967 const CGBlockInfo::Capture &capture = BlockInfo->getCapture(variable);
970 if (capture.isConstant()) return LocalDeclMap[variable];
973 Builder.CreateStructGEP(LoadBlockStruct(), capture.getIndex(),
974 "block.capture.addr");
1157 // There might not be a capture for 'self', but if there is...
1159 const CGBlockInfo::Capture &capture = blockInfo.getCapture(self);
1162 capture.getIndex(),
1185 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1186 if (!capture.isConstant()) continue;
1194 Builder.CreateAlignedStore(capture.getConstant(), alloca, align);
1226 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1227 if (capture.isConstant()) {
1256 note.index = capture.getIndex();
1336 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1337 if (capture.isConstant()) continue;
1390 unsigned index = capture.getIndex();
1508 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1509 if (capture.isConstant()) continue;
1551 unsigned index = capture.getIndex();
1558 // If this is a __weak capture, emit the release directly.