Switch libm to building with clang.
Bug: 16211965 Change-Id: I81ec9706a4f2b5e8a840508a0f711cd25a5826ca
This commit is contained in:
parent
9b491470ac
commit
aadc4b2ff0
@ -1,5 +1,5 @@
|
||||
ifneq ($(TARGET_USE_PRIVATE_LIBM),true)
|
||||
LOCAL_PATH:= $(call my-dir)
|
||||
LOCAL_PATH := $(call my-dir)
|
||||
|
||||
# TODO: this comes from from upstream's libc, not libm, but it's an
|
||||
# implementation detail that should have hidden visibility, so it needs
|
||||
@ -232,14 +232,21 @@ libm_ld_src_files += \
|
||||
# TODO: re-enable i387/e_sqrtf.S for x86, and maybe others.
|
||||
|
||||
libm_common_cflags := \
|
||||
-Wall \
|
||||
-Wextra \
|
||||
-Wunused \
|
||||
-Werror=pointer-to-int-cast \
|
||||
-Werror=int-to-pointer-cast \
|
||||
-Werror=type-limits \
|
||||
-Werror \
|
||||
-DFLT_EVAL_METHOD=0 \
|
||||
-std=c99 \
|
||||
-std=gnu99 \
|
||||
-include $(LOCAL_PATH)/freebsd-compat.h \
|
||||
-Wno-missing-braces \
|
||||
-Wno-parentheses \
|
||||
-Wno-sign-compare \
|
||||
-Wno-uninitialized \
|
||||
-Wno-unknown-pragmas \
|
||||
-Wno-unused-variable \
|
||||
-fvisibility=hidden \
|
||||
|
||||
# Workaround the GCC "(long)fn -> lfn" optimization bug which will result in
|
||||
@ -255,7 +262,8 @@ libm_ld_includes := $(LOCAL_PATH)/upstream-freebsd/lib/msun/ld128/
|
||||
# libm.a for target.
|
||||
#
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE:= libm
|
||||
LOCAL_MODULE := libm
|
||||
LOCAL_CLANG := true
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||
LOCAL_ARM_MODE := arm
|
||||
LOCAL_CFLAGS := $(libm_common_cflags)
|
||||
@ -287,7 +295,8 @@ include $(BUILD_STATIC_LIBRARY)
|
||||
# libm.so for target.
|
||||
#
|
||||
include $(CLEAR_VARS)
|
||||
LOCAL_MODULE:= libm
|
||||
LOCAL_MODULE := libm
|
||||
LOCAL_CLANG := true
|
||||
LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
|
||||
LOCAL_SYSTEM_SHARED_LIBRARIES := libc
|
||||
LOCAL_WHOLE_STATIC_LIBRARIES := libm
|
||||
|
@ -22,18 +22,21 @@
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
|
||||
#define _GNU_SOURCE 1
|
||||
#include <math.h>
|
||||
|
||||
#if !defined(__clang__)
|
||||
// Disable sincos optimization for all functions in this file,
|
||||
// otherwise gcc would generate infinite calls.
|
||||
// Refer to gcc PR46926.
|
||||
// -fno-builtin-sin or -fno-builtin-cos can disable sincos optimization,
|
||||
// but these two options do not work inside optimize pragma in-file.
|
||||
// Thus we just enforce -O0 when compiling this file.
|
||||
// clang doesn't implement this optimization anyway, so it doesn't need this.
|
||||
#pragma GCC optimize ("O0")
|
||||
#endif
|
||||
|
||||
void sincos(double x, double* p_sin, double* p_cos) {
|
||||
*p_sin = sin(x);
|
||||
|
Loading…
x
Reference in New Issue
Block a user