mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[SilOpt] Add new layout type _TrivialStride and add pre-specialization suppport for it (#70308)
rdar://119329771 This layout allows adding pre-specializations for trivial types that have a different size, but the same stride. This is especially useful for collections, where the stride is the important factor.
This commit is contained in:
@@ -1480,6 +1480,8 @@ void Serializer::serializeGenericRequirements(
|
||||
if (layout->isKnownSizeTrivial()) {
|
||||
size = layout->getTrivialSizeInBits();
|
||||
alignment = layout->getAlignmentInBits();
|
||||
} else if (layout->isTrivialStride()) {
|
||||
size = layout->getTrivialStrideInBits();
|
||||
}
|
||||
LayoutRequirementKind rawKind = LayoutRequirementKind::UnknownLayout;
|
||||
switch (layout->getKind()) {
|
||||
@@ -1510,6 +1512,9 @@ void Serializer::serializeGenericRequirements(
|
||||
case LayoutConstraintKind::BridgeObject:
|
||||
rawKind = LayoutRequirementKind::BridgeObject;
|
||||
break;
|
||||
case LayoutConstraintKind::TrivialStride:
|
||||
rawKind = LayoutRequirementKind::TrivialStride;
|
||||
break;
|
||||
}
|
||||
scratch.push_back(rawKind);
|
||||
scratch.push_back(addTypeRef(req.getFirstType()));
|
||||
|
||||
Reference in New Issue
Block a user