mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
SIL: Give project_box a field index operand.
Allow project_box to get the address of any field in a multi-field box.
This commit is contained in:
@@ -802,7 +802,6 @@ bool SILDeserializer::readSILInstruction(
|
||||
ONETYPE_ONEOPERAND_INST(ExistentialMetatype)
|
||||
ONETYPE_ONEOPERAND_INST(AllocValueBuffer)
|
||||
ONETYPE_ONEOPERAND_INST(ProjectValueBuffer)
|
||||
ONETYPE_ONEOPERAND_INST(ProjectBox)
|
||||
ONETYPE_ONEOPERAND_INST(ProjectExistentialBox)
|
||||
ONETYPE_ONEOPERAND_INST(DeallocValueBuffer)
|
||||
#undef ONETYPE_ONEOPERAND_INST
|
||||
@@ -846,6 +845,17 @@ bool SILDeserializer::readSILInstruction(
|
||||
ONEOPERAND_ONETYPE_INST(ProjectBlockStorage)
|
||||
#undef ONEOPERAND_ONETYPE_INST
|
||||
|
||||
case ValueKind::ProjectBoxInst: {
|
||||
assert(RecordKind == SIL_ONE_TYPE_ONE_OPERAND &&
|
||||
"Layout should be OneTypeOneOperand.");
|
||||
ResultVal = Builder.createProjectBox(Loc,
|
||||
getLocalValue(ValID,
|
||||
getSILType(MF->getType(TyID2),
|
||||
(SILValueCategory)TyCategory2)),
|
||||
TyID);
|
||||
break;
|
||||
}
|
||||
|
||||
case ValueKind::PointerToAddressInst: {
|
||||
assert(RecordKind == SIL_ONE_TYPE_ONE_OPERAND &&
|
||||
"Layout should be OneTypeOneOperand.");
|
||||
|
||||
Reference in New Issue
Block a user