From bcca95da5ea3e3ff8a829f9e25004ac6b2464928 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Mon, 19 Jun 2023 12:58:51 -0400 Subject: [PATCH] [libc++] Refactor the selection of string's ABI in __config This doesn't change the selection, but it expands the conditions to add comments and make it clearer what's happening. It also removes a -Wundef instance when we checked __ARM_ARCH_7K__ >= 2 without checking that it is defined in the first place. Differential Revision: https://reviews.llvm.org/D153413 --- libcxx/include/__config | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libcxx/include/__config b/libcxx/include/__config index 37fb7f7..7e65dc6 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -460,8 +460,17 @@ typedef __char32_t char32_t; # if defined(_LIBCPP_COMPILER_CLANG_BASED) -# if defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) && (!defined(__arm__) || __ARM_ARCH_7K__ >= 2) -# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT +# if defined(__APPLE__) +# if defined(__i386__) || defined(__x86_64__) +// use old string layout on x86_64 and i386 +# elif defined(__arm__) +// use old string layout on arm (which does not include aarch64/arm64), except on watch ABIs +# if defined(__ARM_ARCH_7K__) && __ARM_ARCH_7K__ >= 2 +# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT +# endif +# else +# define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT +# endif # endif // Objective-C++ features (opt-in) -- 2.7.4