[libcxx-commits] [libcxx] 5d31360 - [libc++] Remove the inline namespace for std::filesystem in ABIv2 (#92971)

via libcxx-commits libcxx-commits at lists.llvm.org
Fri May 31 23:37:53 PDT 2024


Author: Nikolas Klauser
Date: 2024-06-01T08:37:49+02:00
New Revision: 5d31360d710a9aa2a1bee4ea9bcdc4cd0ea0a72f

URL: https://github.com/llvm/llvm-project/commit/5d31360d710a9aa2a1bee4ea9bcdc4cd0ea0a72f
DIFF: https://github.com/llvm/llvm-project/commit/5d31360d710a9aa2a1bee4ea9bcdc4cd0ea0a72f.diff

LOG: [libc++] Remove the inline namespace for std::filesystem in ABIv2 (#92971)

Added: 
    

Modified: 
    libcxx/include/__config
    libcxx/include/__configuration/abi.h
    libcxx/test/libcxx/input.output/filesystems/convert_file_time.pass.cpp

Removed: 
    


################################################################################
diff  --git a/libcxx/include/__config b/libcxx/include/__config
index 79422e8f6c5d1..4f4863619d6b9 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -621,10 +621,16 @@ typedef __char32_t char32_t;
                                inline namespace _LIBCPP_ABI_NAMESPACE {
 #  define _LIBCPP_END_NAMESPACE_STD }} _LIBCPP_POP_EXTENSION_DIAGNOSTICS
 
+#ifdef _LIBCPP_ABI_NO_FILESYSTEM_INLINE_NAMESPACE
+#  define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM _LIBCPP_BEGIN_NAMESPACE_STD namespace filesystem {
+#  define _LIBCPP_END_NAMESPACE_FILESYSTEM } _LIBCPP_END_NAMESPACE_STD
+#else
 #  define _LIBCPP_BEGIN_NAMESPACE_FILESYSTEM _LIBCPP_BEGIN_NAMESPACE_STD                                               \
                                              inline namespace __fs { namespace filesystem {
 
 #  define _LIBCPP_END_NAMESPACE_FILESYSTEM }} _LIBCPP_END_NAMESPACE_STD
+#endif
+
 // clang-format on
 
 #  if __has_attribute(__enable_if__)

diff  --git a/libcxx/include/__configuration/abi.h b/libcxx/include/__configuration/abi.h
index c570b9aaba48d..17aceb042f524 100644
--- a/libcxx/include/__configuration/abi.h
+++ b/libcxx/include/__configuration/abi.h
@@ -89,6 +89,8 @@
 // requires code not to make these assumptions.
 #  define _LIBCPP_ABI_USE_WRAP_ITER_IN_STD_ARRAY
 #  define _LIBCPP_ABI_USE_WRAP_ITER_IN_STD_STRING_VIEW
+// Dont' add an inline namespace for `std::filesystem`
+#    define _LIBCPP_ABI_NO_FILESYSTEM_INLINE_NAMESPACE
 #elif _LIBCPP_ABI_VERSION == 1
 #  if !(defined(_LIBCPP_OBJECT_FORMAT_COFF) || defined(_LIBCPP_OBJECT_FORMAT_XCOFF))
 // Enable compiling copies of now inline methods into the dylib to support

diff  --git a/libcxx/test/libcxx/input.output/filesystems/convert_file_time.pass.cpp b/libcxx/test/libcxx/input.output/filesystems/convert_file_time.pass.cpp
index 699bbfb9e6dc8..c501969c31167 100644
--- a/libcxx/test/libcxx/input.output/filesystems/convert_file_time.pass.cpp
+++ b/libcxx/test/libcxx/input.output/filesystems/convert_file_time.pass.cpp
@@ -30,7 +30,7 @@
 #endif
 
 using namespace std::chrono;
-namespace fs = std::__fs::filesystem;
+namespace fs = std::filesystem;
 using fs::file_time_type;
 using fs::detail::time_util;
 


        


More information about the libcxx-commits mailing list