mirror of git://gcc.gnu.org/git/gcc.git
re PR libstdc++/25626 (Valarray vs non-POD)
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. Co-Authored-By: Gabriel Dos Reis <gdr@integrable-solutions.net> From-SVN: r109726
This commit is contained in:
parent
fd22159fe7
commit
6085dc49ba
|
@ -1,3 +1,16 @@
|
||||||
|
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>
|
2006-01-15 Paolo Carlini <pcarlini@suse.de>
|
||||||
|
|
||||||
* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc:
|
* testsuite/tr1/8_c_compatibility/complex/overloads_int.cc:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// The template and inlines for the -*- C++ -*- internal _Array helper class.
|
// 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.
|
// Free Software Foundation, Inc.
|
||||||
//
|
//
|
||||||
// This file is part of the GNU ISO C++ Library. This library is free
|
// 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;
|
_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>
|
template<typename _Tp>
|
||||||
inline void
|
inline void
|
||||||
__valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t)
|
__valarray_fill (_Array<_Tp> __a, size_t __n, const _Tp& __t)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// The template and inlines for the -*- C++ -*- valarray class.
|
// 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.
|
// Free Software Foundation, Inc.
|
||||||
//
|
//
|
||||||
// This file is part of the GNU ISO C++ Library. This library is free
|
// 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)
|
valarray<_Tp>::valarray(const slice_array<_Tp>& __sa)
|
||||||
: _M_size(__sa._M_sz), _M_data(__valarray_get_storage<_Tp>(__sa._M_sz))
|
: _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));
|
(__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_size(__ga._M_index.size()),
|
||||||
_M_data(__valarray_get_storage<_Tp>(_M_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),
|
(__ga._M_array, _Array<size_t>(__ga._M_index),
|
||||||
_Array<_Tp>(_M_data), _M_size);
|
_Array<_Tp>(_M_data), _M_size);
|
||||||
}
|
}
|
||||||
|
@ -603,7 +603,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
valarray<_Tp>::valarray(const mask_array<_Tp>& __ma)
|
valarray<_Tp>::valarray(const mask_array<_Tp>& __ma)
|
||||||
: _M_size(__ma._M_sz), _M_data(__valarray_get_storage<_Tp>(__ma._M_sz))
|
: _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);
|
(__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)
|
valarray<_Tp>::valarray(const indirect_array<_Tp>& __ia)
|
||||||
: _M_size(__ia._M_sz), _M_data(__valarray_get_storage<_Tp>(__ia._M_sz))
|
: _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);
|
(__ia._M_array, __ia._M_index, _Array<_Tp>(_M_data), _M_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -620,7 +620,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||||
inline
|
inline
|
||||||
valarray<_Tp>::valarray(const _Expr<_Dom, _Tp>& __e)
|
valarray<_Tp>::valarray(const _Expr<_Dom, _Tp>& __e)
|
||||||
: _M_size(__e.size()), _M_data(__valarray_get_storage<_Tp>(_M_size))
|
: _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>
|
template<typename _Tp>
|
||||||
inline
|
inline
|
||||||
|
|
Loading…
Reference in New Issue