diff options
author | Aditya Kumar <1894981+hiraditya@users.noreply.github.com> | 2020-08-12 22:11:50 -0700 |
---|---|---|
committer | Aditya Kumar <1894981+hiraditya@users.noreply.github.com> | 2020-08-13 09:28:04 -0700 |
commit | d54f5979bb829e3864016798cc1cb5eecf39c4e0 (patch) | |
tree | fd40438678be767c0dff45ffc40b9e383ac7ab1a /libcxxabi/include | |
parent | 11446b02c7ec258a55de0259c3447d9ce5d5ac63 (diff) | |
download | llvm-d54f5979bb829e3864016798cc1cb5eecf39c4e0.tar.gz |
Add cold attribute to one time construction APIs
_cxa_guard_acquire is used for only one purpose,
namely guarding local static variable initialization,
and since that purpose is definitionally cold,
it should be attributed as cold
Reviewed By: ldionne
Reviewers: mclow.lists, ldionne, jfb, yfeldblum
Differential Revision: https://reviews.llvm.org/D85873
Diffstat (limited to 'libcxxabi/include')
-rw-r--r-- | libcxxabi/include/cxxabi.h | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/libcxxabi/include/cxxabi.h b/libcxxabi/include/cxxabi.h index d21d3e1e2331..29e28a69a919 100644 --- a/libcxxabi/include/cxxabi.h +++ b/libcxxabi/include/cxxabi.h @@ -21,6 +21,7 @@ #define _LIBCPPABI_VERSION 1002 #define _LIBCXXABI_NORETURN __attribute__((noreturn)) +#define _LIBCXXABI_ALWAYS_COLD __attribute__((cold)) #ifdef __cplusplus @@ -78,13 +79,13 @@ extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_NORETURN void __cxa_deleted_virtual(void); // 3.3.2 One-time Construction API #if defined(_LIBCXXABI_GUARD_ABI_ARM) -extern _LIBCXXABI_FUNC_VIS int __cxa_guard_acquire(uint32_t *); -extern _LIBCXXABI_FUNC_VIS void __cxa_guard_release(uint32_t *); -extern _LIBCXXABI_FUNC_VIS void __cxa_guard_abort(uint32_t *); +extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_ALWAYS_COLD int __cxa_guard_acquire(uint32_t *); +extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_ALWAYS_COLD void __cxa_guard_release(uint32_t *); +extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_ALWAYS_COLD void __cxa_guard_abort(uint32_t *); #else -extern _LIBCXXABI_FUNC_VIS int __cxa_guard_acquire(uint64_t *); -extern _LIBCXXABI_FUNC_VIS void __cxa_guard_release(uint64_t *); -extern _LIBCXXABI_FUNC_VIS void __cxa_guard_abort(uint64_t *); +extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_ALWAYS_COLD int __cxa_guard_acquire(uint64_t *); +extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_ALWAYS_COLD void __cxa_guard_release(uint64_t *); +extern _LIBCXXABI_FUNC_VIS _LIBCXXABI_ALWAYS_COLD void __cxa_guard_abort(uint64_t *); #endif // 3.3.3 Array Construction and Destruction API |