aboutsummaryrefslogtreecommitdiff
path: root/libcxx/include/experimental
diff options
context:
space:
mode:
authorNikolas Klauser <nikolasklauser@berlin.de>2023-01-23 10:27:14 +0100
committerNikolas Klauser <nikolasklauser@berlin.de>2023-04-16 15:23:23 +0200
commit83ce139721260d176773d811f576289370f3313c (patch)
treeb99f8b52d8bdd04d9b6f42caa71008691369714e /libcxx/include/experimental
parentb34ca0851a5209a10c0ca285c000a18073677891 (diff)
downloadllvm-83ce139721260d176773d811f576289370f3313c.zip
llvm-83ce139721260d176773d811f576289370f3313c.tar.gz
llvm-83ce139721260d176773d811f576289370f3313c.tar.bz2
[libc++] Add hide_from_abi check for classes
We already have a clang-tidy check for making sure that `_LIBCPP_HIDE_FROM_ABI` is on free functions. This patch extends this to class members. The places where we don't check for `_LIBCPP_HIDE_FROM_ABI` are classes for which we have an instantiation in the library. Reviewed By: ldionne, Mordante, #libc Spies: jplehr, mikhail.ramalho, sstefan1, libcxx-commits, krytarowski, miyuki, smeenai Differential Revision: https://reviews.llvm.org/D142332
Diffstat (limited to 'libcxx/include/experimental')
-rw-r--r--libcxx/include/experimental/iterator12
-rw-r--r--libcxx/include/experimental/memory_resource18
-rw-r--r--libcxx/include/experimental/propagate_const62
-rw-r--r--libcxx/include/experimental/simd82
4 files changed, 87 insertions, 87 deletions
diff --git a/libcxx/include/experimental/iterator b/libcxx/include/experimental/iterator
index e47314a..a5e3dff 100644
--- a/libcxx/include/experimental/iterator
+++ b/libcxx/include/experimental/iterator
@@ -82,15 +82,15 @@ public:
typedef void pointer;
typedef void reference;
- ostream_joiner(ostream_type& __os, _Delim&& __d)
+ _LIBCPP_HIDE_FROM_ABI ostream_joiner(ostream_type& __os, _Delim&& __d)
: __output_iter_(_VSTD::addressof(__os)), __delim_(_VSTD::move(__d)), __first_(true) {}
- ostream_joiner(ostream_type& __os, const _Delim& __d)
+ _LIBCPP_HIDE_FROM_ABI ostream_joiner(ostream_type& __os, const _Delim& __d)
: __output_iter_(_VSTD::addressof(__os)), __delim_(__d), __first_(true) {}
template<typename _Tp>
- ostream_joiner& operator=(const _Tp& __v)
+ _LIBCPP_HIDE_FROM_ABI ostream_joiner& operator=(const _Tp& __v)
{
if (!__first_)
*__output_iter_ << __delim_;
@@ -99,9 +99,9 @@ public:
return *this;
}
- ostream_joiner& operator*() _NOEXCEPT { return *this; }
- ostream_joiner& operator++() _NOEXCEPT { return *this; }
- ostream_joiner& operator++(int) _NOEXCEPT { return *this; }
+ _LIBCPP_HIDE_FROM_ABI ostream_joiner& operator*() _NOEXCEPT { return *this; }
+ _LIBCPP_HIDE_FROM_ABI ostream_joiner& operator++() _NOEXCEPT { return *this; }
+ _LIBCPP_HIDE_FROM_ABI ostream_joiner& operator++(int) _NOEXCEPT { return *this; }
private:
ostream_type* __output_iter_;
diff --git a/libcxx/include/experimental/memory_resource b/libcxx/include/experimental/memory_resource
index dcb61e3..4dc9845 100644
--- a/libcxx/include/experimental/memory_resource
+++ b/libcxx/include/experimental/memory_resource
@@ -106,7 +106,7 @@ class _LIBCPP_DEPCREATED_MEMORY_RESOURCE("memory_resource") _LIBCPP_TYPE_VIS mem
// 8.5.2, memory.resource.public
public:
- virtual ~memory_resource() = default;
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL virtual ~memory_resource() = default;
_LIBCPP_INLINE_VISIBILITY
void* allocate(size_t __bytes, size_t __align = __max_align)
@@ -174,7 +174,7 @@ public:
: __res_(__r)
{}
- polymorphic_allocator(polymorphic_allocator const &) = default;
+ _LIBCPP_HIDE_FROM_ABI polymorphic_allocator(polymorphic_allocator const &) = default;
template <class _Tp>
_LIBCPP_INLINE_VISIBILITY
@@ -362,9 +362,9 @@ class _LIBCPP_TEMPLATE_VIS __resource_adaptor_imp
public:
typedef _CharAlloc allocator_type;
- __resource_adaptor_imp() = default;
- __resource_adaptor_imp(__resource_adaptor_imp const &) = default;
- __resource_adaptor_imp(__resource_adaptor_imp &&) = default;
+ _LIBCPP_HIDE_FROM_ABI __resource_adaptor_imp() = default;
+ _LIBCPP_HIDE_FROM_ABI __resource_adaptor_imp(__resource_adaptor_imp const &) = default;
+ _LIBCPP_HIDE_FROM_ABI __resource_adaptor_imp(__resource_adaptor_imp &&) = default;
// 8.7.2, memory.resource.adaptor.ctor
@@ -378,7 +378,7 @@ public:
: __alloc_(_VSTD::move(__a))
{}
- __resource_adaptor_imp &
+ _LIBCPP_HIDE_FROM_ABI __resource_adaptor_imp &
operator=(__resource_adaptor_imp const &) = default;
_LIBCPP_INLINE_VISIBILITY
@@ -387,7 +387,7 @@ public:
// 8.7.3, memory.resource.adaptor.mem
private:
- void * do_allocate(size_t __bytes, size_t) override
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL void * do_allocate(size_t __bytes, size_t) override
{
if (__bytes > __max_size())
__throw_bad_array_new_length();
@@ -395,7 +395,7 @@ private:
return __alloc_.allocate(__s);
}
- void do_deallocate(void * __p, size_t __bytes, size_t) override
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL void do_deallocate(void * __p, size_t __bytes, size_t) override
{
_LIBCPP_ASSERT(__bytes <= __max_size(),
"do_deallocate called for size which exceeds the maximum allocation size");
@@ -403,7 +403,7 @@ private:
__alloc_.deallocate((_ValueType*)__p, __s);
}
- bool do_is_equal(memory_resource const & __other) const _NOEXCEPT override {
+ _LIBCPP_HIDE_FROM_ABI_VIRTUAL bool do_is_equal(memory_resource const & __other) const _NOEXCEPT override {
__resource_adaptor_imp const * __p
= dynamic_cast<__resource_adaptor_imp const *>(&__other);
return __p ? __alloc_ == __p->__alloc_ : false;
diff --git a/libcxx/include/experimental/propagate_const b/libcxx/include/experimental/propagate_const
index 3efec5d..acdc16c 100644
--- a/libcxx/include/experimental/propagate_const
+++ b/libcxx/include/experimental/propagate_const
@@ -167,25 +167,25 @@ public:
private:
template <class _Up>
- static _LIBCPP_CONSTEXPR element_type* __get_pointer(_Up* __u)
+ static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR element_type* __get_pointer(_Up* __u)
{
return __u;
}
template <class _Up>
- static _LIBCPP_CONSTEXPR element_type* __get_pointer(_Up& __u)
+ static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR element_type* __get_pointer(_Up& __u)
{
return __get_pointer(__u.get());
}
template <class _Up>
- static _LIBCPP_CONSTEXPR const element_type* __get_pointer(const _Up* __u)
+ static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR const element_type* __get_pointer(const _Up* __u)
{
return __u;
}
template <class _Up>
- static _LIBCPP_CONSTEXPR const element_type* __get_pointer(const _Up& __u)
+ static _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR const element_type* __get_pointer(const _Up& __u)
{
return __get_pointer(__u.get());
}
@@ -207,22 +207,22 @@ public:
template <class _Up> friend _LIBCPP_CONSTEXPR const _Up& ::_VSTD_LFTS_V2::get_underlying(const propagate_const<_Up>& __pu) _NOEXCEPT;
template <class _Up> friend _LIBCPP_CONSTEXPR _Up& ::_VSTD_LFTS_V2::get_underlying(propagate_const<_Up>& __pu) _NOEXCEPT;
- _LIBCPP_CONSTEXPR propagate_const() = default;
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const() = default;
propagate_const(const propagate_const&) = delete;
- _LIBCPP_CONSTEXPR propagate_const(propagate_const&&) = default;
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const(propagate_const&&) = default;
template <class _Up, enable_if_t<!is_convertible<_Up, _Tp>::value &&
is_constructible<_Tp, _Up&&>::value,bool> = true>
- explicit _LIBCPP_CONSTEXPR propagate_const(propagate_const<_Up>&& __pu)
+ explicit _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const(propagate_const<_Up>&& __pu)
: __t_(std::move(_VSTD_LFTS_V2::get_underlying(__pu)))
{
}
template <class _Up, enable_if_t<is_convertible<_Up&&, _Tp>::value &&
is_constructible<_Tp, _Up&&>::value,bool> = false>
- _LIBCPP_CONSTEXPR propagate_const(propagate_const<_Up>&& __pu)
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const(propagate_const<_Up>&& __pu)
: __t_(std::move(_VSTD_LFTS_V2::get_underlying(__pu)))
{
}
@@ -230,7 +230,7 @@ public:
template <class _Up, enable_if_t<!is_convertible<_Up&&, _Tp>::value &&
is_constructible<_Tp, _Up&&>::value &&
!__is_propagate_const<decay_t<_Up>>::value,bool> = true>
- explicit _LIBCPP_CONSTEXPR propagate_const(_Up&& __u)
+ explicit _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const(_Up&& __u)
: __t_(std::forward<_Up>(__u))
{
}
@@ -238,78 +238,78 @@ public:
template <class _Up, enable_if_t<is_convertible<_Up&&, _Tp>::value &&
is_constructible<_Tp, _Up&&>::value &&
!__is_propagate_const<decay_t<_Up>>::value,bool> = false>
- _LIBCPP_CONSTEXPR propagate_const(_Up&& __u)
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const(_Up&& __u)
: __t_(std::forward<_Up>(__u))
{
}
propagate_const& operator=(const propagate_const&) = delete;
- _LIBCPP_CONSTEXPR propagate_const& operator=(propagate_const&&) = default;
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const& operator=(propagate_const&&) = default;
template <class _Up>
- _LIBCPP_CONSTEXPR propagate_const& operator=(propagate_const<_Up>&& __pu)
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const& operator=(propagate_const<_Up>&& __pu)
{
__t_ = std::move(_VSTD_LFTS_V2::get_underlying(__pu));
return *this;
}
template <class _Up, class _Vp = enable_if_t<!__is_propagate_const<decay_t<_Up>>::value>>
- _LIBCPP_CONSTEXPR propagate_const& operator=(_Up&& __u)
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR propagate_const& operator=(_Up&& __u)
{
__t_ = std::forward<_Up>(__u);
return *this;
}
- _LIBCPP_CONSTEXPR const element_type* get() const
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR const element_type* get() const
{
return __get_pointer(__t_);
}
- _LIBCPP_CONSTEXPR element_type* get()
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR element_type* get()
{
return __get_pointer(__t_);
}
- explicit _LIBCPP_CONSTEXPR operator bool() const
+ _LIBCPP_HIDE_FROM_ABI explicit _LIBCPP_CONSTEXPR operator bool() const
{
return get() != nullptr;
}
- _LIBCPP_CONSTEXPR const element_type* operator->() const
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR const element_type* operator->() const
{
return get();
}
template <class _Tp_ = _Tp, class _Up = enable_if_t<is_convertible<
const _Tp_, const element_type *>::value>>
- _LIBCPP_CONSTEXPR operator const element_type *() const {
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR operator const element_type *() const {
return get();
}
- _LIBCPP_CONSTEXPR const element_type& operator*() const
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR const element_type& operator*() const
{
return *get();
}
- _LIBCPP_CONSTEXPR element_type* operator->()
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR element_type* operator->()
{
return get();
}
template <class _Tp_ = _Tp, class _Up = enable_if_t<
is_convertible<_Tp_, element_type *>::value>>
- _LIBCPP_CONSTEXPR operator element_type *() {
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR operator element_type *() {
return get();
}
- _LIBCPP_CONSTEXPR element_type& operator*()
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR element_type& operator*()
{
return *get();
}
- _LIBCPP_CONSTEXPR void swap(propagate_const& __pt) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value)
- {
+ _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR void swap(propagate_const& __pt)
+ _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value) {
using _VSTD::swap;
swap(__t_, __pt.__t_);
}
@@ -506,7 +506,7 @@ struct hash<experimental::fundamentals_v2::propagate_const<_Tp>>
typedef size_t result_type;
typedef experimental::fundamentals_v2::propagate_const<_Tp> argument_type;
- size_t operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1) const
+ _LIBCPP_HIDE_FROM_ABI size_t operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1) const
{
return std::hash<_Tp>()(_VSTD_LFTS_V2::get_underlying(__pc1));
}
@@ -518,7 +518,7 @@ struct equal_to<experimental::fundamentals_v2::propagate_const<_Tp>>
typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type;
typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type;
- bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
+ _LIBCPP_HIDE_FROM_ABI bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const
{
return std::equal_to<_Tp>()(_VSTD_LFTS_V2::get_underlying(__pc1), _VSTD_LFTS_V2::get_underlying(__pc2));
@@ -531,7 +531,7 @@ struct not_equal_to<experimental::fundamentals_v2::propagate_const<_Tp>>
typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type;
typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type;
- bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
+ _LIBCPP_HIDE_FROM_ABI bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const
{
return std::not_equal_to<_Tp>()(_VSTD_LFTS_V2::get_underlying(__pc1), _VSTD_LFTS_V2::get_underlying(__pc2));
@@ -544,7 +544,7 @@ struct less<experimental::fundamentals_v2::propagate_const<_Tp>>
typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type;
typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type;
- bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
+ _LIBCPP_HIDE_FROM_ABI bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const
{
return std::less<_Tp>()(_VSTD_LFTS_V2::get_underlying(__pc1), _VSTD_LFTS_V2::get_underlying(__pc2));
@@ -557,7 +557,7 @@ struct greater<experimental::fundamentals_v2::propagate_const<_Tp>>
typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type;
typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type;
- bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
+ _LIBCPP_HIDE_FROM_ABI bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const
{
return std::greater<_Tp>()(_VSTD_LFTS_V2::get_underlying(__pc1), _VSTD_LFTS_V2::get_underlying(__pc2));
@@ -570,7 +570,7 @@ struct less_equal<experimental::fundamentals_v2::propagate_const<_Tp>>
typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type;
typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type;
- bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
+ _LIBCPP_HIDE_FROM_ABI bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const
{
return std::less_equal<_Tp>()(_VSTD_LFTS_V2::get_underlying(__pc1), _VSTD_LFTS_V2::get_underlying(__pc2));
@@ -583,7 +583,7 @@ struct greater_equal<experimental::fundamentals_v2::propagate_const<_Tp>>
typedef experimental::fundamentals_v2::propagate_const<_Tp> first_argument_type;
typedef experimental::fundamentals_v2::propagate_const<_Tp> second_argument_type;
- bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
+ _LIBCPP_HIDE_FROM_ABI bool operator()(const experimental::fundamentals_v2::propagate_const<_Tp>& __pc1,
const experimental::fundamentals_v2::propagate_const<_Tp>& __pc2) const
{
return std::greater_equal<_Tp>()(_VSTD_LFTS_V2::get_underlying(__pc1), _VSTD_LFTS_V2::get_underlying(__pc2));
diff --git a/libcxx/include/experimental/simd b/libcxx/include/experimental/simd
index 4ca67d2..11047d1 100644
--- a/libcxx/include/experimental/simd
+++ b/libcxx/include/experimental/simd
@@ -691,8 +691,8 @@ class __simd_storage<_Tp, __simd_abi<_StorageKind::_Array, __num_element>> {
friend struct simd_mask;
public:
- _Tp __get(size_t __index) const noexcept { return __storage_[__index]; }
- void __set(size_t __index, _Tp __val) noexcept {
+ _LIBCPP_HIDE_FROM_ABI _Tp __get(size_t __index) const noexcept { return __storage_[__index]; }
+ _LIBCPP_HIDE_FROM_ABI void __set(size_t __index, _Tp __val) noexcept {
__storage_[__index] = __val;
}
};
@@ -708,8 +708,8 @@ class __simd_storage<_Tp, __simd_abi<_StorageKind::_Scalar, 1>> {
friend struct simd_mask;
public:
- _Tp __get(size_t __index) const noexcept { return (&__storage_)[__index]; }
- void __set(size_t __index, _Tp __val) noexcept {
+ _LIBCPP_HIDE_FROM_ABI _Tp __get(size_t __index) const noexcept { return (&__storage_)[__index]; }
+ _LIBCPP_HIDE_FROM_ABI void __set(size_t __index, _Tp __val) noexcept {
(&__storage_)[__index] = __val;
}
};
@@ -810,8 +810,8 @@ class __simd_storage<_Tp, __simd_abi<_StorageKind::_VecExt, __num_element>> {
friend struct simd_mask;
public:
- _Tp __get(size_t __index) const noexcept { return __storage_[__index]; }
- void __set(size_t __index, _Tp __val) noexcept {
+ _LIBCPP_HIDE_FROM_ABI _Tp __get(size_t __index) const noexcept { return __storage_[__index]; }
+ _LIBCPP_HIDE_FROM_ABI void __set(size_t __index, _Tp __val) noexcept {
__storage_[__index] = __val;
}
};
@@ -831,79 +831,79 @@ class __simd_reference {
__simd_storage<_Tp, _Abi>* __ptr_;
size_t __index_;
- __simd_reference(__simd_storage<_Tp, _Abi>* __ptr, size_t __index)
+ _LIBCPP_HIDE_FROM_ABI __simd_reference(__simd_storage<_Tp, _Abi>* __ptr, size_t __index)
: __ptr_(__ptr), __index_(__index) {}
- __simd_reference(const __simd_reference&) = default;
+ _LIBCPP_HIDE_FROM_ABI __simd_reference(const __simd_reference&) = default;
public:
__simd_reference() = delete;
__simd_reference& operator=(const __simd_reference&) = delete;
- operator _Vp() const { return __ptr_->__get(__index_); }
+ _LIBCPP_HIDE_FROM_ABI operator _Vp() const { return __ptr_->__get(__index_); }
- __simd_reference operator=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator=(_Vp __value) && {
__ptr_->__set(__index_, __value);
return *this;
}
- __simd_reference operator++() && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator++() && {
return std::move(*this) = __ptr_->__get(__index_) + 1;
}
- _Vp operator++(int) && {
+ _LIBCPP_HIDE_FROM_ABI _Vp operator++(int) && {
auto __val = __ptr_->__get(__index_);
__ptr_->__set(__index_, __val + 1);
return __val;
}
- __simd_reference operator--() && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator--() && {
return std::move(*this) = __ptr_->__get(__index_) - 1;
}
- _Vp operator--(int) && {
+ _LIBCPP_HIDE_FROM_ABI _Vp operator--(int) && {
auto __val = __ptr_->__get(__index_);
__ptr_->__set(__index_, __val - 1);
return __val;
}
- __simd_reference operator+=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator+=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) + __value;
}
- __simd_reference operator-=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator-=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) - __value;
}
- __simd_reference operator*=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator*=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) * __value;
}
- __simd_reference operator/=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator/=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) / __value;
}
- __simd_reference operator%=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator%=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) % __value;
}
- __simd_reference operator>>=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator>>=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) >> __value;
}
- __simd_reference operator<<=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator<<=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) << __value;
}
- __simd_reference operator&=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator&=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) & __value;
}
- __simd_reference operator|=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator|=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) | __value;
}
- __simd_reference operator^=(_Vp __value) && {
+ _LIBCPP_HIDE_FROM_ABI __simd_reference operator^=(_Vp __value) && {
return std::move(*this) = __ptr_->__get(__index_) ^ __value;
}
};
@@ -1350,11 +1350,11 @@ public:
using mask_type = simd_mask<_Tp, _Abi>;
using abi_type = _Abi;
- simd() = default;
- simd(const simd&) = default;
- simd& operator=(const simd&) = default;
+ _LIBCPP_HIDE_FROM_ABI simd() = default;
+ _LIBCPP_HIDE_FROM_ABI simd(const simd&) = default;
+ _LIBCPP_HIDE_FROM_ABI simd& operator=(const simd&) = default;
- static constexpr size_t size() noexcept {
+ static _LIBCPP_HIDE_FROM_ABI constexpr size_t size() noexcept {
return simd_size<_Tp, _Abi>::value;
}
@@ -1362,7 +1362,7 @@ private:
__simd_storage<_Tp, _Abi> __s_;
template <class _Up>
- static constexpr bool __can_broadcast() {
+ static _LIBCPP_HIDE_FROM_ABI constexpr bool __can_broadcast() {
return (std::is_arithmetic<_Up>::value &&
__is_non_narrowing_arithmetic_convertible<_Up, _Tp>()) ||
(!std::is_arithmetic<_Up>::value &&
@@ -1374,7 +1374,7 @@ private:
}
template <class _Generator, size_t... __indicies>
- static constexpr decltype(
+ static _LIBCPP_HIDE_FROM_ABI constexpr decltype(
std::forward_as_tuple(std::declval<_Generator>()(
std::integral_constant<size_t, __indicies>())...),
bool())
@@ -1385,12 +1385,12 @@ private:
}
template <class _Generator>
- static bool __can_generate(...) {
+ static _LIBCPP_HIDE_FROM_ABI bool __can_generate(...) {
return false;
}
template <class _Generator, size_t... __indicies>
- void __generator_init(_Generator&& __g, std::index_sequence<__indicies...>) {
+ _LIBCPP_HIDE_FROM_ABI void __generator_init(_Generator&& __g, std::index_sequence<__indicies...>) {
int __not_used[]{((*this)[__indicies] =
__g(std::integral_constant<size_t, __indicies>()),
0)...};
@@ -1403,7 +1403,7 @@ public:
class = typename std::enable_if<
std::is_same<_Abi, simd_abi::fixed_size<size()>>::value &&
__is_non_narrowing_arithmetic_convertible<_Up, _Tp>()>::type>
- simd(const simd<_Up, simd_abi::fixed_size<size()>>& __v) {
+ _LIBCPP_HIDE_FROM_ABI simd(const simd<_Up, simd_abi::fixed_size<size()>>& __v) {
for (size_t __i = 0; __i < size(); __i++) {
(*this)[__i] = static_cast<_Tp>(__v[__i]);
}
@@ -1412,7 +1412,7 @@ public:
// implicit broadcast constructor
template <class _Up,
class = typename std::enable_if<__can_broadcast<_Up>()>::type>
- simd(_Up&& __rv) {
+ _LIBCPP_HIDE_FROM_ABI simd(_Up&& __rv) {
auto __v = static_cast<_Tp>(__rv);
for (size_t __i = 0; __i < size(); __i++) {
(*this)[__i] = __v;
@@ -1424,7 +1424,7 @@ public:
int = typename std::enable_if<
__can_generate<_Generator>(std::make_index_sequence<size()>()),
int>::type()>
- explicit simd(_Generator&& __g) {
+ explicit _LIBCPP_HIDE_FROM_ABI simd(_Generator&& __g) {
__generator_init(std::forward<_Generator>(__g),
std::make_index_sequence<size()>());
}
@@ -1434,7 +1434,7 @@ public:
class _Up, class _Flags,
class = typename std::enable_if<__vectorizable<_Up>()>::type,
class = typename std::enable_if<is_simd_flag_type<_Flags>::value>::type>
- simd(const _Up* __buffer, _Flags) {
+ _LIBCPP_HIDE_FROM_ABI simd(const _Up* __buffer, _Flags) {
// TODO: optimize for overaligned flags
for (size_t __i = 0; __i < size(); __i++) {
(*this)[__i] = static_cast<_Tp>(__buffer[__i]);
@@ -1445,7 +1445,7 @@ public:
template <class _Up, class _Flags>
typename std::enable_if<__vectorizable<_Up>() &&
is_simd_flag_type<_Flags>::value>::type
- copy_from(const _Up* __buffer, _Flags) {
+ _LIBCPP_HIDE_FROM_ABI copy_from(const _Up* __buffer, _Flags) {
*this = simd(__buffer, _Flags());
}
@@ -1453,7 +1453,7 @@ public:
template <class _Up, class _Flags>
typename std::enable_if<__vectorizable<_Up>() &&
is_simd_flag_type<_Flags>::value>::type
- copy_to(_Up* __buffer, _Flags) const {
+ _LIBCPP_HIDE_FROM_ABI copy_to(_Up* __buffer, _Flags) const {
// TODO: optimize for overaligned flags
for (size_t __i = 0; __i < size(); __i++) {
__buffer[__i] = static_cast<_Up>((*this)[__i]);
@@ -1461,9 +1461,9 @@ public:
}
// scalar access [simd.subscr]
- reference operator[](size_t __i) { return reference(&__s_, __i); }
+ _LIBCPP_HIDE_FROM_ABI reference operator[](size_t __i) { return reference(&__s_, __i); }
- value_type operator[](size_t __i) const { return __s_.__get(__i); }
+ _LIBCPP_HIDE_FROM_ABI value_type operator[](size_t __i) const { return __s_.__get(__i); }
// unary operators [simd.unary]
simd& operator++();
@@ -1526,7 +1526,7 @@ public:
using simd_type = simd<_Tp, _Abi>;
using abi_type = _Abi;
static constexpr size_t size() noexcept;
- simd_mask() = default;
+ _LIBCPP_HIDE_FROM_ABI simd_mask() = default;
// broadcast constructor
explicit simd_mask(value_type) noexcept;