================
@@ -717,6 +717,32 @@ class CodeGenModule : public CodeGenTypeCache {
   /// Return true iff an Objective-C runtime has been configured.
   bool hasObjCRuntime() { return !!ObjCRuntime; }
 
+  /// Check if a direct method should use precondition thunks (exposed 
symbols).
+  /// This applies to ALL direct methods (including variadic).
+  /// Returns false if OMD is null or not a direct method.
+  bool usePreconditionThunk(const ObjCMethodDecl *OMD) const {
+    return OMD && OMD->isDirectMethod() &&
+           getLangOpts().ObjCRuntime.isNeXTFamily() &&
----------------
DataCorrupted wrote:

https://clang.llvm.org/doxygen/ObjCRuntime_8h_source.html#l00467

I didn't realize that. It appears `clang::ObjCRuntime::allowsDirectDispatch` is 
the best source of truth whether the runtime supports `objc_direct`; it also 
specified that GNUStep 2.2+ supports it.

I'll use `allowsDirectDispatch` for clarity. But I'll keep the  `isNeXTFamily` 
check to only support this feature in NeXT. The rational is that we want to 
validate the feature real quick but not worrying other runtimes, and migrate to 
GNU once we are confident.

https://github.com/llvm/llvm-project/pull/170616
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to