@@ -659,8 +659,7 @@ namespace {
659659 void consume (IRGenFunction &IGF, Explosion &src,
660660 Atomicity atomicity,
661661 SILType T) const override {
662- if (ElementsAreABIAccessible &&
663- tryEmitConsumeUsingDeinit (IGF, src, T)) {
662+ if (tryEmitConsumeUsingDeinit (IGF, src, T)) {
664663 return ;
665664 }
666665
@@ -682,8 +681,7 @@ namespace {
682681
683682 void destroy (IRGenFunction &IGF, Address addr, SILType T,
684683 bool isOutlined) const override {
685- if (ElementsAreABIAccessible &&
686- tryEmitDestroyUsingDeinit (IGF, addr, T)) {
684+ if (tryEmitDestroyUsingDeinit (IGF, addr, T)) {
687685 return ;
688686 }
689687
@@ -2858,8 +2856,7 @@ namespace {
28582856
28592857 void consume (IRGenFunction &IGF, Explosion &src,
28602858 Atomicity atomicity, SILType T) const override {
2861- if (ElementsAreABIAccessible &&
2862- tryEmitConsumeUsingDeinit (IGF, src, T)) {
2859+ if (tryEmitConsumeUsingDeinit (IGF, src, T)) {
28632860 return ;
28642861 }
28652862
@@ -2987,8 +2984,7 @@ namespace {
29872984
29882985 void destroy (IRGenFunction &IGF, Address addr, SILType T,
29892986 bool isOutlined) const override {
2990- if (ElementsAreABIAccessible &&
2991- tryEmitDestroyUsingDeinit (IGF, addr, T)) {
2987+ if (tryEmitDestroyUsingDeinit (IGF, addr, T)) {
29922988 return ;
29932989 }
29942990
@@ -4899,8 +4895,7 @@ namespace {
48994895
49004896 void consume (IRGenFunction &IGF, Explosion &src,
49014897 Atomicity atomicity, SILType T) const override {
4902- if (ElementsAreABIAccessible &&
4903- tryEmitConsumeUsingDeinit (IGF, src, T)) {
4898+ if (tryEmitConsumeUsingDeinit (IGF, src, T)) {
49044899 return ;
49054900 }
49064901
@@ -5259,8 +5254,7 @@ namespace {
52595254
52605255 void destroy (IRGenFunction &IGF, Address addr, SILType T,
52615256 bool isOutlined) const override {
5262- if (ElementsAreABIAccessible &&
5263- tryEmitDestroyUsingDeinit (IGF, addr, T)) {
5257+ if (tryEmitDestroyUsingDeinit (IGF, addr, T)) {
52645258 return ;
52655259 }
52665260
@@ -6919,11 +6913,8 @@ SingletonEnumImplStrategy::completeEnumTypeLayout(TypeConverter &TC,
69196913 auto alignment = fixedEltTI.getFixedAlignment ();
69206914 applyLayoutAttributes (TC.IGM , theEnum, /* fixed*/ true , alignment);
69216915
6922- IsABIAccessible_t isABIAccessible = IsABIAccessible;
6923- if (Type.getASTType ()->isNoncopyable () &&
6924- !IGM.getSILModule ().isTypeMetadataAccessible (Type.getASTType ()))
6925- isABIAccessible = IsNotABIAccessible;
6926-
6916+ auto isABIAccessible = isTypeABIAccessibleIfFixedSize (TC.IGM ,
6917+ Type.getASTType ());
69276918 return getFixedEnumTypeInfo (enumTy,
69286919 fixedEltTI.getFixedSize (),
69296920 fixedEltTI.getSpareBits (),
@@ -7086,11 +7077,8 @@ TypeInfo *SinglePayloadEnumImplStrategy::completeFixedLayout(
70867077 auto copyable = !theEnum->canBeCopyable ()
70877078 ? IsNotCopyable : IsCopyable;
70887079
7089- IsABIAccessible_t isABIAccessible = IsABIAccessible;
7090- if (Type.getASTType ()->isNoncopyable () &&
7091- !IGM.getSILModule ().isTypeMetadataAccessible (Type.getASTType ()))
7092- isABIAccessible = IsNotABIAccessible;
7093-
7080+ auto isABIAccessible = isTypeABIAccessibleIfFixedSize (TC.IGM ,
7081+ Type.getASTType ());
70947082 getFixedEnumTypeInfo (
70957083 enumTy, Size (sizeWithTag), spareBits.build (), alignment,
70967084 deinit & payloadTI.isTriviallyDestroyable (ResilienceExpansion::Maximal),
@@ -7303,11 +7291,8 @@ MultiPayloadEnumImplStrategy::completeFixedLayout(TypeConverter &TC,
73037291
73047292 applyLayoutAttributes (TC.IGM , theEnum, /* fixed*/ true , worstAlignment);
73057293
7306- IsABIAccessible_t isABIAccessible = IsABIAccessible;
7307- if (Type.getASTType ()->isNoncopyable () &&
7308- !IGM.getSILModule ().isTypeMetadataAccessible (Type.getASTType ()))
7309- isABIAccessible = IsNotABIAccessible;
7310-
7294+ auto isABIAccessible = isTypeABIAccessibleIfFixedSize (TC.IGM ,
7295+ Type.getASTType ());
73117296 getFixedEnumTypeInfo (enumTy, Size (sizeWithTag), std::move (spareBits),
73127297 worstAlignment, isTriviallyDestroyable, isBT,
73137298 isCopyable, isABIAccessible);
0 commit comments