Skip to content

Commit 7f45e39

Browse files
committed
[semantic-arc] Update parsing of Swift function names in LLVM to use LLVMSwift.def.
1 parent 21ec110 commit 7f45e39

File tree

1 file changed

+28
-67
lines changed

1 file changed

+28
-67
lines changed

lib/LLVMPasses/LLVMARCOpts.h

Lines changed: 28 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -42,77 +42,38 @@ inline RT_Kind classifyInstruction(const llvm::Instruction &I) {
4242
if (F == 0) return RT_Unknown;
4343

4444
return llvm::StringSwitch<RT_Kind>(F->getName())
45-
.Case("swift_retain", RT_Retain)
46-
.Case("swift_retain_n", RT_RetainN)
47-
.Case("swift_release", RT_Release)
48-
.Case("swift_release_n", RT_ReleaseN)
49-
.Case("swift_allocObject", RT_AllocObject)
50-
.Case("objc_release", RT_ObjCRelease)
51-
.Case("objc_retain", RT_ObjCRetain)
52-
.Case("swift_retainUnowned", RT_RetainUnowned)
53-
.Case("swift_checkUnowned", RT_CheckUnowned)
54-
.Case("swift_bridgeObjectRetain", RT_BridgeRetain)
55-
.Case("swift_bridgeObjectRetain_n", RT_BridgeRetainN)
56-
.Case("swift_bridgeObjectRelease", RT_BridgeRelease)
57-
.Case("swift_bridgeObjectRelease_n", RT_BridgeReleaseN)
58-
.Case("swift_unknownRetain", RT_UnknownRetain)
59-
.Case("swift_unknownRetain_n", RT_UnknownRetainN)
60-
.Case("swift_unknownRelease", RT_UnknownRelease)
61-
.Case("swift_unknownRelease_n", RT_UnknownReleaseN)
62-
.Case("__swift_fixLifetime", RT_FixLifetime)
45+
#define SWIFT_FUNC(Name, MemBehavior, TextualName) \
46+
.Case("swift_" #TextualName, RT_ ## Name)
47+
#define OBJC_FUNC(Name, MemBehavior, TextualName) \
48+
.Case("objc_" #TextualName, RT_ ## Name)
49+
#define SWIFT_INTERNAL_FUNC_NEVER_NONATOMIC(Name, MemBehavior, TextualName) \
50+
.Case("__swift_" #TextualName, RT_ ## Name)
51+
#include "LLVMSwift.def"
52+
6353
#if defined(SWIFT_WRAPPER_PREFIX)
64-
.Case(SWIFT_WRAPPER_NAME("swift_retain"), RT_Retain)
65-
.Case(SWIFT_WRAPPER_NAME("swift_retain_n"), RT_RetainN)
66-
.Case(SWIFT_WRAPPER_NAME("swift_release"), RT_Release)
67-
.Case(SWIFT_WRAPPER_NAME("swift_release_n"), RT_ReleaseN)
68-
.Case(SWIFT_WRAPPER_NAME("swift_allocObject"), RT_AllocObject)
69-
.Case(SWIFT_WRAPPER_NAME("objc_release"), RT_ObjCRelease)
70-
.Case(SWIFT_WRAPPER_NAME("objc_retain"), RT_ObjCRetain)
71-
.Case(SWIFT_WRAPPER_NAME("swift_retainUnowned"), RT_RetainUnowned)
72-
.Case(SWIFT_WRAPPER_NAME("swift_checkUnowned"), RT_CheckUnowned)
73-
.Case(SWIFT_WRAPPER_NAME("swift_bridgeObjectRetain"), RT_BridgeRetain)
74-
.Case(SWIFT_WRAPPER_NAME("swift_bridgeObjectRetain_n"), RT_BridgeRetainN)
75-
.Case(SWIFT_WRAPPER_NAME("swift_bridgeObjectRelease"), RT_BridgeRelease)
76-
.Case(SWIFT_WRAPPER_NAME("swift_bridgeObjectRelease_n"), RT_BridgeReleaseN)
77-
.Case(SWIFT_WRAPPER_NAME("swift_unknownRetain"), RT_UnknownRetain)
78-
.Case(SWIFT_WRAPPER_NAME("swift_unknownRetain_n"), RT_UnknownRetainN)
79-
.Case(SWIFT_WRAPPER_NAME("swift_unknownRelease"), RT_UnknownRelease)
80-
.Case(SWIFT_WRAPPER_NAME("swift_unknownRelease_n"), RT_UnknownReleaseN)
54+
#define SWIFT_FUNC(Name, MemBehavior, TextualName) \
55+
.Case(SWIFT_WRAPPER_NAME("swift_" #TextualName), RT_ ## Name)
56+
#define OBJC_FUNC(Name, MemBehavior, TextualName) \
57+
.Case(SWIFT_WRAPPER_NAME("objc_" #TextualName), RT_ ## Name)
58+
#define SWIFT_INTERNAL_FUNC_NEVER_NONATOMIC(Name, MemBehavior, TextualName)
59+
#include "LLVMSwift.def"
8160
#endif
61+
8262
// Support non-atomic versions of reference counting entry points.
83-
.Case("swift_nonatomic_retain", RT_Retain)
84-
.Case("swift_nonatomic_retain_n", RT_RetainN)
85-
.Case("swift_nonatomic_release", RT_Release)
86-
.Case("swift_nonatomic_release_n", RT_ReleaseN)
87-
.Case("objc_nonatomic_release", RT_ObjCRelease)
88-
.Case("objc_nonatomic_retain", RT_ObjCRetain)
89-
.Case("swift_nonatomic_retainUnowned", RT_RetainUnowned)
90-
.Case("swift_nonatomic_checkUnowned", RT_CheckUnowned)
91-
.Case("swift_nonatomic_bridgeObjectRetain", RT_BridgeRetain)
92-
.Case("swift_nonatomic_bridgeObjectRetain_n", RT_BridgeRetainN)
93-
.Case("swift_nonatomic_bridgeObjectRelease", RT_BridgeRelease)
94-
.Case("swift_nonatomic_bridgeObjectRelease_n", RT_BridgeReleaseN)
95-
.Case("swift_nonatomic_unknownRetain", RT_UnknownRetain)
96-
.Case("swift_nonatomic_unknownRetain_n", RT_UnknownRetainN)
97-
.Case("swift_nonatomic_unknownRelease", RT_UnknownRelease)
98-
.Case("swift_nonatomic_unknownRelease_n", RT_UnknownReleaseN)
63+
#define SWIFT_FUNC(Name, MemBehavior, TextualName) \
64+
.Case("swift_nonatomic_" #TextualName, RT_ ## Name)
65+
#define OBJC_FUNC(Name, MemBehavior, TextualName) \
66+
.Case("objc_nonatomic_" #TextualName, RT_ ## Name)
67+
#define SWIFT_INTERNAL_FUNC_NEVER_NONATOMIC(Name, MemBehavior, TextualName)
68+
#include "LLVMSwift.def"
69+
9970
#if defined(SWIFT_WRAPPER_PREFIX)
100-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_retain"), RT_Retain)
101-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_retain_n"), RT_RetainN)
102-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_release"), RT_Release)
103-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_release_n"), RT_ReleaseN)
104-
.Case(SWIFT_WRAPPER_NAME("objc_nonatomic_release"), RT_ObjCRelease)
105-
.Case(SWIFT_WRAPPER_NAME("objc_nonatomic_retain"), RT_ObjCRetain)
106-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_retainUnowned"), RT_RetainUnowned)
107-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_checkUnowned"), RT_CheckUnowned)
108-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_bridgeObjectRetain"), RT_BridgeRetain)
109-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_bridgeObjectRetain_n"), RT_BridgeRetainN)
110-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_bridgeObjectRelease"), RT_BridgeRelease)
111-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_bridgeObjectRelease_n"), RT_BridgeReleaseN)
112-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_unknownRetain"), RT_UnknownRetain)
113-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_unknownRetain_n"), RT_UnknownRetainN)
114-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_unknownRelease"), RT_UnknownRelease)
115-
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_unknownRelease_n"), RT_UnknownReleaseN)
71+
#define SWIFT_FUNC(Name, MemBehavior, TextualName) \
72+
.Case(SWIFT_WRAPPER_NAME("swift_nonatomic_" #TextualName), RT_ ## Name)
73+
#define OBJC_FUNC(Name, MemBehavior, TextualName) \
74+
.Case(SWIFT_WRAPPER_NAME("objc_nonatomic_" #TextualName), RT_ ## Name)
75+
#define SWIFT_INTERNAL_FUNC_NEVER_NONATOMIC(Name, MemBehavior, TextualName)
76+
#include "LLVMSwift.def"
11677
#endif
11778
.Default(RT_Unknown);
11879
}

0 commit comments

Comments
 (0)