[sil] Add tuple_addr_constructor an instruction that can be used to initial a tuple in memory from individual address and object components.

This commit just introduces the instruction. In a subsequent commit, I am going
to add support to SILGen to emit this. This ensures that when we assign into a
tuple var we initialize it with one instruction instead of doing it in pieces.
The problem with doing it in pieces is that when one is emitting diagnostics it
looks semantically like SILGen actually is emitting code for initializing in
pieces which could be an error.
This commit is contained in:
Michael Gottesman
2023-11-02 15:19:59 -07:00
parent c47e94336e
commit 6a65c7829e
23 changed files with 643 additions and 102 deletions

View File

@@ -1043,6 +1043,7 @@ InlineCost swift::instructionInlineCost(SILInstruction &I) {
case SILInstructionKind::CopyBlockWithoutEscapingInst:
case SILInstructionKind::CopyAddrInst:
case SILInstructionKind::ExplicitCopyAddrInst:
case SILInstructionKind::TupleAddrConstructorInst:
case SILInstructionKind::MarkUnresolvedMoveAddrInst:
case SILInstructionKind::RetainValueInst:
case SILInstructionKind::RetainValueAddrInst: