diff options
author | Gabriel Dos Reis <gdr@codesourcery.com> | 2001-02-11 22:16:48 +0000 |
---|---|---|
committer | Gabriel Dos Reis <gdr@gcc.gnu.org> | 2001-02-11 22:16:48 +0000 |
commit | d2155bfea553e1ef51616d0d7c84dfd231175aa9 (patch) | |
tree | 60f1014352296247578dbeedbdde7654f1c93e6d /libstdc++-v3 | |
parent | e065341b56fe82a4a82f3b59c6df529791ed6537 (diff) | |
download | gcc-d2155bfea553e1ef51616d0d7c84dfd231175aa9.zip gcc-d2155bfea553e1ef51616d0d7c84dfd231175aa9.tar.gz gcc-d2155bfea553e1ef51616d0d7c84dfd231175aa9.tar.bz2 |
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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | 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 0c3f90f..1d84ae8 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +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> * 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 f42d7a0..be8f7cc 100644 --- a/libstdc++-v3/include/bits/std_valarray.h +++ b/libstdc++-v3/include/bits/std_valarray.h @@ -472,48 +472,53 @@ namespace std { // } template <class _Tp> - 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 <class _Tp> - 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 <class _Tp> inline void |