[libcxx-commits] [PATCH] D114805: [NFC][libc++] Recognize int128 as an ABI affecting property

David Tenty via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Fri Mar 4 20:41:44 PST 2022


daltenty updated this revision to Diff 413193.
daltenty added a comment.

Rebase to trigger CI


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D114805/new/

https://reviews.llvm.org/D114805

Files:
  libcxx/CMakeLists.txt
  libcxx/include/__config
  libcxx/include/__config_site.in
  libcxx/lib/abi/CMakeLists.txt
  libcxx/lib/abi/arm64-apple-darwin.libcxxabi.v1.stable.exceptions.nonew.debug.incomplete.abilist
  libcxx/lib/abi/arm64-apple-darwin.libcxxabi.v1.stable.exceptions.nonew.debug.incomplete.int128.abilist
  libcxx/lib/abi/x86_64-apple-darwin.libcxxabi.v1.stable.exceptions.nonew.debug.incomplete.abilist
  libcxx/lib/abi/x86_64-apple-darwin.libcxxabi.v1.stable.exceptions.nonew.debug.incomplete.int128.abilist
  libcxx/lib/abi/x86_64-unknown-linux-gnu.libcxxabi.v1.stable.exceptions.nonew.debug.incomplete.abilist
  libcxx/lib/abi/x86_64-unknown-linux-gnu.libcxxabi.v1.stable.exceptions.nonew.debug.incomplete.int128.abilist


Index: libcxx/lib/abi/CMakeLists.txt
===================================================================
--- libcxx/lib/abi/CMakeLists.txt
+++ libcxx/lib/abi/CMakeLists.txt
@@ -7,7 +7,7 @@
 # Right now, this is done by using the ABI identifier as the filename containing
 # the list of symbols exported by libc++ for that configuration, however we could
 # make it more sophisticated if the number of ABI-affecting parameters grew.
-function(cxx_abi_list_identifier result triple abi_library abi_version unstable exceptions new_delete_in_libcxx debug_mode_enabled allow_incomplete)
+function(cxx_abi_list_identifier result triple abi_library abi_version unstable exceptions new_delete_in_libcxx debug_mode_enabled allow_incomplete using_int128)
   set(abi_properties)
 
   if ("${triple}" MATCHES "darwin")
@@ -45,6 +45,11 @@
   else()
     list(APPEND abi_properties "noincomplete")
   endif()
+  if (${using_int128})
+    list(APPEND abi_properties "int128")
+  else()
+    list(APPEND abi_properties "no_int128")
+  endif()
 
   list(JOIN abi_properties "." tmp)
   set(${result} "${tmp}" PARENT_SCOPE)
@@ -64,6 +69,7 @@
   "${LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS}"
   "${LIBCXX_ENABLE_DEBUG_MODE_SUPPORT}"
   "${LIBCXX_ENABLE_INCOMPLETE_FEATURES}"
+  "${LIBCXX_USE_INT128}"
 )
 
 if (TARGET cxx_shared)
Index: libcxx/include/__config_site.in
===================================================================
--- libcxx/include/__config_site.in
+++ libcxx/include/__config_site.in
@@ -32,6 +32,7 @@
 #cmakedefine _LIBCPP_HAS_NO_WIDE_CHARACTERS
 #cmakedefine _LIBCPP_HAS_NO_INCOMPLETE_FORMAT
 #cmakedefine _LIBCPP_HAS_NO_INCOMPLETE_RANGES
+#cmakedefine _LIBCPP_HAS_NO_INT128
 
 // __USE_MINGW_ANSI_STDIO gets redefined on MinGW
 #ifdef __clang__
Index: libcxx/include/__config
===================================================================
--- libcxx/include/__config
+++ libcxx/include/__config
@@ -821,10 +821,6 @@
 typedef unsigned int   char32_t;
 #endif
 
-#ifndef __SIZEOF_INT128__
-#define _LIBCPP_HAS_NO_INT128
-#endif
-
 #ifdef _LIBCPP_CXX03_LANG
 # define static_assert(...) _Static_assert(__VA_ARGS__)
 # define decltype(...) __decltype(__VA_ARGS__)
Index: libcxx/CMakeLists.txt
===================================================================
--- libcxx/CMakeLists.txt
+++ libcxx/CMakeLists.txt
@@ -78,6 +78,7 @@
 #===============================================================================
 # Setup CMake Options
 #===============================================================================
+include(CheckCXXSymbolExists)
 include(CMakeDependentOption)
 include(HandleCompilerRT)
 
@@ -325,6 +326,10 @@
 option(LIBCXX_HERMETIC_STATIC_LIBRARY
   "Do not export any symbols from the static library." OFF)
 
+check_cxx_symbol_exists(__SIZEOF_INT128__ "" LIBCXX_HAVE_INT128)
+cmake_dependent_option(LIBCXX_USE_INT128   "Use __int128 in the library" ON
+"LIBCXX_HAVE_INT128" OFF)
+
 #===============================================================================
 # Check option configurations
 #===============================================================================
@@ -883,6 +888,7 @@
 # easier to grep for target specific flags once the feature is complete.
 config_define_if_not(LIBCXX_ENABLE_INCOMPLETE_FEATURES _LIBCPP_HAS_NO_INCOMPLETE_FORMAT)
 config_define_if_not(LIBCXX_ENABLE_INCOMPLETE_FEATURES _LIBCPP_HAS_NO_INCOMPLETE_RANGES)
+config_define_if_not(LIBCXX_USE_INT128 _LIBCPP_HAS_NO_INT128)
 
 if (LIBCXX_ABI_DEFINES)
   set(abi_defines)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D114805.413193.patch
Type: text/x-patch
Size: 3489 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20220305/982ab626/attachment.bin>


More information about the libcxx-commits mailing list