[llvm] Enable logf128 constant folding for hosts with 128bit long double (PR #96287)

Eli Friedman via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 16 16:36:05 PDT 2024


================
@@ -271,6 +260,64 @@ if(C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW)
   set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror=unguarded-availability-new")
 endif()
 
+function(logf128_test testname definition)
+  unset(LOGF128_TEST_RUN CACHE)
+  unset(LOGF128_TEST_COMPILE CACHE)
+  try_run(
+    LOGF128_TEST_RUN
+    LOGF128_TEST_COMPILE
+    ${CMAKE_CURRENT_BINARY_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}/logf128_${testname}.cpp
+    LINK_LIBRARIES m
+  )
+  if(LOGF128_TEST_RUN)
+    set (LLVM_HAS_LOGF128 true CACHE INTERNAL "")
+    set(${definition} true CACHE INTERNAL "")
+    message(STATUS "LLVM: found logf128 with type ${testname}")
+    add_compile_definitions(${definition})
+  endif()
+endfunction()
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/logf128_long_double.cpp"
+"
+extern \"C\" {
+long double logf128(long double);
----------------
efriedma-quic wrote:

For the initial patch, let's just handle the case where logf128 is actually declared in math.h.  The case where glibc actually provides logf128, but doesn't declare it, is a weird edge case, and I'd prefer to handle it in a followup patch.

https://github.com/llvm/llvm-project/pull/96287


More information about the llvm-commits mailing list