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