[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
This commit is contained in:
Louis Dionne 2023-06-19 12:58:51 -04:00
parent 400b3c47c2
commit bcca95da5e

View File

@ -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)