summaryrefslogtreecommitdiff
path: root/libcxxabi/include
diff options
context:
space:
mode:
authorAditya Kumar <1894981+hiraditya@users.noreply.github.com>2020-08-12 22:11:50 -0700
committerAditya Kumar <1894981+hiraditya@users.noreply.github.com>2020-08-13 09:28:04 -0700
commitd54f5979bb829e3864016798cc1cb5eecf39c4e0 (patch)
treefd40438678be767c0dff45ffc40b9e383ac7ab1a /libcxxabi/include
parent11446b02c7ec258a55de0259c3447d9ce5d5ac63 (diff)
downloadllvm-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.h13
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