Add __attribute__((malloc) to allocator and remove unused code
authorJonathan Wakely <jwakely@redhat.com>
Mon, 14 May 2018 15:35:12 +0000 (16:35 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 14 May 2018 15:35:12 +0000 (16:35 +0100)
* 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

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/valarray_array.h

index 9d47d0081474581044d331b8304bcd81439ccff4..e8322137756c794dafeb6d64570b53a444b0e0ca 100644 (file)
@@ -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.
index 07f38ed03edf6fd598628093329555f122a70d06..6759d6003e9646121c76a386476ec8352dcff736 100644 (file)
@@ -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);
@@ -503,12 +499,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                    __dst._M_data, __j._M_data);
     }
 
-  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)