aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/include/bits/std_valarray.h85
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