[libcxx-commits] [libcxx] [libc++] Add missing hide-from-ABI annotations on virtual functions (PR #85439)
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Fri Mar 15 10:50:03 PDT 2024
https://github.com/ldionne created https://github.com/llvm/llvm-project/pull/85439
None
>From b640e0f1936291d1e226c439c3f6ba3caead61f0 Mon Sep 17 00:00:00 2001
From: Louis Dionne <ldionne.2 at gmail.com>
Date: Fri, 15 Mar 2024 13:47:27 -0400
Subject: [PATCH] [libc++] Add missing hide-from-ABI annotations on virtual
functions
---
libcxx/include/__functional/function.h | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/libcxx/include/__functional/function.h b/libcxx/include/__functional/function.h
index 416c26a0c73f2e..be36504359a123 100644
--- a/libcxx/include/__functional/function.h
+++ b/libcxx/include/__functional/function.h
@@ -768,7 +768,7 @@ class __func<_Rp1 (^)(_ArgTypes1...), _Alloc, _Rp(_ArgTypes...)> : public __base
{
}
- virtual __base<_Rp(_ArgTypes...)>* __clone() const {
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual __base<_Rp(_ArgTypes...)>* __clone() const {
_LIBCPP_ASSERT_INTERNAL(
false,
"Block pointers are just pointers, so they should always fit into "
@@ -777,9 +777,11 @@ class __func<_Rp1 (^)(_ArgTypes1...), _Alloc, _Rp(_ArgTypes...)> : public __base
return nullptr;
}
- virtual void __clone(__base<_Rp(_ArgTypes...)>* __p) const { ::new ((void*)__p) __func(__f_); }
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void __clone(__base<_Rp(_ArgTypes...)>* __p) const {
+ ::new ((void*)__p) __func(__f_);
+ }
- virtual void destroy() _NOEXCEPT {
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void destroy() _NOEXCEPT {
# ifndef _LIBCPP_HAS_OBJC_ARC
if (__f_)
_Block_release(__f_);
@@ -787,7 +789,7 @@ class __func<_Rp1 (^)(_ArgTypes1...), _Alloc, _Rp(_ArgTypes...)> : public __base
__f_ = 0;
}
- virtual void destroy_deallocate() _NOEXCEPT {
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual void destroy_deallocate() _NOEXCEPT {
_LIBCPP_ASSERT_INTERNAL(
false,
"Block pointers are just pointers, so they should always fit into "
@@ -795,16 +797,20 @@ class __func<_Rp1 (^)(_ArgTypes1...), _Alloc, _Rp(_ArgTypes...)> : public __base
"never be invoked.");
}
- virtual _Rp operator()(_ArgTypes&&... __arg) { return std::__invoke(__f_, std::forward<_ArgTypes>(__arg)...); }
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual _Rp operator()(_ArgTypes&&... __arg) {
+ return std::__invoke(__f_, std::forward<_ArgTypes>(__arg)...);
+ }
# ifndef _LIBCPP_HAS_NO_RTTI
- virtual const void* target(type_info const& __ti) const _NOEXCEPT {
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual const void* target(type_info const& __ti) const _NOEXCEPT {
if (__ti == typeid(__func::__block_type))
return &__f_;
return (const void*)nullptr;
}
- virtual const std::type_info& target_type() const _NOEXCEPT { return typeid(__func::__block_type); }
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual const std::type_info& target_type() const _NOEXCEPT {
+ return typeid(__func::__block_type);
+ }
# endif // _LIBCPP_HAS_NO_RTTI
};
More information about the libcxx-commits
mailing list