summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAzharuddin Mohammed <azharudd@codeaurora.org>2018-05-24 18:53:16 +0000
committerAzharuddin Mohammed <azharudd@codeaurora.org>2018-05-24 18:53:16 +0000
commit80968a9aba7560d7ccad36639ec4c9586d3f461c (patch)
tree7a419c03377d74cf95ec4a6f2aad8464446bdaad
parent54ddd7426eee9c818a783ac6d8bf3fabcd57660a (diff)
downloadbcm5719-llvm-80968a9aba7560d7ccad36639ec4c9586d3f461c.tar.gz
bcm5719-llvm-80968a9aba7560d7ccad36639ec4c9586d3f461c.zip
[cmake] [ARM] Check if VFP is supported before including any VFP builtins
Summary: rL325492 disables FPU features when using soft floating point (-mfloat-abi=soft), which is used internally when building for armv7. This causes errors with builtins that utililize VFP instructions. With this change we first check if VFP is enabled (by checking if the preprocessor macro __VFP_FP__ is defined) before including such builtins. Reviewers: rengolin, samsonov, compnerd, smeenai, javed.absar, peter.smith Reviewed By: peter.smith Subscribers: peter.smith, mgorny, kristof.beyls, chrib, llvm-commits Differential Revision: https://reviews.llvm.org/D47217 llvm-svn: 333216
-rw-r--r--compiler-rt/cmake/builtin-config-ix.cmake6
-rw-r--r--compiler-rt/lib/builtins/CMakeLists.txt19
2 files changed, 20 insertions, 5 deletions
diff --git a/compiler-rt/cmake/builtin-config-ix.cmake b/compiler-rt/cmake/builtin-config-ix.cmake
index a5704e5fed5..e3f13203321 100644
--- a/compiler-rt/cmake/builtin-config-ix.cmake
+++ b/compiler-rt/cmake/builtin-config-ix.cmake
@@ -48,6 +48,12 @@ set(ALL_BUILTIN_SUPPORTED_ARCH ${X86} ${X86_64} ${ARM32} ${ARM64}
include(CompilerRTUtils)
include(CompilerRTDarwinUtils)
+# If targeting ARM, check if VFP is supported.
+if(CAN_TARGET_arm)
+ string(REPLACE ";" " " _TARGET_arm_CFLAGS "${TARGET_arm_CFLAGS}")
+ check_compile_definition(__VFP_FP__ "${CMAKE_C_FLAGS} ${_TARGET_arm_CFLAGS}" COMPILER_RT_HAS_ARM_VFP)
+endif()
+
if(APPLE)
find_darwin_sdk_dir(DARWIN_osx_SYSROOT macosx)
diff --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index 5e7f2246787..2099c46efa4 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -394,11 +394,20 @@ set(arm_Thumb1_VFPv2_SOURCES
arm/unordsf2vfp.S)
set(arm_Thumb1_icache_SOURCES
arm/sync_synchronize.S)
-set(arm_Thumb1_SOURCES
- ${arm_Thumb1_JT_SOURCES}
- ${arm_Thumb1_SjLj_EH_SOURCES}
- ${arm_Thumb1_VFPv2_SOURCES}
- ${arm_Thumb1_icache_SOURCES})
+
+# If VFP is supported, include arm_Thumb1_SjLj_EH_SOURCES and
+# arm_Thumb1_VFPv2_SOURCES in arm_Thumb1_SOURCES.
+if(COMPILER_RT_HAS_ARM_VFP)
+ set(arm_Thumb1_SOURCES
+ ${arm_Thumb1_JT_SOURCES}
+ ${arm_Thumb1_SjLj_EH_SOURCES}
+ ${arm_Thumb1_VFPv2_SOURCES}
+ ${arm_Thumb1_icache_SOURCES})
+else()
+ set(arm_Thumb1_SOURCES
+ ${arm_Thumb1_JT_SOURCES}
+ ${arm_Thumb1_icache_SOURCES})
+endif()
if(MINGW)
set(arm_SOURCES
OpenPOWER on IntegriCloud