[compiler-rt] ec516ff - Fix __isOSVersionAtLeast for Android (#80496)

via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 20 21:46:29 PST 2024


Author: Jooyung Han
Date: 2024-02-20T21:46:25-08:00
New Revision: ec516ff3e6122069b36f32a6db8bb3dc672133fc

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

LOG: Fix __isOSVersionAtLeast for Android (#80496)

Allow pre-release APIs on pre-release devices.

The current implementation requires __ANDROID_API_FUTURE__ to use new
APIs on pre-release system. This makes it hard to maintain the codebase
because it should be switched a concrete version (e.g. __ANDROID_API_X__
on release of X).

Instead, we can just allow pre-release APIs on pre-release system
without mandating the major version of __ANDROID_API_FUTURE__.

Note that this doesn't make API guards just no-op in pre-release builds.
We can still rely on its compile-time checks and it still works as
expected with release builds. Even with pre-release builds, it's the
same as before because we would pass __ANDROID_API_FUTURE__ to make the
calls anyway.

Added: 
    

Modified: 
    compiler-rt/lib/builtins/os_version_check.c

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/builtins/os_version_check.c b/compiler-rt/lib/builtins/os_version_check.c
index 182eabe7a6ae28..01fae834ab2191 100644
--- a/compiler-rt/lib/builtins/os_version_check.c
+++ b/compiler-rt/lib/builtins/os_version_check.c
@@ -316,8 +316,8 @@ int32_t __isOSVersionAtLeast(int32_t Major, int32_t Minor, int32_t Subminor) {
   static pthread_once_t once = PTHREAD_ONCE_INIT;
   pthread_once(&once, readSystemProperties);
 
-  return SdkVersion >= Major ||
-         (IsPreRelease && Major == __ANDROID_API_FUTURE__);
+  // Allow all on pre-release. Note that we still rely on compile-time checks.
+  return SdkVersion >= Major || IsPreRelease;
 }
 
 #else


        


More information about the llvm-commits mailing list