summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-15 18:04:31 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2006-01-15 18:04:31 +0000
commit163d8190554d66905cb51ac80f3b4c368f9ea0a3 (patch)
tree6223d1c6cedf99f9f5ee1f7ebabda89d9e9b89b0 /libstdc++-v3
parentd14263e10743080d6415eee2a5d1830f43559c5f (diff)
downloadppe42-gcc-163d8190554d66905cb51ac80f3b4c368f9ea0a3.tar.gz
ppe42-gcc-163d8190554d66905cb51ac80f3b4c368f9ea0a3.zip
2006-01-15 Paolo Carlini <pcarlini@suse.de>
Gabriel Dos Reis <gdr@integrable-solutions.net> PR libstdc++/25626 * include/std/std_valarray.h (valarray(const slice_array<>&), valarray(const gslice_array<>&), valarray(const mask_array<>&), valarray(const indirect_array<>&), valarray(const _Expr<>&)): Forward to __valarray_copy_construct, not __valarray_copy. * include/bits/valarray_array.h (__valarray_copy_construct(_Array<>, _Array<>, _Array<>, size_t), __valarray_copy_construct(_Array<>, size_t, size_t, _Array<>)): New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@109726 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog13
-rw-r--r--libstdc++-v3/include/bits/valarray_array.h18
-rw-r--r--libstdc++-v3/include/std/std_valarray.h12
3 files changed, 36 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 93b2e0a11f8..285e04524ac 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,4 +1,17 @@
2006-01-15 Paolo Carlini <pcarlini@suse.de>
+ Gabriel Dos Reis <gdr@integrable-solutions.net>
+
+ PR libstdc++/25626
+ * include/std/std_valarray.h (valarray(const slice_array<>&),
+ valarray(const gslice_array<>&), valarray(const mask_array<>&),
+ valarray(const indirect_array<>&), valarray(const _Expr<>&)):
+ Forward to __valarray_copy_construct, not __valarray_copy.
+ * include/bits/valarray_array.h
+ (__valarray_copy_construct(_Array<>, _Array<>, _Array<>, size_t),
+ __valarray_copy_construct(_Array<>, size_t, size_t, _Array<>)):
+ New.
+
+2006-01-15 Paolo Carlini <pcarlini@suse.de>
* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc:
Fix norm test, use casts everywhere.
diff --git a/libstdc++-v3/include/bits/valarray_array.h b/libstdc++-v3/include/bits/valarray_array.h
index 490384fdcc4..06924fe3ed5 100644
--- a/libstdc++-v3/include/bits/valarray_array.h
+++ b/libstdc++-v3/include/bits/valarray_array.h
@@ -1,6 +1,6 @@
// The template and inlines for the -*- C++ -*- internal _Array helper class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005
+// Copyright (C) 1997, 1998, 1999, 2000, 2003, 2004, 2005, 2006
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -428,6 +428,22 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_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)
diff --git a/libstdc++-v3/include/std/std_valarray.h b/libstdc++-v3/include/std/std_valarray.h
index 82b2fb891a7..ada7aea4062 100644
--- a/libstdc++-v3/include/std/std_valarray.h
+++ b/libstdc++-v3/include/std/std_valarray.h
@@ -1,6 +1,6 @@
// The template and inlines for the -*- C++ -*- valarray class.
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005
+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@@ -583,7 +583,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
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));
}
@@ -593,7 +593,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
: _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);
}
@@ -603,7 +603,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
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);
}
@@ -612,7 +612,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
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);
}
@@ -620,7 +620,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
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
OpenPOWER on IntegriCloud