summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAzharuddin Mohammed <azharudd@codeaurora.org>2018-07-30 18:18:59 +0000
committerAzharuddin Mohammed <azharudd@codeaurora.org>2018-07-30 18:18:59 +0000
commitec6bdf8d4f5cb6b7dc9875b99c821db9a1bab0b7 (patch)
treeec1c0ca3aae20183786f40ca5ed9e49c9ea96355
parentf985f9812847628a107d72b6a8e38a6b0720c706 (diff)
downloadbcm5719-llvm-ec6bdf8d4f5cb6b7dc9875b99c821db9a1bab0b7.tar.gz
bcm5719-llvm-ec6bdf8d4f5cb6b7dc9875b99c821db9a1bab0b7.zip
[cmake] [ARM] Exclude any VFP builtins if VFP is not supported
Summary: rL325492 disables FPU features when using soft floating point (-mfloat-abi=soft), which is used internally when building for arm. This causes errors with builtins that utililize VFP instructions. With this change we check if VFP is enabled (by checking if the preprocessor macro __VFP_FP__ is defined), and exclude such builtins if it is not enabled. Reviewers: rengolin, samsonov, compnerd, smeenai, javed.absar, peter.smith Reviewed By: peter.smith Subscribers: delcypher, peter.smith, mgorny, kristof.beyls, chrib, llvm-commits Differential Revision: https://reviews.llvm.org/D47217 llvm-svn: 338284
-rw-r--r--compiler-rt/lib/builtins/CMakeLists.txt9
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index 75ff6640564..82332967b10 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -567,6 +567,15 @@ else ()
set(_arch "arm")
endif()
+ # For ARM archs, exclude any VFP builtins if VFP is not supported
+ if (${arch} MATCHES "^(arm|armhf|armv7|armv7s|armv7k|armv7m|armv7em)$")
+ string(REPLACE ";" " " _TARGET_${arch}_CFLAGS "${TARGET_${arch}_CFLAGS}")
+ check_compile_definition(__VFP_FP__ "${CMAKE_C_FLAGS} ${_TARGET_${arch}_CFLAGS}" COMPILER_RT_HAS_${arch}_VFP)
+ if(NOT COMPILER_RT_HAS_${arch}_VFP)
+ list(REMOVE_ITEM ${arch}_SOURCES ${arm_Thumb1_VFPv2_SOURCES} ${arm_Thumb1_SjLj_EH_SOURCES})
+ endif()
+ endif()
+
# Filter out generic versions of routines that are re-implemented in
# architecture specific manner. This prevents multiple definitions of the
# same symbols, making the symbol selection non-deterministic.
OpenPOWER on IntegriCloud