Skip to content

Commit 2f39a34

Browse files
committed
[ObjCARC] Check for declared intrinsics using ID instead of name (NFC)
1 parent fa74df3 commit 2f39a34

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

llvm/include/llvm/Analysis/ObjCARCAnalysisUtils.h

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -41,26 +41,34 @@ extern bool EnableARCOpts;
4141
/// Test if the given module looks interesting to run ARC optimization
4242
/// on.
4343
inline bool ModuleHasARC(const Module &M) {
44-
return M.getNamedValue("llvm.objc.retain") ||
45-
M.getNamedValue("llvm.objc.release") ||
46-
M.getNamedValue("llvm.objc.autorelease") ||
47-
M.getNamedValue("llvm.objc.retainAutoreleasedReturnValue") ||
48-
M.getNamedValue("llvm.objc.unsafeClaimAutoreleasedReturnValue") ||
49-
M.getNamedValue("llvm.objc.retainBlock") ||
50-
M.getNamedValue("llvm.objc.autoreleaseReturnValue") ||
51-
M.getNamedValue("llvm.objc.autoreleasePoolPush") ||
52-
M.getNamedValue("llvm.objc.loadWeakRetained") ||
53-
M.getNamedValue("llvm.objc.loadWeak") ||
54-
M.getNamedValue("llvm.objc.destroyWeak") ||
55-
M.getNamedValue("llvm.objc.storeWeak") ||
56-
M.getNamedValue("llvm.objc.initWeak") ||
57-
M.getNamedValue("llvm.objc.moveWeak") ||
58-
M.getNamedValue("llvm.objc.copyWeak") ||
59-
M.getNamedValue("llvm.objc.retainedObject") ||
60-
M.getNamedValue("llvm.objc.unretainedObject") ||
61-
M.getNamedValue("llvm.objc.unretainedPointer") ||
62-
M.getNamedValue("llvm.objc.clang.arc.noop.use") ||
63-
M.getNamedValue("llvm.objc.clang.arc.use");
44+
std::initializer_list<Intrinsic::ID> Intrinsics = {
45+
Intrinsic::objc_retain,
46+
Intrinsic::objc_release,
47+
Intrinsic::objc_autorelease,
48+
Intrinsic::objc_retainAutoreleasedReturnValue,
49+
Intrinsic::objc_retainBlock,
50+
Intrinsic::objc_autoreleaseReturnValue,
51+
Intrinsic::objc_autoreleasePoolPush,
52+
Intrinsic::objc_loadWeakRetained,
53+
Intrinsic::objc_loadWeak,
54+
Intrinsic::objc_destroyWeak,
55+
Intrinsic::objc_initWeak,
56+
Intrinsic::objc_copyWeak,
57+
Intrinsic::objc_retainedObject,
58+
Intrinsic::objc_unretainedObject,
59+
Intrinsic::objc_unretainedPointer,
60+
Intrinsic::objc_clang_arc_noop_use,
61+
Intrinsic::objc_clang_arc_use,
62+
};
63+
#ifndef NDEBUG
64+
for (Intrinsic::ID IID : Intrinsics)
65+
assert(!Intrinsic::isOverloaded(IID) &&
66+
"Can only check non-overloaded intrinsics");
67+
#endif
68+
for (Intrinsic::ID IID : Intrinsics)
69+
if (Intrinsic::getDeclarationIfExists(&M, IID))
70+
return true;
71+
return false;
6472
}
6573

6674
/// This is a wrapper around getUnderlyingObject which also knows how to

0 commit comments

Comments
 (0)