diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2018-05-14 16:35:12 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2018-05-14 16:35:12 +0100 |
commit | cd2f262b2fa4292a39b97ab590b46e79d349817c (patch) | |
tree | 37ca4de6c9508ea29a32bf5952d32305d240cb6c /libstdc++-v3 | |
parent | 6bfbebb063100f6ab845a8456fc7fec99361da80 (diff) | |
download | gcc-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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/valarray_array.h | 22 |
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) {} |