]> git.pld-linux.org Git - packages/gcc.git/commitdiff
- fix valarray vs non-POD bug.
authorPaweł Sikora <pluto@pld-linux.org>
Sun, 26 Feb 2006 15:49:44 +0000 (15:49 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    gcc-pr25626.patch -> 1.1.2.1

gcc-pr25626.patch [new file with mode: 0644]

diff --git a/gcc-pr25626.patch b/gcc-pr25626.patch
new file mode 100644 (file)
index 0000000..274130b
--- /dev/null
@@ -0,0 +1,74 @@
+--- gcc/libstdc++-v3/include/bits/valarray_array.h     (revision 110087)
++++ gcc/libstdc++-v3/include/bits/valarray_array.h     (working copy)
+@@ -428,8 +428,24 @@
+       _Tp* const __restrict__ _M_data;
+     };
++
++  // Copy-construct plain array __b[<__n>] from indexed array __a[__i[<__n>]]
+   template<typename _Tp>
+     inline void
++    __valarray_copy_construct(_Array<_Tp> __a, _Array<size_t> __i,
++                            _Array<_Tp> __b, size_t __n)
++    { std::__valarray_copy_construct(__a._M_data, __i._M_data,
++                                   __b._M_data, __n); }
++
++  // Copy-construct plain array __b[<__n>] from strided array __a[<__n : __s>]
++  template<typename _Tp>
++    inline void
++    __valarray_copy_construct(_Array<_Tp> __a, size_t __n, size_t __s,
++                            _Array<_Tp> __b)
++    { std::__valarray_copy_construct(__a._M_data, __n, __s, __b._M_data); }
++
++  template<typename _Tp>
++    inline void
+     __valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t)
+     { std::__valarray_fill(__a._M_data, __n, __t); }
+--- gcc/libstdc++-v3/include/std/std_valarray.h        (revision 110087)
++++ gcc/libstdc++-v3/include/std/std_valarray.h        (working copy)
+@@ -584,7 +584,7 @@
+     valarray<_Tp>::valarray(const slice_array<_Tp>& __sa)
+     : _M_size(__sa._M_sz), _M_data(__valarray_get_storage<_Tp>(__sa._M_sz))
+     {
+-      std::__valarray_copy
++      std::__valarray_copy_construct
+       (__sa._M_array, __sa._M_sz, __sa._M_stride, _Array<_Tp>(_M_data));
+     }
+@@ -594,7 +594,7 @@
+     : _M_size(__ga._M_index.size()),
+       _M_data(__valarray_get_storage<_Tp>(_M_size))
+     {
+-      std::__valarray_copy
++      std::__valarray_copy_construct
+       (__ga._M_array, _Array<size_t>(__ga._M_index),
+        _Array<_Tp>(_M_data), _M_size);
+     }
+@@ -604,7 +604,7 @@
+     valarray<_Tp>::valarray(const mask_array<_Tp>& __ma)
+     : _M_size(__ma._M_sz), _M_data(__valarray_get_storage<_Tp>(__ma._M_sz))
+     {
+-      std::__valarray_copy
++      std::__valarray_copy_construct
+       (__ma._M_array, __ma._M_mask, _Array<_Tp>(_M_data), _M_size);
+     }
+@@ -613,7 +613,7 @@
+     valarray<_Tp>::valarray(const indirect_array<_Tp>& __ia)
+     : _M_size(__ia._M_sz), _M_data(__valarray_get_storage<_Tp>(__ia._M_sz))
+     {
+-      std::__valarray_copy
++      std::__valarray_copy_construct
+       (__ia._M_array, __ia._M_index, _Array<_Tp>(_M_data), _M_size);
+     }
+@@ -621,7 +621,7 @@
+     inline
+     valarray<_Tp>::valarray(const _Expr<_Dom, _Tp>& __e)
+     : _M_size(__e.size()), _M_data(__valarray_get_storage<_Tp>(_M_size))
+-    { std::__valarray_copy(__e, _M_size, _Array<_Tp>(_M_data)); }
++    { std::__valarray_copy_construct(__e, _M_size, _Array<_Tp>(_M_data)); }
+   template<typename _Tp>
+     inline
This page took 0.134708 seconds and 4 git commands to generate.