Home | History | Annotate | Download | only in CodeGen

Lines Matching defs:Capture

164   /// A chunk of data that we actually have to capture in the block.
168 const BlockDecl::Capture *Capture; // null for 'this'
172 const BlockDecl::Capture *capture,
174 : Alignment(align), Size(size), Capture(capture), Type(type) {}
178 if (!Capture)
181 info.Captures[Capture->getVariable()]
182 = CGBlockInfo::Capture::makeIndex(index);
192 /// Determines if the given type is safe for constant capture in C++.
234 // invalid?), it's not clear what we should do. Maybe capture as
348 info.Captures[variable] = CGBlockInfo::Capture::makeConstant(constant);
352 // If we have a lifetime qualifier, honor it for capture purposes.
527 CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
528 if (capture.isConstant()) continue;
547 capture.getIndex());
562 capture.setCleanup(CGF.EHStack.stable_begin());
634 // If there is nothing to capture, we can emit this as a global block.
666 // Finally, capture all the values into the block.
681 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
684 if (capture.isConstant()) continue;
691 Builder.CreateStructGEP(blockAddr, capture.getIndex(),
698 // We need to use the capture from the enclosing block.
699 const CGBlockInfo::Capture &enclosingCapture =
705 "block.capture.addr");
707 // The lambda capture in a lambda's conversion-to-block-pointer is
722 src = Builder.CreateLoad(src, "byref.capture");
726 // Write that void* into the capture field.
772 EHScopeStack::stable_iterator cleanup = capture.getCleanup();
890 const CGBlockInfo::Capture &capture = BlockInfo->getCapture(variable);
893 if (capture.isConstant()) return LocalDeclMap[variable];
896 Builder.CreateStructGEP(LoadBlockStruct(), capture.getIndex(),
897 "block.capture.addr");
1080 // There might not be a capture for 'self', but if there is...
1082 const CGBlockInfo::Capture &capture = blockInfo.getCapture(self);
1084 capture.getIndex(),
1094 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1095 if (!capture.isConstant()) continue;
1103 Builder.CreateStore(capture.getConstant(), alloca, align);
1133 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1134 if (capture.isConstant()) {
1159 note.index = capture.getIndex();
1233 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1234 if (capture.isConstant()) continue;
1272 unsigned index = capture.getIndex();
1346 const CGBlockInfo::Capture &capture = blockInfo.getCapture(variable);
1347 if (capture.isConstant()) continue;
1384 unsigned index = capture.getIndex();
1391 // If this is a __weak capture, emit the release directly.