@@ -58,12 +58,14 @@ swift::createIncrementBefore(SILValue ptr, SILInstruction *insertPt) {
5858 // If Ptr is refcounted itself, create the strong_retain and
5959 // return.
6060 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 ());
6769 }
6870
6971 // Otherwise, create the retain_value.
@@ -85,12 +87,14 @@ swift::createDecrementBefore(SILValue ptr, SILInstruction *insertPt) {
8587
8688 // If ptr has reference semantics itself, create a strong_release.
8789 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, \
9093 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 ());
9498 }
9599
96100 // Otherwise create a release value.
0 commit comments