aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2003-12-31 00:45:27 +0000
committerMark Mitchell <mark@codesourcery.com>2003-12-31 00:45:27 +0000
commitbd51323a0fde3e8a60299a95eb64f705f6162d13 (patch)
treef1e0c7a519aa1e332c7c10a8a8e599ba99f615f8 /libstdc++-v3
parentc9b0b5e83e93dd604c0c5cef4c0bbc5d95d24c3f (diff)
Merge from mainline
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/csl-arm-branch@75254 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r--libstdc++-v3/ChangeLog33
-rw-r--r--libstdc++-v3/acinclude.m47
-rw-r--r--libstdc++-v3/aclocal.m47
-rw-r--r--libstdc++-v3/config/cpu/i386/atomicity.h5
-rwxr-xr-xlibstdc++-v3/configure3
-rw-r--r--libstdc++-v3/include/bits/c++config2
-rw-r--r--libstdc++-v3/include/bits/locale_facets.h7
-rw-r--r--libstdc++-v3/include/bits/locale_facets.tcc21
-rw-r--r--libstdc++-v3/include/c_std/std_cmath.h1
-rw-r--r--libstdc++-v3/include/ext/pool_allocator.h8
10 files changed, 68 insertions, 26 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 81d4b742d3b..a5becacb17b 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,23 @@
+2003-12-30 Paolo Carlini <pcarlini@suse.de>
+
+ PR libstdc++/13369
+ * include/bits/locale_facets.tcc (__verify_grouping):
+ Fix to deal properly with __grouping_tmp.size() >
+ __grouping.size().
+ * testsuite/22_locale/num_get/get/char/13.cc: New.
+ * testsuite/22_locale/num_get/get/wchar_t/13.cc: Ditto.
+
+2003-12-29 Jerry Quinn <jlquinn@optonline.net>
+
+ * include/bits/locale_facets.h (ctype.narrow,widen): Add cast.
+
+2003-12-29 Paolo Carlini <pcarlini@suse.de>
+
+ * acinclude.m4 (GLIBCXX_CHECK_LFS): Add -fno-exceptions
+ to CXXFLAGS.
+ * aclocal.m4: Regenerate.
+ * configure: Likewise.
+
2003-12-29 Mark Mitchell <mark@codesourcery.com>
* acconfig.h: Add _GLIBCXX_USE_C99_MATH.
@@ -26,6 +46,11 @@
* testsuite/27_io/objects/char/9.cc: Likewise.
* testsuite/ext/stdio_filebuf/char/10063-2.cc: Likewise.
+2003-12-28 Paolo Carlini <pcarlini@suse.de>
+
+ * include/ext/pool_allocator.h (class __pool_alloc): Use
+ operator new and operator delete.
+
2003-12-24 Mark Mitchell <mark@codesourcery.com>
* 27_io/basic_filebuf/close/char/4879.cc: Skip on newlib targets.
@@ -37,6 +62,14 @@
* 27_io/objects/char/7.cc: Likewise.
* 27_io/objects/char/9661-1.cc: Likewise.
+2003-12-24 Andrew Pinski <pinskia@physics.uc.edu>
+
+ * config/cpu/i386/atomicity.h (__exchange_and_add): Fix output
+ constraint.
+
+ PR libstdc++/13480
+ * config/cpu/i386/atomicity.h: Split up read-write memory operand.
+
2003-12-23 Benjamin Kosnik <bkoz@redhat.com>
* include/ext/new_allocator.h (new_allocator): Proper allocator class.
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index f4c449f5765..93bb23874a3 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -594,7 +594,9 @@ dnl Check whether LFS support is available.
dnl
AC_DEFUN(GLIBCXX_CHECK_LFS, [
AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
AC_CACHE_VAL(glibcxx_cv_LFS, [
AC_TRY_LINK(
[#include <unistd.h>
@@ -611,7 +613,8 @@ AC_DEFUN(GLIBCXX_CHECK_LFS, [
if test $glibcxx_cv_LFS = yes; then
AC_DEFINE(_GLIBCXX_USE_LFS)
fi
- AC_LANG_RESTORE
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
])
diff --git a/libstdc++-v3/aclocal.m4 b/libstdc++-v3/aclocal.m4
index a2fcf8af16b..6e00fe0070d 100644
--- a/libstdc++-v3/aclocal.m4
+++ b/libstdc++-v3/aclocal.m4
@@ -607,7 +607,9 @@ dnl Check whether LFS support is available.
dnl
AC_DEFUN(GLIBCXX_CHECK_LFS, [
AC_LANG_SAVE
- AC_LANG_CPLUSPLUS
+ AC_LANG_CPLUSPLUS
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
AC_CACHE_VAL(glibcxx_cv_LFS, [
AC_TRY_LINK(
[#include <unistd.h>
@@ -624,7 +626,8 @@ AC_DEFUN(GLIBCXX_CHECK_LFS, [
if test $glibcxx_cv_LFS = yes; then
AC_DEFINE(_GLIBCXX_USE_LFS)
fi
- AC_LANG_RESTORE
+ CXXFLAGS="$ac_save_CXXFLAGS"
+ AC_LANG_RESTORE
])
diff --git a/libstdc++-v3/config/cpu/i386/atomicity.h b/libstdc++-v3/config/cpu/i386/atomicity.h
index 70d38fe3269..7a949c30fa5 100644
--- a/libstdc++-v3/config/cpu/i386/atomicity.h
+++ b/libstdc++-v3/config/cpu/i386/atomicity.h
@@ -52,8 +52,9 @@ __exchange_and_add(volatile _Atomic_word* __mem, int __val)
/* obtain the atomic exchange/add spin lock */
do {
__asm__ __volatile__ ("xchg{l} {%0,%1|%1,%0}"
- : "+m" (__Atomicity_lock<0>::_S_atomicity_lock),
- "+r" (__tmp));
+ : "=m" (__Atomicity_lock<0>::_S_atomicity_lock),
+ "+r" (__tmp)
+ : "m" (__Atomicity_lock<0>::_S_atomicity_lock));
} while (__tmp);
__result = *__mem;
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 3d4909b7cac..2aaca2812dd 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -26707,6 +26707,8 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+ ac_save_CXXFLAGS="$CXXFLAGS"
+ CXXFLAGS="$CXXFLAGS -fno-exceptions"
if test "${glibcxx_cv_LFS+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
@@ -26767,6 +26769,7 @@ fi
_ACEOF
fi
+ CXXFLAGS="$ac_save_CXXFLAGS"
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index 13e4ebbed7d..cb880917e55 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -35,7 +35,7 @@
#include <bits/os_defines.h>
// The current version of the C++ library in compressed ISO date format.
-#define __GLIBCXX__ 20031223
+#define __GLIBCXX__ 20031230
// Allow use of "export template." This is currently not a feature
// that g++ supports.
diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h
index eecb15c1b74..2d3f776b26f 100644
--- a/libstdc++-v3/include/bits/locale_facets.h
+++ b/libstdc++-v3/include/bits/locale_facets.h
@@ -878,7 +878,7 @@ namespace std
char_type
widen(char __c) const
{
- if (_M_widen_ok) return _M_widen[__c];
+ if (_M_widen_ok) return _M_widen[static_cast<unsigned char>(__c)];
this->_M_widen_init();
return this->do_widen(__c);
}
@@ -934,9 +934,10 @@ namespace std
char
narrow(char_type __c, char __dfault) const
{
- if (_M_narrow[__c]) return _M_narrow[__c];
+ if (_M_narrow[static_cast<unsigned char>(__c)])
+ return _M_narrow[static_cast<unsigned char>(__c)];
const char __t = do_narrow(__c, __dfault);
- if (__t != __dfault) _M_narrow[__c] = __t;
+ if (__t != __dfault) _M_narrow[static_cast<unsigned char>(__c)] = __t;
return __t;
}
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc
index 265c1437eba..40b612c1dde 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -2263,23 +2263,22 @@ namespace std
bool
__verify_grouping(const basic_string<_CharT>& __grouping,
const basic_string<_CharT>& __grouping_tmp)
- {
- size_t __i = 0;
- size_t __j = 0;
- const size_t __len = __grouping.size();
- const size_t __n = __grouping_tmp.size();
+ {
+ const size_t __n = __grouping_tmp.size() - 1;
+ const size_t __min = std::min(__n, __grouping.size() - 1);
+ size_t __i = __n;
bool __test = true;
-
+
// Parsed number groupings have to match the
// numpunct::grouping string exactly, starting at the
// right-most point of the parsed sequence of elements ...
- while (__test && __i < __n - 1)
- for (__j = 0; __test && __j < __len && __i < __n - 1; ++__j, ++__i)
- __test = __grouping[__j] == __grouping_tmp[__n - __i - 1];
+ for (size_t __j = 0; __j < __min && __test; --__i, ++__j)
+ __test = __grouping_tmp[__i] == __grouping[__j];
+ for (; __i && __test; --__i)
+ __test = __grouping_tmp[__i] == __grouping[__min];
// ... but the last parsed grouping can be <= numpunct
// grouping.
- __j == __len ? __j = 0 : __j;
- __test &= __grouping[__j] >= __grouping_tmp[__n - __i - 1];
+ __test &= __grouping_tmp[0] <= __grouping[__min];
return __test;
}
diff --git a/libstdc++-v3/include/c_std/std_cmath.h b/libstdc++-v3/include/c_std/std_cmath.h
index 8f22d5bd5ab..66866b2cc3a 100644
--- a/libstdc++-v3/include/c_std/std_cmath.h
+++ b/libstdc++-v3/include/c_std/std_cmath.h
@@ -436,7 +436,6 @@ namespace std
{ return __builtin_tanh(__x); }
}
-
#if _GLIBCXX_USE_C99_MATH
#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
// These are possible macros imported from C99-land. For strict
diff --git a/libstdc++-v3/include/ext/pool_allocator.h b/libstdc++-v3/include/ext/pool_allocator.h
index cb2df02997e..02303de31fd 100644
--- a/libstdc++-v3/include/ext/pool_allocator.h
+++ b/libstdc++-v3/include/ext/pool_allocator.h
@@ -200,7 +200,7 @@ namespace __gnu_cxx
((_Obj*)(void*)_S_start_free)->_M_free_list_link = *__free_list;
*__free_list = (_Obj*)(void*)_S_start_free;
}
- _S_start_free = new char[__bytes_to_get];
+ _S_start_free = static_cast<char*>(::operator new(__bytes_to_get));
if (_S_start_free == 0)
{
size_t __i;
@@ -225,7 +225,7 @@ namespace __gnu_cxx
}
}
_S_end_free = 0; // In case of exception.
- _S_start_free = new char[__bytes_to_get];
+ _S_start_free = static_cast<char*>(::operator new(__bytes_to_get));
// This should either throw an exception or remedy the situation.
// Thus we assume it succeeded.
}
@@ -290,7 +290,7 @@ namespace __gnu_cxx
}
if ((__n > (size_t) _S_max_bytes) || (_S_force_new > 0))
- __ret = new char[__n];
+ __ret = ::operator new(__n);
else
{
_Obj* volatile* __free_list = _S_free_list + _S_freelist_index(__n);
@@ -317,7 +317,7 @@ namespace __gnu_cxx
__pool_alloc<__threads, __inst>::deallocate(void* __p, size_t __n)
{
if ((__n > (size_t) _S_max_bytes) || (_S_force_new > 0))
- delete [] __p;
+ ::operator delete(__p);
else
{
_Obj* volatile* __free_list = _S_free_list + _S_freelist_index(__n);