@@ -58,12 +58,14 @@ swift::createIncrementBefore(SILValue ptr, SILInstruction *insertPt) {
58
58
// If Ptr is refcounted itself, create the strong_retain and
59
59
// return.
60
60
if (ptr->getType ().isReferenceCounted (builder.getModule ())) {
61
- if (ptr->getType ().is <UnownedStorageType>())
62
- return builder.createUnownedRetain (loc, ptr,
63
- builder.getDefaultAtomicity ());
64
- else
65
- return builder.createStrongRetain (loc, ptr,
66
- builder.getDefaultAtomicity ());
61
+ #define ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE (Name, ...) \
62
+ if (ptr->getType ().is <Name##StorageType>()) \
63
+ return builder.create ##Name##Retain (loc, ptr, \
64
+ builder.getDefaultAtomicity ());
65
+ #include " swift/AST/ReferenceStorage.def"
66
+
67
+ return builder.createStrongRetain (loc, ptr,
68
+ builder.getDefaultAtomicity ());
67
69
}
68
70
69
71
// Otherwise, create the retain_value.
@@ -85,12 +87,14 @@ swift::createDecrementBefore(SILValue ptr, SILInstruction *insertPt) {
85
87
86
88
// If ptr has reference semantics itself, create a strong_release.
87
89
if (ptr->getType ().isReferenceCounted (builder.getModule ())) {
88
- if (ptr->getType ().is <UnownedStorageType>())
89
- return builder.createUnownedRelease (loc, ptr,
90
+ #define ALWAYS_OR_SOMETIMES_LOADABLE_CHECKED_REF_STORAGE (Name, ...) \
91
+ if (ptr->getType ().is <Name##StorageType>()) \
92
+ return builder.create ##Name##Release (loc, ptr, \
90
93
builder.getDefaultAtomicity ());
91
- else
92
- return builder.createStrongRelease (loc, ptr,
93
- builder.getDefaultAtomicity ());
94
+ #include " swift/AST/ReferenceStorage.def"
95
+
96
+ return builder.createStrongRelease (loc, ptr,
97
+ builder.getDefaultAtomicity ());
94
98
}
95
99
96
100
// Otherwise create a release value.
0 commit comments