SOURCES (GCC_4_1): gcc-pr25626.patch (NEW) - fix valarray vs non-P...

pluto pluto at pld-linux.org
Sun Feb 26 16:49:49 CET 2006


Author: pluto                        Date: Sun Feb 26 15:49:49 2006 GMT
Module: SOURCES                       Tag: GCC_4_1
---- Log message:
- fix valarray vs non-POD bug.

---- Files affected:
SOURCES:
   gcc-pr25626.patch (NONE -> 1.1.2.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/gcc-pr25626.patch
diff -u /dev/null SOURCES/gcc-pr25626.patch:1.1.2.1
--- /dev/null	Sun Feb 26 16:49:49 2006
+++ SOURCES/gcc-pr25626.patch	Sun Feb 26 16:49:44 2006
@@ -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
================================================================


More information about the pld-cvs-commit mailing list