Home | History | Annotate | Download | only in CodeGen

Lines Matching full:capture

190   /// A chunk of data that we actually have to capture in the block.
195 const BlockDecl::Capture *Capture; // null for 'this'
200 const BlockDecl::Capture *capture,
203 Capture(capture), Type(type) {}
207 if (!Capture)
210 info.Captures[Capture->getVariable()]
211 = CGBlockInfo::Capture::makeIndex(index);
219 bool LeftByref = left.Capture ? left.Capture->isByRef() : false;
220 bool RightByref = right.Capture ? right.Capture->isByRef() : false;
247 /// Determines if the given type is safe for constant capture in C++.
289 // invalid?), it's not clear what we should do. Maybe capture as
365 "Can't capture 'this' outside a method");
402 info.Captures[variable] = CGBlockInfo::Capture::makeConstant(constant);
406 // If we have a lifetime qualifier, honor it for capture purposes.
605 CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
606 if (capture.isConstant()) continue;
625 blockInfo.StructureType, blockInfo.Address, capture.getIndex());
640 capture.setCleanup(CGF.EHStack.stable_begin());
712 // If there is nothing to capture, we can emit this as a global block.
749 // Finally, capture all the values into the block.
762 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
765 if (capture.isConstant()) continue;
773 blockTy, blockAddr, capture.getIndex(), "block.captured");
779 // We need to use the capture from the enclosing block.
780 const CGBlockInfo::Capture &enclosingCapture =
786 "block.capture.addr");
788 // The lambda capture in a lambda's conversion-to-block-pointer is
813 "byref.capture");
817 // Write that void* into the capture field.
885 EHScopeStack::stable_iterator cleanup = capture.getCleanup();
1004 const CGBlockInfo::Capture &capture = BlockInfo->getCapture(variable);
1007 if (capture.isConstant()) return LocalDeclMap[variable];
1011 capture.getIndex(), "block.capture.addr");
1201 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1202 if (!capture.isConstant()) continue;
1210 Builder.CreateAlignedStore(capture.getConstant(), alloca, align);
1245 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1246 if (capture.isConstant()) {
1277 note.index = capture.getIndex();
1354 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1355 if (capture.isConstant()) continue;
1408 unsigned index = capture.getIndex();
1525 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1526 if (capture.isConstant()) continue;
1568 unsigned index = capture.getIndex();
1576 // If this is a __weak capture, emit the release directly.