[llvm] 2f39a34 - [ObjCARC] Check for declared intrinsics using ID instead of name (NFC)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 10 08:24:54 PDT 2025


Author: Nikita Popov
Date: 2025-07-10T17:24:40+02:00
New Revision: 2f39a34673a21e3f04f3edc08bdfd1b544da0910

URL: https://github.com/llvm/llvm-project/commit/2f39a34673a21e3f04f3edc08bdfd1b544da0910
DIFF: https://github.com/llvm/llvm-project/commit/2f39a34673a21e3f04f3edc08bdfd1b544da0910.diff

LOG: [ObjCARC] Check for declared intrinsics using ID instead of name (NFC)

Added: 
    

Modified: 
    llvm/include/llvm/Analysis/ObjCARCAnalysisUtils.h

Removed: 
    


################################################################################
diff  --git a/llvm/include/llvm/Analysis/ObjCARCAnalysisUtils.h b/llvm/include/llvm/Analysis/ObjCARCAnalysisUtils.h
index 5ac6ad47f7799..0026239b96518 100644
--- a/llvm/include/llvm/Analysis/ObjCARCAnalysisUtils.h
+++ b/llvm/include/llvm/Analysis/ObjCARCAnalysisUtils.h
@@ -41,26 +41,34 @@ extern bool EnableARCOpts;
 /// Test if the given module looks interesting to run ARC optimization
 /// on.
 inline bool ModuleHasARC(const Module &M) {
-  return M.getNamedValue("llvm.objc.retain") ||
-         M.getNamedValue("llvm.objc.release") ||
-         M.getNamedValue("llvm.objc.autorelease") ||
-         M.getNamedValue("llvm.objc.retainAutoreleasedReturnValue") ||
-         M.getNamedValue("llvm.objc.unsafeClaimAutoreleasedReturnValue") ||
-         M.getNamedValue("llvm.objc.retainBlock") ||
-         M.getNamedValue("llvm.objc.autoreleaseReturnValue") ||
-         M.getNamedValue("llvm.objc.autoreleasePoolPush") ||
-         M.getNamedValue("llvm.objc.loadWeakRetained") ||
-         M.getNamedValue("llvm.objc.loadWeak") ||
-         M.getNamedValue("llvm.objc.destroyWeak") ||
-         M.getNamedValue("llvm.objc.storeWeak") ||
-         M.getNamedValue("llvm.objc.initWeak") ||
-         M.getNamedValue("llvm.objc.moveWeak") ||
-         M.getNamedValue("llvm.objc.copyWeak") ||
-         M.getNamedValue("llvm.objc.retainedObject") ||
-         M.getNamedValue("llvm.objc.unretainedObject") ||
-         M.getNamedValue("llvm.objc.unretainedPointer") ||
-         M.getNamedValue("llvm.objc.clang.arc.noop.use") ||
-         M.getNamedValue("llvm.objc.clang.arc.use");
+  std::initializer_list<Intrinsic::ID> Intrinsics = {
+      Intrinsic::objc_retain,
+      Intrinsic::objc_release,
+      Intrinsic::objc_autorelease,
+      Intrinsic::objc_retainAutoreleasedReturnValue,
+      Intrinsic::objc_retainBlock,
+      Intrinsic::objc_autoreleaseReturnValue,
+      Intrinsic::objc_autoreleasePoolPush,
+      Intrinsic::objc_loadWeakRetained,
+      Intrinsic::objc_loadWeak,
+      Intrinsic::objc_destroyWeak,
+      Intrinsic::objc_initWeak,
+      Intrinsic::objc_copyWeak,
+      Intrinsic::objc_retainedObject,
+      Intrinsic::objc_unretainedObject,
+      Intrinsic::objc_unretainedPointer,
+      Intrinsic::objc_clang_arc_noop_use,
+      Intrinsic::objc_clang_arc_use,
+  };
+#ifndef NDEBUG
+  for (Intrinsic::ID IID : Intrinsics)
+    assert(!Intrinsic::isOverloaded(IID) &&
+           "Can only check non-overloaded intrinsics");
+#endif
+  for (Intrinsic::ID IID : Intrinsics)
+    if (Intrinsic::getDeclarationIfExists(&M, IID))
+      return true;
+  return false;
 }
 
 /// This is a wrapper around getUnderlyingObject which also knows how to


        


More information about the llvm-commits mailing list