From d2155bfea553e1ef51616d0d7c84dfd231175aa9 Mon Sep 17 00:00:00 2001 From: Gabriel Dos Reis Date: Sun, 11 Feb 2001 22:16:48 +0000 Subject: [PATCH] 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 --- libstdc++-v3/ChangeLog | 6 ++ libstdc++-v3/include/bits/std_valarray.h | 85 +++++++++++++----------- 2 files changed, 51 insertions(+), 40 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 0c3f90f9e00..1d84ae8da4c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2001-02-11 Gabriel Dos Reis + + * include/bits/std_valarray.h(valarray<>::shift): Avoid + comparaison between signed and unsigned integer types. + (valarray<>::cshift): Reformat. + 2001-02-11 Alexandre Oliva * src/gen-num-limits.cc: Use sigsetjmp and siglongjmp if available. diff --git a/libstdc++-v3/include/bits/std_valarray.h b/libstdc++-v3/include/bits/std_valarray.h index f42d7a0877c..be8f7cc5ac1 100644 --- a/libstdc++-v3/include/bits/std_valarray.h +++ b/libstdc++-v3/include/bits/std_valarray.h @@ -472,48 +472,53 @@ namespace std { // } template - inline valarray<_Tp> - valarray<_Tp>::shift (int __n) const - { - _Tp* const __a = static_cast<_Tp*> - (__builtin_alloca (sizeof(_Tp) * _M_size)); - if (! __n) // __n == 0: no shift - __valarray_copy_construct(_M_data, _M_data + _M_size, __a); - else if (__n > 0) { // __n > 0: shift left - if (__n > _M_size) - __valarray_default_construct(__a, __a + __n); - else { - __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); - } - return valarray<_Tp> (__a, _M_size); - } + inline valarray<_Tp> + valarray<_Tp>::shift(int __n) const + { + _Tp* const __a = static_cast<_Tp*> + (__builtin_alloca(sizeof(_Tp) * _M_size)); + if (__n == 0) // no shift + __valarray_copy_construct(_M_data, _M_data + _M_size, __a); + else if (__n > 0) // __n > 0: shift left + { + if (size_t(__n) > _M_size) + __valarray_default_construct(__a, __a + __n); + else + { + __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); + } + return valarray<_Tp> (__a, _M_size); + } template - inline valarray<_Tp> - valarray<_Tp>::cshift (int __n) const - { - _Tp* const __a = static_cast<_Tp*> - (__builtin_alloca (sizeof(_Tp) * _M_size)); - if (! __n) // __n == 0: no cshift - __valarray_copy_construct(_M_data, _M_data + _M_size, __a); - else if (__n > 0) { // __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); - } - else { // __n < 0: cshift right - __valarray_copy_construct - (_M_data + _M_size+__n, _M_data + _M_size, __a); - __valarray_copy_construct - (_M_data, _M_data + _M_size+__n, __a - __n); - } - return valarray<_Tp> (__a, _M_size); - } + inline valarray<_Tp> + valarray<_Tp>::cshift (int __n) const + { + _Tp* const __a = static_cast<_Tp*> + (__builtin_alloca (sizeof(_Tp) * _M_size)); + if (__n == 0) // no cshift + __valarray_copy_construct(_M_data, _M_data + _M_size, __a); + 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); + } + else // cshift right + { + __valarray_copy_construct + (_M_data + _M_size+__n, _M_data + _M_size, __a); + __valarray_copy_construct + (_M_data, _M_data + _M_size+__n, __a - __n); + } + return valarray<_Tp>(__a, _M_size); + } template inline void