Skip to content

Commit 08159e6

Browse files
[libc++] __uglify [[clang::noescape]] (#113280)
Identifiers `clang` and `noescape` are not reserved by the C++ standard, so perhaps we need to use the equivalent reserved forms. Also changes the occurrences of that attribute to a macro, following the convention for `[[_Clang::__lifetimebound__]]`. Addresses #91651 (comment).
1 parent c4248fa commit 08159e6

File tree

3 files changed

+12
-6
lines changed

3 files changed

+12
-6
lines changed

libcxx/include/__charconv/from_chars_floating_point.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ struct __from_chars_result {
3737

3838
template <class _Fp>
3939
_LIBCPP_EXPORTED_FROM_ABI __from_chars_result<_Fp> __from_chars_floating_point(
40-
[[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
40+
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
4141

4242
extern template __from_chars_result<float> __from_chars_floating_point(
43-
[[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
43+
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
4444

4545
extern template __from_chars_result<double> __from_chars_floating_point(
46-
[[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
46+
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
4747

4848
template <class _Fp>
4949
_LIBCPP_HIDE_FROM_ABI from_chars_result

libcxx/include/__config

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,12 @@ typedef __char32_t char32_t;
11631163
# define _LIBCPP_LIFETIMEBOUND
11641164
# endif
11651165

1166+
# if __has_cpp_attribute(_Clang::__noescape__)
1167+
# define _LIBCPP_NOESCAPE [[_Clang::__noescape__]]
1168+
# else
1169+
# define _LIBCPP_NOESCAPE
1170+
# endif
1171+
11661172
# if __has_attribute(__nodebug__)
11671173
# define _LIBCPP_NODEBUG __attribute__((__nodebug__))
11681174
# else

libcxx/src/charconv.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ to_chars_result to_chars(char* __first, char* __last, long double __value, chars
7777

7878
template <class _Fp>
7979
__from_chars_result<_Fp> __from_chars_floating_point(
80-
[[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt) {
80+
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt) {
8181
return std::__from_chars_floating_point_impl<_Fp>(__first, __last, __fmt);
8282
}
8383

8484
template __from_chars_result<float> __from_chars_floating_point(
85-
[[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
85+
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
8686

8787
template __from_chars_result<double> __from_chars_floating_point(
88-
[[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
88+
_LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
8989
_LIBCPP_END_NAMESPACE_STD

0 commit comments

Comments
 (0)