[libcxx-commits] [libcxx] 08159e6 - [libc++] __uglify `[[clang::noescape]]` (#113280)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Oct 24 18:04:45 PDT 2024
Author: A. Jiang
Date: 2024-10-25T09:04:42+08:00
New Revision: 08159e6e117f5717d30230cb6568d7f3686b2c86
URL: https://github.com/llvm/llvm-project/commit/08159e6e117f5717d30230cb6568d7f3686b2c86
DIFF: https://github.com/llvm/llvm-project/commit/08159e6e117f5717d30230cb6568d7f3686b2c86.diff
LOG: [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
https://github.com/llvm/llvm-project/pull/91651#discussion_r1807852646.
Added:
Modified:
libcxx/include/__charconv/from_chars_floating_point.h
libcxx/include/__config
libcxx/src/charconv.cpp
Removed:
################################################################################
diff --git a/libcxx/include/__charconv/from_chars_floating_point.h b/libcxx/include/__charconv/from_chars_floating_point.h
index 2860b0e8da83af..5cd3fc4a41ea1d 100644
--- a/libcxx/include/__charconv/from_chars_floating_point.h
+++ b/libcxx/include/__charconv/from_chars_floating_point.h
@@ -37,13 +37,13 @@ struct __from_chars_result {
template <class _Fp>
_LIBCPP_EXPORTED_FROM_ABI __from_chars_result<_Fp> __from_chars_floating_point(
- [[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
+ _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
extern template __from_chars_result<float> __from_chars_floating_point(
- [[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
+ _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
extern template __from_chars_result<double> __from_chars_floating_point(
- [[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
+ _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
template <class _Fp>
_LIBCPP_HIDE_FROM_ABI from_chars_result
diff --git a/libcxx/include/__config b/libcxx/include/__config
index 4155fd33dabc44..fc09a97274d7c7 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -1163,6 +1163,12 @@ typedef __char32_t char32_t;
# define _LIBCPP_LIFETIMEBOUND
# endif
+# if __has_cpp_attribute(_Clang::__noescape__)
+# define _LIBCPP_NOESCAPE [[_Clang::__noescape__]]
+# else
+# define _LIBCPP_NOESCAPE
+# endif
+
# if __has_attribute(__nodebug__)
# define _LIBCPP_NODEBUG __attribute__((__nodebug__))
# else
diff --git a/libcxx/src/charconv.cpp b/libcxx/src/charconv.cpp
index 3fe0afec0e283c..5e8cb7d97703b4 100644
--- a/libcxx/src/charconv.cpp
+++ b/libcxx/src/charconv.cpp
@@ -77,13 +77,13 @@ to_chars_result to_chars(char* __first, char* __last, long double __value, chars
template <class _Fp>
__from_chars_result<_Fp> __from_chars_floating_point(
- [[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt) {
+ _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt) {
return std::__from_chars_floating_point_impl<_Fp>(__first, __last, __fmt);
}
template __from_chars_result<float> __from_chars_floating_point(
- [[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
+ _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
template __from_chars_result<double> __from_chars_floating_point(
- [[clang::noescape]] const char* __first, [[clang::noescape]] const char* __last, chars_format __fmt);
+ _LIBCPP_NOESCAPE const char* __first, _LIBCPP_NOESCAPE const char* __last, chars_format __fmt);
_LIBCPP_END_NAMESPACE_STD
More information about the libcxx-commits
mailing list