[libcxx-commits] [libcxx] e087d42 - [libc++] Add __strftime__ formatting attribute to locale base API __strftime (#179545)
via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Feb 12 10:13:36 PST 2026
Author: Louis Dionne
Date: 2026-02-12T13:13:31-05:00
New Revision: e087d428823e1d1d4c00c895bc3b637989764104
URL: https://github.com/llvm/llvm-project/commit/e087d428823e1d1d4c00c895bc3b637989764104
DIFF: https://github.com/llvm/llvm-project/commit/e087d428823e1d1d4c00c895bc3b637989764104.diff
LOG: [libc++] Add __strftime__ formatting attribute to locale base API __strftime (#179545)
Tip-of-trunk Clang seems to have started complaining about the missing
attribute.
Added:
Modified:
libcxx/include/__locale_dir/locale_base_api.h
libcxx/include/__locale_dir/support/aix.h
libcxx/include/__locale_dir/support/bsd_like.h
libcxx/include/__locale_dir/support/linux.h
libcxx/include/__locale_dir/support/newlib.h
libcxx/include/__locale_dir/support/no_locale/characters.h
libcxx/include/__locale_dir/support/windows.h
Removed:
################################################################################
diff --git a/libcxx/include/__locale_dir/locale_base_api.h b/libcxx/include/__locale_dir/locale_base_api.h
index 0474c1db359de..26a6069315b33 100644
--- a/libcxx/include/__locale_dir/locale_base_api.h
+++ b/libcxx/include/__locale_dir/locale_base_api.h
@@ -228,8 +228,8 @@ inline _LIBCPP_HIDE_FROM_ABI wint_t __towupper(wint_t __ch, __locale_t __loc) {
inline _LIBCPP_HIDE_FROM_ABI wint_t __towlower(wint_t __ch, __locale_t __loc) { return towlower_l(__ch, __loc); }
# endif
-inline _LIBCPP_HIDE_FROM_ABI size_t
-__strftime(char* __s, size_t __max, const char* __format, const tm* __tm, __locale_t __loc) {
+inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__strftime__, 3, 0) size_t
+ __strftime(char* __s, size_t __max, const char* __format, const tm* __tm, __locale_t __loc) {
return strftime_l(__s, __max, __format, __tm, __loc);
}
diff --git a/libcxx/include/__locale_dir/support/aix.h b/libcxx/include/__locale_dir/support/aix.h
index a216e28393799..8e1a4843900da 100644
--- a/libcxx/include/__locale_dir/support/aix.h
+++ b/libcxx/include/__locale_dir/support/aix.h
@@ -176,8 +176,8 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __
}
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
-inline _LIBCPP_HIDE_FROM_ABI
-size_t __strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
+inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__strftime__, 3, 0) size_t
+ __strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
return strftime_l(__s, __max, __format, __tm, __loc);
}
diff --git a/libcxx/include/__locale_dir/support/bsd_like.h b/libcxx/include/__locale_dir/support/bsd_like.h
index 6f533b4e1eab1..1a84c351eb9d1 100644
--- a/libcxx/include/__locale_dir/support/bsd_like.h
+++ b/libcxx/include/__locale_dir/support/bsd_like.h
@@ -133,8 +133,8 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __
}
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
-inline _LIBCPP_HIDE_FROM_ABI size_t
-__strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
+inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__strftime__, 3, 0) size_t
+ __strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
return ::strftime_l(__s, __max, __format, __tm, __loc);
}
diff --git a/libcxx/include/__locale_dir/support/linux.h b/libcxx/include/__locale_dir/support/linux.h
index 1a589be49bf1d..2fe3f6bb8124f 100644
--- a/libcxx/include/__locale_dir/support/linux.h
+++ b/libcxx/include/__locale_dir/support/linux.h
@@ -148,8 +148,8 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __
}
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
-inline _LIBCPP_HIDE_FROM_ABI size_t
-__strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
+inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__strftime__, 3, 0) size_t
+ __strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
return strftime_l(__s, __max, __format, __tm, __loc);
}
diff --git a/libcxx/include/__locale_dir/support/newlib.h b/libcxx/include/__locale_dir/support/newlib.h
index 05c8a449cfb05..6ea12c3bc3e1f 100644
--- a/libcxx/include/__locale_dir/support/newlib.h
+++ b/libcxx/include/__locale_dir/support/newlib.h
@@ -147,8 +147,8 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __
}
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
-inline _LIBCPP_HIDE_FROM_ABI
-size_t __strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
+inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__strftime__, 3, 0) size_t
+ __strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t __loc) {
return strftime_l(__s, __max, __format, __tm, __loc);
}
diff --git a/libcxx/include/__locale_dir/support/no_locale/characters.h b/libcxx/include/__locale_dir/support/no_locale/characters.h
index 73eba3ec542c7..e0755d1a7152a 100644
--- a/libcxx/include/__locale_dir/support/no_locale/characters.h
+++ b/libcxx/include/__locale_dir/support/no_locale/characters.h
@@ -80,8 +80,8 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __
}
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
-inline _LIBCPP_HIDE_FROM_ABI size_t
-__strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t) {
+inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__strftime__, 3, 0) size_t
+ __strftime(char* __s, size_t __max, const char* __format, const struct tm* __tm, __locale_t) {
return std::strftime(__s, __max, __format, __tm);
}
#endif // _LIBCPP_BUILDING_LIBRARY
diff --git a/libcxx/include/__locale_dir/support/windows.h b/libcxx/include/__locale_dir/support/windows.h
index 644ef68adf545..bacad6fa52e0c 100644
--- a/libcxx/include/__locale_dir/support/windows.h
+++ b/libcxx/include/__locale_dir/support/windows.h
@@ -230,10 +230,11 @@ inline _LIBCPP_HIDE_FROM_ABI size_t __wcsxfrm(wchar_t* __dest, const wchar_t* __
# endif // _LIBCPP_HAS_WIDE_CHARACTERS
# if defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x0800
-_LIBCPP_EXPORTED_FROM_ABI size_t __strftime(char*, size_t, const char*, const struct tm*, __locale_t);
+_LIBCPP_EXPORTED_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__strftime__, 3, 0) size_t
+ __strftime(char*, size_t, const char*, const struct tm*, __locale_t);
# else
-inline _LIBCPP_HIDE_FROM_ABI size_t
-__strftime(char* __ret, size_t __n, const char* __format, const struct tm* __tm, __locale_t __loc) {
+inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_ATTRIBUTE_FORMAT(__strftime__, 3, 0) size_t
+ __strftime(char* __ret, size_t __n, const char* __format, const struct tm* __tm, __locale_t __loc) {
return ::_strftime_l(__ret, __n, __format, __tm, __loc);
}
# endif
More information about the libcxx-commits
mailing list