From 3598d53b423fdd151b63021c482b27ce7070e826 Mon Sep 17 00:00:00 2001 From: Andrew Hsieh Date: Fri, 16 Jan 2015 14:24:04 -0800 Subject: [PATCH] Drop clang version check for __builtin_isinf and __builtin_isnan This CL unconditionally removes the existance of __builtin_isinf and __builtin_isnan from math.h for clang, because (unlike other math functions) clang doesn't like those to be declared. See LLVM bugzilla entry: http://llvm.org/bugs/show_bug.cgi?id=20958 The reason for decorating all math functions with __attribute__((pcs("aapcs"))) is to offer developers the ability to compile their code with hardfp and still link Android's libm.so which follows softfp calling convention. Before issue 20958 is fixed, those who want clang to compile their code with hardfp in NDK has to go all the way hard, ie. 1) LOCAL_CFLAGS += -mhard-float -D_NDK_MATH_NO_SOFTFP=1 Note that _NDK_MATH_NO_SOFTFP=1 remove __attribute__((pcs("aapcs"))) for all math functions 2) LOCAL_LDLIBS += -lm_hard # link libm_hard.a recompiled with -mhard-float instead of bionic libm.so Change-Id: Ie2f95e73e58e1574e8cadbcab92a5209d94448e1 --- ndk/platforms/android-13/include/math.h | 5 ++--- ndk/platforms/android-18/include/math.h | 5 ++--- ndk/platforms/android-21/include/math.h | 4 +--- ndk/platforms/android-3/include/math.h | 5 ++--- ndk/platforms/android-9/include/math.h | 5 ++--- 5 files changed, 9 insertions(+), 15 deletions(-) diff --git a/ndk/platforms/android-13/include/math.h b/ndk/platforms/android-13/include/math.h index 8dcf87f81..e9577cb6c 100644 --- a/ndk/platforms/android-13/include/math.h +++ b/ndk/platforms/android-13/include/math.h @@ -528,10 +528,9 @@ double __builtin_fma(double, double, double) __NDK_FPABI_MATH__; double __builtin_hypot(double, double) __NDK_FPABI_MATH__; int __builtin_ilogb(double) __NDK_FPABI_MATH__ __pure2; /* int __builtin_isinf(double) __NDK_FPABI_MATH__ __pure2; */ -#if !defined(__clang__) || __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 7) +#if !defined(__clang__) +/* See upstream bug http://llvm.org/bugs/show_bug.cgi?id=20958 */ int __builtin_isnan(double) __NDK_FPABI_MATH__ __pure2; -#else -/* clang < 3.5 has faulty prototype for __builtin_isnan */ #endif double __builtin_lgamma(double) __NDK_FPABI_MATH__; long long __builtin_llrint(double) __NDK_FPABI_MATH__; diff --git a/ndk/platforms/android-18/include/math.h b/ndk/platforms/android-18/include/math.h index 41d91f1c7..7fdeb61d7 100644 --- a/ndk/platforms/android-18/include/math.h +++ b/ndk/platforms/android-18/include/math.h @@ -533,10 +533,9 @@ double __builtin_fma(double, double, double) __NDK_FPABI_MATH__; double __builtin_hypot(double, double) __NDK_FPABI_MATH__; int __builtin_ilogb(double) __NDK_FPABI_MATH__ __pure2; /* int __builtin_isinf(double) __NDK_FPABI_MATH__ __pure2; */ -#if !defined(__clang__) || __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 7) +#if !defined(__clang__) +/* See upstream bug http://llvm.org/bugs/show_bug.cgi?id=20958 */ int __builtin_isnan(double) __NDK_FPABI_MATH__ __pure2; -#else -/* clang < 3.5 has faulty prototype for __builtin_isnan */ #endif double __builtin_lgamma(double) __NDK_FPABI_MATH__; long long __builtin_llrint(double) __NDK_FPABI_MATH__; diff --git a/ndk/platforms/android-21/include/math.h b/ndk/platforms/android-21/include/math.h index e872388c2..2a8e51c7e 100644 --- a/ndk/platforms/android-21/include/math.h +++ b/ndk/platforms/android-21/include/math.h @@ -512,12 +512,10 @@ double __builtin_expm1(double) __NDK_FPABI_MATH__; double __builtin_fma(double, double, double) __NDK_FPABI_MATH__; double __builtin_hypot(double, double) __NDK_FPABI_MATH__; int __builtin_ilogb(double) __NDK_FPABI_MATH__ __pure2; -#if !defined(__clang__) || __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 7) +#if !defined(__clang__) /* See upstream bug http://llvm.org/bugs/show_bug.cgi?id=20958 */ int __builtin_isinf(double) __NDK_FPABI_MATH__ __pure2; int __builtin_isnan(double) __NDK_FPABI_MATH__ __pure2; -#else -/* clang < 3.5 has faulty prototype for __builtin_isnan */ #endif double __builtin_lgamma(double) __NDK_FPABI_MATH__; long long __builtin_llrint(double) __NDK_FPABI_MATH__; diff --git a/ndk/platforms/android-3/include/math.h b/ndk/platforms/android-3/include/math.h index df69c17cf..98fb5591f 100644 --- a/ndk/platforms/android-3/include/math.h +++ b/ndk/platforms/android-3/include/math.h @@ -523,10 +523,9 @@ double __builtin_fma(double, double, double) __NDK_FPABI_MATH__; double __builtin_hypot(double, double) __NDK_FPABI_MATH__; int __builtin_ilogb(double) __NDK_FPABI_MATH__ __pure2; /* int __builtin_isinf(double) __NDK_FPABI_MATH__ __pure2; */ -#if !defined(__clang__) || __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 7) +#if !defined(__clang__) +/* See upstream bug http://llvm.org/bugs/show_bug.cgi?id=20958 */ int __builtin_isnan(double) __NDK_FPABI_MATH__ __pure2; -#else -/* clang < 3.5 has faulty prototype for __builtin_isnan */ #endif double __builtin_lgamma(double) __NDK_FPABI_MATH__; long long __builtin_llrint(double) __NDK_FPABI_MATH__; diff --git a/ndk/platforms/android-9/include/math.h b/ndk/platforms/android-9/include/math.h index a453362d9..897accd07 100644 --- a/ndk/platforms/android-9/include/math.h +++ b/ndk/platforms/android-9/include/math.h @@ -523,10 +523,9 @@ double __builtin_fma(double, double, double) __NDK_FPABI_MATH__; double __builtin_hypot(double, double) __NDK_FPABI_MATH__; int __builtin_ilogb(double) __NDK_FPABI_MATH__ __pure2; /* int __builtin_isinf(double) __NDK_FPABI_MATH__ __pure2; */ -#if !defined(__clang__) || __clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 7) +#if !defined(__clang__) +/* See upstream bug http://llvm.org/bugs/show_bug.cgi?id=20958 */ int __builtin_isnan(double) __NDK_FPABI_MATH__ __pure2; -#else -/* clang < 3.5 has faulty prototype for __builtin_isnan */ #endif double __builtin_lgamma(double) __NDK_FPABI_MATH__; long long __builtin_llrint(double) __NDK_FPABI_MATH__;