Skip to content

Commit e374553

Browse files
Merge pull request #15401 from aschwaighofer/irgen_fix_resilient_tag_number_emission
IRGen: Only emit resilient tag numbers for resilient enums
2 parents 312771e + 680ef34 commit e374553

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

lib/IRGen/GenEnum.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6106,7 +6106,7 @@ void IRGenModule::emitEnumDecl(EnumDecl *theEnum) {
61066106

61076107
emitFieldMetadataRecord(theEnum);
61086108

6109-
if (isResilient(theEnum, ResilienceExpansion::Maximal))
6109+
if (!isResilient(theEnum, ResilienceExpansion::Minimal))
61106110
return;
61116111

61126112
// Emit resilient tag indices.

test/IRGen/enum_resilience.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
11

22
// RUN: %empty-directory(%t)
33
// RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../Inputs/resilient_struct.swift
4+
// RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/../Inputs/resilient_struct.swift
5+
// RUN: %target-swift-frontend -emit-ir -enable-resilience -module-name=resilient_enum -I %t %S/../Inputs/resilient_enum.swift | %FileCheck %s --check-prefix=ENUM_RES
6+
// RUN: %target-swift-frontend -emit-ir -module-name=resilient_enum -I %t %S/../Inputs/resilient_enum.swift | %FileCheck %s --check-prefix=ENUM_NOT_RES
47
// RUN: %target-swift-frontend -emit-module -enable-resilience -emit-module-path=%t/resilient_enum.swiftmodule -module-name=resilient_enum -I %t %S/../Inputs/resilient_enum.swift
58
// RUN: %target-swift-frontend -module-name enum_resilience -I %t -emit-ir -enable-resilience %s | %FileCheck %s -DINT=i%target-ptrsize
69
// RUN: %target-swift-frontend -module-name enum_resilience -I %t -emit-ir -enable-resilience -O %s
710

811
import resilient_enum
912
import resilient_struct
1013

14+
// ENUM_RES: @"$S14resilient_enum6MediumO8PamphletyA2CcACmFWC" = {{.*}}constant i32 0
15+
// ENUM_RES: @"$S14resilient_enum6MediumO8PostcardyAC0A7_struct4SizeVcACmFWC" = {{.*}}constant i32 1
16+
// ENUM_RES: @"$S14resilient_enum6MediumO5PaperyA2CmFWC" = {{.*}}constant i32 2
17+
// ENUM_RES: @"$S14resilient_enum6MediumO6CanvasyA2CmFWC" = {{.*}}constant i32 3
18+
19+
// ENUM_NOT_RES-NOT: @"$S14resilient_enum6MediumO8PamphletyA2CcACmFWC" =
20+
// ENUM_NOT_RES-NOT: @"$S14resilient_enum6MediumO8PostcardyAC0A7_struct4SizeVcACmFWC" =
21+
// ENUM_NOT_RES-NOT: @"$S14resilient_enum6MediumO5PaperyA2CmFWC" =
22+
// ENUM_NOT_RES-NOT: @"$S14resilient_enum6MediumO6CanvasyA2CmFWC" =
23+
1124
// CHECK: %T15enum_resilience5ClassC = type <{ %swift.refcounted }>
1225
// CHECK: %T15enum_resilience9ReferenceV = type <{ %T15enum_resilience5ClassC* }>
1326

0 commit comments

Comments
 (0)