aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2018-05-14 16:35:12 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2018-05-14 16:35:12 +0100
commitcd2f262b2fa4292a39b97ab590b46e79d349817c (patch)
tree37ca4de6c9508ea29a32bf5952d32305d240cb6c
parent6bfbebb063100f6ab845a8456fc7fec99361da80 (diff)
downloadgcc-cd2f262b2fa4292a39b97ab590b46e79d349817c.zip
gcc-cd2f262b2fa4292a39b97ab590b46e79d349817c.tar.gz
gcc-cd2f262b2fa4292a39b97ab590b46e79d349817c.tar.bz2
Add __attribute__((malloc) to allocator and remove unused code
* include/bits/valarray_array.h (__valarray_get_memory): Remove. (__valarray_get_storage): Call operator new directly. Remove ignored top-level restrict qualifier and add malloc attribute instead. (_Array<_Tp>::_Array(size_t)): Remove unused constructor. From-SVN: r260230
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/valarray_array.h22
2 files changed, 11 insertions, 16 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 9d47d00..e832213 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,10 @@
2018-05-14 Jonathan Wakely <jwakely@redhat.com>
+ * include/bits/valarray_array.h (__valarray_get_memory): Remove.
+ (__valarray_get_storage): Call operator new directly. Remove ignored
+ top-level restrict qualifier and add malloc attribute instead.
+ (_Array<_Tp>::_Array(size_t)): Remove unused constructor.
+
PR libstdc++/67554
* include/bits/valarray_array.h (_Array_copy_ctor<_Tp, true>)
(_Array_copier<_Tp, true>): Do not pass null pointers to memcpy.
diff --git a/libstdc++-v3/include/bits/valarray_array.h b/libstdc++-v3/include/bits/valarray_array.h
index 07f38ed..6759d60 100644
--- a/libstdc++-v3/include/bits/valarray_array.h
+++ b/libstdc++-v3/include/bits/valarray_array.h
@@ -47,18 +47,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Helper functions on raw pointers
//
- // We get memory by the old fashion way
- inline void*
- __valarray_get_memory(size_t __n)
- { return operator new(__n); }
+ // We get memory the old fashioned way
+ template<typename _Tp>
+ _Tp*
+ __valarray_get_storage(size_t) __attribute__((__malloc__));
template<typename _Tp>
- inline _Tp*__restrict__
+ inline _Tp*
__valarray_get_storage(size_t __n)
- {
- return static_cast<_Tp*__restrict__>
- (std::__valarray_get_memory(__n * sizeof(_Tp)));
- }
+ { return static_cast<_Tp*>(operator new(__n * sizeof(_Tp))); }
// Return memory to the system
inline void
@@ -410,7 +407,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp>
struct _Array
{
- explicit _Array(size_t);
explicit _Array(_Tp* const __restrict__);
explicit _Array(const valarray<_Tp>&);
_Array(const _Tp* __restrict__, size_t);
@@ -505,12 +501,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
template<typename _Tp>
inline
- _Array<_Tp>::_Array(size_t __n)
- : _M_data(__valarray_get_storage<_Tp>(__n))
- { std::__valarray_default_construct(_M_data, _M_data + __n); }
-
- template<typename _Tp>
- inline
_Array<_Tp>::_Array(_Tp* const __restrict__ __p)
: _M_data (__p) {}