Commit d2155bfe by Gabriel Dos Reis Committed by Gabriel Dos Reis

std_valarray.h (valarray<>::shift): Avoid comparaison between signed and unsigned integer types.

        * include/bits/std_valarray.h(valarray<>::shift): Avoid
        comparaison between signed and unsigned integer types.
        (valarray<>::cshift): Reformat.

From-SVN: r39590
parent e065341b
2001-02-11 Gabriel Dos Reis <gdr@codesourcery.com>
* include/bits/std_valarray.h(valarray<>::shift): Avoid
comparaison between signed and unsigned integer types.
(valarray<>::cshift): Reformat.
2001-02-11 Alexandre Oliva <aoliva@redhat.com> 2001-02-11 Alexandre Oliva <aoliva@redhat.com>
* src/gen-num-limits.cc: Use sigsetjmp and siglongjmp if available. * src/gen-num-limits.cc: Use sigsetjmp and siglongjmp if available.
......
...@@ -472,48 +472,53 @@ namespace std { ...@@ -472,48 +472,53 @@ namespace std {
// } // }
template <class _Tp> template <class _Tp>
inline valarray<_Tp> inline valarray<_Tp>
valarray<_Tp>::shift (int __n) const valarray<_Tp>::shift(int __n) const
{ {
_Tp* const __a = static_cast<_Tp*> _Tp* const __a = static_cast<_Tp*>
(__builtin_alloca (sizeof(_Tp) * _M_size)); (__builtin_alloca(sizeof(_Tp) * _M_size));
if (! __n) // __n == 0: no shift if (__n == 0) // no shift
__valarray_copy_construct(_M_data, _M_data + _M_size, __a); __valarray_copy_construct(_M_data, _M_data + _M_size, __a);
else if (__n > 0) { // __n > 0: shift left else if (__n > 0) // __n > 0: shift left
if (__n > _M_size) {
__valarray_default_construct(__a, __a + __n); if (size_t(__n) > _M_size)
else { __valarray_default_construct(__a, __a + __n);
__valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a); else
__valarray_default_construct(__a+_M_size-__n, __a + _M_size); {
} __valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a);
} __valarray_default_construct(__a+_M_size-__n, __a + _M_size);
else { // __n < 0: shift right }
__valarray_copy_construct (_M_data, _M_data+_M_size+__n, __a-__n); }
__valarray_default_construct(__a, __a - __n); else // __n < 0: shift right
} {
return valarray<_Tp> (__a, _M_size); __valarray_copy_construct (_M_data, _M_data+_M_size+__n, __a-__n);
} __valarray_default_construct(__a, __a - __n);
}
return valarray<_Tp> (__a, _M_size);
}
template <class _Tp> template <class _Tp>
inline valarray<_Tp> inline valarray<_Tp>
valarray<_Tp>::cshift (int __n) const valarray<_Tp>::cshift (int __n) const
{ {
_Tp* const __a = static_cast<_Tp*> _Tp* const __a = static_cast<_Tp*>
(__builtin_alloca (sizeof(_Tp) * _M_size)); (__builtin_alloca (sizeof(_Tp) * _M_size));
if (! __n) // __n == 0: no cshift if (__n == 0) // no cshift
__valarray_copy_construct(_M_data, _M_data + _M_size, __a); __valarray_copy_construct(_M_data, _M_data + _M_size, __a);
else if (__n > 0) { // __n > 0: cshift left else if (__n > 0) // cshift left
__valarray_copy_construct(_M_data, _M_data+__n, __a+_M_size-__n); {
__valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a); __valarray_copy_construct(_M_data, _M_data+__n, __a+_M_size-__n);
} __valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a);
else { // __n < 0: cshift right }
__valarray_copy_construct else // cshift right
(_M_data + _M_size+__n, _M_data + _M_size, __a); {
__valarray_copy_construct __valarray_copy_construct
(_M_data, _M_data + _M_size+__n, __a - __n); (_M_data + _M_size+__n, _M_data + _M_size, __a);
} __valarray_copy_construct
return valarray<_Tp> (__a, _M_size); (_M_data, _M_data + _M_size+__n, __a - __n);
} }
return valarray<_Tp>(__a, _M_size);
}
template <class _Tp> template <class _Tp>
inline void inline void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment