SIL: Add instructions to initialize and project block storage.

Add project_block_storage, to project the capture storage from within a block_storage, and init_block_storage_header, to represent filling out the block header.

Swift SVN r16358
This commit is contained in:
Joe Groff
2014-04-15 04:48:34 +00:00
parent ca7ed40cf0
commit acdc425dfb
14 changed files with 253 additions and 87 deletions

View File

@@ -106,6 +106,7 @@ static bool isTransitiveEscapeInst(SILInstruction *Inst) {
case ValueKind::EnumInst:
case ValueKind::IndexAddrInst:
case ValueKind::IndexRawPointerInst:
case ValueKind::InitBlockStorageHeaderInst:
case ValueKind::InitEnumDataAddrInst:
case ValueKind::InitExistentialInst:
case ValueKind::InitExistentialRefInst:
@@ -115,6 +116,7 @@ static bool isTransitiveEscapeInst(SILInstruction *Inst) {
case ValueKind::OpenExistentialRefInst:
case ValueKind::PartialApplyInst:
case ValueKind::PointerToAddressInst:
case ValueKind::ProjectBlockStorageInst:
case ValueKind::ProjectExistentialInst:
case ValueKind::ProjectExistentialRefInst:
case ValueKind::ExistentialMetatypeInst: