diff -Nrcpad gcc-4.4.0/ChangeLog gcc-4.4.1/ChangeLog *** gcc-4.4.0/ChangeLog Tue Apr 21 08:46:08 2009 --- gcc-4.4.1/ChangeLog Wed Jul 22 07:30:15 2009 *************** *** 1,3 **** --- 1,15 ---- + 2009-07-22 Release Manager + + * GCC 4.4.1 released. + + 2009-04-25 Kaveh R. Ghazi + + PR bootstrap/39739 + * configure.ac (extra_mpfr_configure_flags): Set and AC_SUBST. + * Makefile.def (module=mpfr): Use extra_mpfr_configure_flags. + + * configure, Makefile.in: Regenerate. + 2009-04-21 Release Manager * GCC 4.4.0 released. diff -Nrcpad gcc-4.4.0/INSTALL/binaries.html gcc-4.4.1/INSTALL/binaries.html *** gcc-4.4.0/INSTALL/binaries.html Tue Apr 21 09:08:10 2009 --- gcc-4.4.1/INSTALL/binaries.html Wed Jul 22 07:44:00 2009 *************** *** 3,9 **** Installing GCC: Binaries ! + + + + + + + + + + Paolo Carlini diff -Nrcpad gcc-4.4.0/libstdc++-v3/doc/xml/faq.xml gcc-4.4.1/libstdc++-v3/doc/xml/faq.xml *** gcc-4.4.0/libstdc++-v3/doc/xml/faq.xml Mon Mar 16 00:09:04 2009 --- gcc-4.4.1/libstdc++-v3/doc/xml/faq.xml Wed Apr 29 19:37:30 2009 *************** *** 692,700 **** Long answer: See the implementation status pages for ! C++98, ! TR1, and ! C++0x. --- 692,700 ---- Long answer: See the implementation status pages for ! C++98, ! TR1, and ! C++0x. *************** *** 1123,1129 **** The implementation status of TR1 in libstdc++ can be tracked on the TR1 status page. --- 1123,1129 ---- The implementation status of TR1 in libstdc++ can be tracked on the TR1 status page. diff -Nrcpad gcc-4.4.0/libstdc++-v3/doc/xml/manual/abi.xml gcc-4.4.1/libstdc++-v3/doc/xml/manual/abi.xml *** gcc-4.4.0/libstdc++-v3/doc/xml/manual/abi.xml Tue Sep 9 22:42:23 2008 --- gcc-4.4.1/libstdc++-v3/doc/xml/manual/abi.xml Wed Apr 29 19:37:30 2009 *************** compatible. *** 207,212 **** --- 207,213 ---- gcc-4.1.0: GCC_4.1.0 gcc-4.2.0: GCC_4.2.0 gcc-4.3.0: GCC_4.3.0 + gcc-4.4.0: GCC_4.4.0 *************** compatible. *** 264,269 **** --- 265,272 ---- gcc-4.3.0: libstdc++.so.6.0.10 gcc-4.3.1: libstdc++.so.6.0.10 gcc-4.3.2: libstdc++.so.6.0.10 + gcc-4.3.3: libstdc++.so.6.0.10 + gcc-4.4.0: libstdc++.so.6.0.11 Note 1: Error should be libstdc++.so.3.0.3. *************** compatible. *** 320,325 **** --- 323,329 ---- gcc-4.1.1: GLIBCXX_3.4.8 gcc-4.2.0: GLIBCXX_3.4.9 gcc-4.3.0: GLIBCXX_3.4.10, CXXABI_1.3.2 + gcc-4.4.0: GLIBCXX_3.4.11, CXXABI_1.3.3 *************** compatible. *** 426,431 **** --- 430,437 ---- gcc-4.3.0: 20080306 gcc-4.3.1: 20080606 gcc-4.3.2: 20080827 + gcc-4.3.3: 20090124 + gcc-4.4.0: 20090421 *************** compatible. *** 524,530 **** gcc-4.2.4: include/c++/4.2.4 gcc-4.3.0: include/c++/4.3.0 gcc-4.3.1: include/c++/4.3.1 ! gcc-4.3.2: include/c++/4.3.2 --- 530,537 ---- gcc-4.2.4: include/c++/4.2.4 gcc-4.3.0: include/c++/4.3.0 gcc-4.3.1: include/c++/4.3.1 ! gcc-4.3.3: include/c++/4.3.3 ! gcc-4.4.0: include/c++/4.4.0 diff -Nrcpad gcc-4.4.0/libstdc++-v3/doc/xml/manual/appendix_contributing.xml gcc-4.4.1/libstdc++-v3/doc/xml/manual/appendix_contributing.xml *** gcc-4.4.0/libstdc++-v3/doc/xml/manual/appendix_contributing.xml Thu Apr 16 03:33:20 2009 --- gcc-4.4.1/libstdc++-v3/doc/xml/manual/appendix_contributing.xml Wed Apr 29 19:37:30 2009 *************** indicate a place that may require attent *** 1102,1108 **** For validating the XML document, you'll need something like xmllint and access to the DocBook DTD. These are provided ! by a vendor package like lixml2. --- 1102,1108 ---- For validating the XML document, you'll need something like xmllint and access to the DocBook DTD. These are provided ! by a vendor package like libxml2. diff -Nrcpad gcc-4.4.0/libstdc++-v3/doc/xml/manual/intro.xml gcc-4.4.1/libstdc++-v3/doc/xml/manual/intro.xml *** gcc-4.4.0/libstdc++-v3/doc/xml/manual/intro.xml Thu Apr 16 03:33:20 2009 --- gcc-4.4.1/libstdc++-v3/doc/xml/manual/intro.xml Wed Apr 29 19:37:30 2009 *************** *** 27,33 **** Status ! Implementation Status --- 27,33 ---- Status ! Implementation Status diff -Nrcpad gcc-4.4.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml gcc-4.4.1/libstdc++-v3/doc/xml/manual/status_cxx1998.xml *** gcc-4.4.0/libstdc++-v3/doc/xml/manual/status_cxx1998.xml Thu Apr 16 03:33:20 2009 --- gcc-4.4.1/libstdc++-v3/doc/xml/manual/status_cxx1998.xml Wed Apr 29 19:37:30 2009 *************** *** 1,4 **** ! --- 1,4 ---- ! *************** *** 14,20 **** C++ 1998/2003 ! Implementation Status --- 14,20 ---- C++ 1998/2003 ! Implementation Status *************** particular release. *** 1032,1038 **** ! Implementation Specific Behavior --- 1032,1038 ---- ! Implementation Specific Behavior diff -Nrcpad gcc-4.4.0/libstdc++-v3/doc/xml/manual/status_cxx200x.xml gcc-4.4.1/libstdc++-v3/doc/xml/manual/status_cxx200x.xml *** gcc-4.4.0/libstdc++-v3/doc/xml/manual/status_cxx200x.xml Thu Apr 16 03:33:20 2009 --- gcc-4.4.1/libstdc++-v3/doc/xml/manual/status_cxx200x.xml Wed Apr 29 19:37:30 2009 *************** *** 1,4 **** ! --- 1,4 ---- ! diff -Nrcpad gcc-4.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml gcc-4.4.1/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml *** gcc-4.4.0/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml Thu Apr 16 03:33:20 2009 --- gcc-4.4.1/libstdc++-v3/doc/xml/manual/status_cxxtr1.xml Wed Apr 29 19:37:30 2009 *************** *** 1,4 **** ! --- 1,4 ---- ! diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/Makefile.am gcc-4.4.1/libstdc++-v3/include/Makefile.am *** gcc-4.4.0/libstdc++-v3/include/Makefile.am Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/Makefile.am Wed May 13 00:24:16 2009 *************** pch_output_dirs = \ *** 850,856 **** ${pch1_output_builddir} ${pch2_output_builddir} ${pch3_output_builddir} pch_output_anchors = \ ${pch1_output_anchor} ${pch2_output_anchor} ${pch3_output_anchor} ! PCHFLAGS=-Winvalid-pch -x c++-header $(CXXFLAGS) if GLIBCXX_BUILD_PCH pch_build = ${pch_output} else --- 850,856 ---- ${pch1_output_builddir} ${pch2_output_builddir} ${pch3_output_builddir} pch_output_anchors = \ ${pch1_output_anchor} ${pch2_output_anchor} ${pch3_output_anchor} ! PCHFLAGS=-x c++-header $(CXXFLAGS) if GLIBCXX_BUILD_PCH pch_build = ${pch_output} else diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/Makefile.in gcc-4.4.1/libstdc++-v3/include/Makefile.in *** gcc-4.4.0/libstdc++-v3/include/Makefile.in Thu Jan 15 20:02:11 2009 --- gcc-4.4.1/libstdc++-v3/include/Makefile.in Wed May 13 00:24:16 2009 *************** pch_output_dirs = \ *** 1096,1102 **** pch_output_anchors = \ ${pch1_output_anchor} ${pch2_output_anchor} ${pch3_output_anchor} ! PCHFLAGS = -Winvalid-pch -x c++-header $(CXXFLAGS) @GLIBCXX_BUILD_PCH_FALSE@pch_build = @GLIBCXX_BUILD_PCH_TRUE@pch_build = ${pch_output} --- 1096,1102 ---- pch_output_anchors = \ ${pch1_output_anchor} ${pch2_output_anchor} ${pch3_output_anchor} ! PCHFLAGS = -x c++-header $(CXXFLAGS) @GLIBCXX_BUILD_PCH_FALSE@pch_build = @GLIBCXX_BUILD_PCH_TRUE@pch_build = ${pch_output} diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/bits/atomic_0.h gcc-4.4.1/libstdc++-v3/include/bits/atomic_0.h *** gcc-4.4.0/libstdc++-v3/include/bits/atomic_0.h Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/bits/atomic_0.h Wed Jun 24 07:07:49 2009 *************** namespace __atomic0 *** 119,135 **** void store(void* __v, memory_order __m = memory_order_seq_cst) volatile { ! __glibcxx_assert(__m == memory_order_acquire); ! __glibcxx_assert(__m == memory_order_acq_rel); ! __glibcxx_assert(__m == memory_order_consume); _ATOMIC_STORE_(this, __v, __m); } void* load(memory_order __m = memory_order_seq_cst) const volatile { ! __glibcxx_assert(__m == memory_order_release); ! __glibcxx_assert(__m == memory_order_acq_rel); return _ATOMIC_LOAD_(this, __m); } --- 119,135 ---- void store(void* __v, memory_order __m = memory_order_seq_cst) volatile { ! __glibcxx_assert(__m != memory_order_acquire); ! __glibcxx_assert(__m != memory_order_acq_rel); ! __glibcxx_assert(__m != memory_order_consume); _ATOMIC_STORE_(this, __v, __m); } void* load(memory_order __m = memory_order_seq_cst) const volatile { ! __glibcxx_assert(__m != memory_order_release); ! __glibcxx_assert(__m != memory_order_acq_rel); return _ATOMIC_LOAD_(this, __m); } *************** namespace __atomic0 *** 141,148 **** compare_exchange_weak(void*& __v1, void* __v2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 == memory_order_release); ! __glibcxx_assert(__m2 == memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); return _ATOMIC_CMPEXCHNG_(this, &__v1, __v2, __m1); } --- 141,148 ---- compare_exchange_weak(void*& __v1, void* __v2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 != memory_order_release); ! __glibcxx_assert(__m2 != memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); return _ATOMIC_CMPEXCHNG_(this, &__v1, __v2, __m1); } *************** namespace __atomic0 *** 159,166 **** compare_exchange_strong(void*& __v1, void* __v2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 == memory_order_release); ! __glibcxx_assert(__m2 == memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); return _ATOMIC_CMPEXCHNG_(this, &__v1, __v2, __m1); } --- 159,166 ---- compare_exchange_strong(void*& __v1, void* __v2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 != memory_order_release); ! __glibcxx_assert(__m2 != memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); return _ATOMIC_CMPEXCHNG_(this, &__v1, __v2, __m1); } *************** namespace __atomic0 *** 310,326 **** store(__integral_type __i, memory_order __m = memory_order_seq_cst) volatile { ! __glibcxx_assert(__m == memory_order_acquire); ! __glibcxx_assert(__m == memory_order_acq_rel); ! __glibcxx_assert(__m == memory_order_consume); _ATOMIC_STORE_(this, __i, __m); } __integral_type load(memory_order __m = memory_order_seq_cst) const volatile { ! __glibcxx_assert(__m == memory_order_release); ! __glibcxx_assert(__m == memory_order_acq_rel); return _ATOMIC_LOAD_(this, __m); } --- 310,326 ---- store(__integral_type __i, memory_order __m = memory_order_seq_cst) volatile { ! __glibcxx_assert(__m != memory_order_acquire); ! __glibcxx_assert(__m != memory_order_acq_rel); ! __glibcxx_assert(__m != memory_order_consume); _ATOMIC_STORE_(this, __i, __m); } __integral_type load(memory_order __m = memory_order_seq_cst) const volatile { ! __glibcxx_assert(__m != memory_order_release); ! __glibcxx_assert(__m != memory_order_acq_rel); return _ATOMIC_LOAD_(this, __m); } *************** namespace __atomic0 *** 333,340 **** compare_exchange_weak(__integral_type& __i1, __integral_type __i2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 == memory_order_release); ! __glibcxx_assert(__m2 == memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1); } --- 333,340 ---- compare_exchange_weak(__integral_type& __i1, __integral_type __i2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 != memory_order_release); ! __glibcxx_assert(__m2 != memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1); } *************** namespace __atomic0 *** 351,358 **** compare_exchange_strong(__integral_type& __i1, __integral_type __i2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 == memory_order_release); ! __glibcxx_assert(__m2 == memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1); } --- 351,358 ---- compare_exchange_strong(__integral_type& __i1, __integral_type __i2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 != memory_order_release); ! __glibcxx_assert(__m2 != memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); return _ATOMIC_CMPEXCHNG_(this, &__i1, __i2, __m1); } diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/bits/atomic_2.h gcc-4.4.1/libstdc++-v3/include/bits/atomic_2.h *** gcc-4.4.0/libstdc++-v3/include/bits/atomic_2.h Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/bits/atomic_2.h Wed Jun 24 07:07:49 2009 *************** namespace __atomic2 *** 65,70 **** --- 65,74 ---- void clear(memory_order __m = memory_order_seq_cst) volatile { + __glibcxx_assert(__m != memory_order_consume); + __glibcxx_assert(__m != memory_order_acquire); + __glibcxx_assert(__m != memory_order_acq_rel); + __sync_lock_release(&_M_i); if (__m != memory_order_acquire && __m != memory_order_acq_rel) __sync_synchronize(); *************** namespace __atomic2 *** 93,101 **** void store(void* __v, memory_order __m = memory_order_seq_cst) volatile { ! __glibcxx_assert(__m == memory_order_acquire); ! __glibcxx_assert(__m == memory_order_acq_rel); ! __glibcxx_assert(__m == memory_order_consume); if (__m == memory_order_relaxed) _M_i = __v; --- 97,105 ---- void store(void* __v, memory_order __m = memory_order_seq_cst) volatile { ! __glibcxx_assert(__m != memory_order_acquire); ! __glibcxx_assert(__m != memory_order_acq_rel); ! __glibcxx_assert(__m != memory_order_consume); if (__m == memory_order_relaxed) _M_i = __v; *************** namespace __atomic2 *** 111,118 **** void* load(memory_order __m = memory_order_seq_cst) const volatile { ! __glibcxx_assert(__m == memory_order_release); ! __glibcxx_assert(__m == memory_order_acq_rel); __sync_synchronize(); void* __ret = _M_i; --- 115,122 ---- void* load(memory_order __m = memory_order_seq_cst) const volatile { ! __glibcxx_assert(__m != memory_order_release); ! __glibcxx_assert(__m != memory_order_acq_rel); __sync_synchronize(); void* __ret = _M_i; *************** namespace __atomic2 *** 144,151 **** compare_exchange_strong(void*& __v1, void* __v2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 == memory_order_release); ! __glibcxx_assert(__m2 == memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); void* __v1o = __v1; --- 148,155 ---- compare_exchange_strong(void*& __v1, void* __v2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 != memory_order_release); ! __glibcxx_assert(__m2 != memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); void* __v1o = __v1; *************** namespace __atomic2 *** 284,292 **** store(__integral_type __i, memory_order __m = memory_order_seq_cst) volatile { ! __glibcxx_assert(__m == memory_order_acquire); ! __glibcxx_assert(__m == memory_order_acq_rel); ! __glibcxx_assert(__m == memory_order_consume); if (__m == memory_order_relaxed) _M_i = __i; --- 288,296 ---- store(__integral_type __i, memory_order __m = memory_order_seq_cst) volatile { ! __glibcxx_assert(__m != memory_order_acquire); ! __glibcxx_assert(__m != memory_order_acq_rel); ! __glibcxx_assert(__m != memory_order_consume); if (__m == memory_order_relaxed) _M_i = __i; *************** namespace __atomic2 *** 302,309 **** __integral_type load(memory_order __m = memory_order_seq_cst) const volatile { ! __glibcxx_assert(__m == memory_order_release); ! __glibcxx_assert(__m == memory_order_acq_rel); __sync_synchronize(); __integral_type __ret = _M_i; --- 306,313 ---- __integral_type load(memory_order __m = memory_order_seq_cst) const volatile { ! __glibcxx_assert(__m != memory_order_release); ! __glibcxx_assert(__m != memory_order_acq_rel); __sync_synchronize(); __integral_type __ret = _M_i; *************** namespace __atomic2 *** 336,343 **** compare_exchange_strong(__integral_type& __i1, __integral_type __i2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 == memory_order_release); ! __glibcxx_assert(__m2 == memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); __integral_type __i1o = __i1; --- 340,347 ---- compare_exchange_strong(__integral_type& __i1, __integral_type __i2, memory_order __m1, memory_order __m2) volatile { ! __glibcxx_assert(__m2 != memory_order_release); ! __glibcxx_assert(__m2 != memory_order_acq_rel); __glibcxx_assert(__m2 <= __m1); __integral_type __i1o = __i1; diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/bits/locale_facets.tcc gcc-4.4.1/libstdc++-v3/include/bits/locale_facets.tcc *** gcc-4.4.0/libstdc++-v3/include/bits/locale_facets.tcc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/bits/locale_facets.tcc Tue Apr 21 20:26:46 2009 *************** _GLIBCXX_BEGIN_LDBL_NAMESPACE *** 379,386 **** if (!__testeof) { __c = *__beg; ! if (__gnu_cxx::__numeric_traits<_ValueT>::__is_signed) ! __negative = __c == __lit[__num_base::_S_iminus]; if ((__negative || __c == __lit[__num_base::_S_iplus]) && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) && !(__c == __lc->_M_decimal_point)) --- 379,385 ---- if (!__testeof) { __c = *__beg; ! __negative = __c == __lit[__num_base::_S_iminus]; if ((__negative || __c == __lit[__num_base::_S_iplus]) && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep) && !(__c == __lc->_M_decimal_point)) *************** _GLIBCXX_BEGIN_LDBL_NAMESPACE *** 449,455 **** __found_grouping.reserve(32); bool __testfail = false; bool __testoverflow = false; ! const __unsigned_type __max = __negative ? -__gnu_cxx::__numeric_traits<_ValueT>::__min : __gnu_cxx::__numeric_traits<_ValueT>::__max; const __unsigned_type __smax = __max / __base; --- 448,455 ---- __found_grouping.reserve(32); bool __testfail = false; bool __testoverflow = false; ! const __unsigned_type __max = ! (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) ? -__gnu_cxx::__numeric_traits<_ValueT>::__min : __gnu_cxx::__numeric_traits<_ValueT>::__max; const __unsigned_type __smax = __max / __base; *************** _GLIBCXX_BEGIN_LDBL_NAMESPACE *** 552,558 **** } else if (__testoverflow) { ! if (__negative) __v = __gnu_cxx::__numeric_traits<_ValueT>::__min; else __v = __gnu_cxx::__numeric_traits<_ValueT>::__max; --- 552,559 ---- } else if (__testoverflow) { ! if (__negative ! && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) __v = __gnu_cxx::__numeric_traits<_ValueT>::__min; else __v = __gnu_cxx::__numeric_traits<_ValueT>::__max; diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/bits/stl_construct.h gcc-4.4.1/libstdc++-v3/include/bits/stl_construct.h *** gcc-4.4.0/libstdc++-v3/include/bits/stl_construct.h Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/bits/stl_construct.h Mon May 18 23:16:48 2009 *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 82,87 **** --- 82,107 ---- _Destroy(_Tp* __pointer) { __pointer->~_Tp(); } + template + struct _Destroy_aux + { + template + static void + __destroy(_ForwardIterator __first, _ForwardIterator __last) + { + for (; __first != __last; ++__first) + std::_Destroy(&*__first); + } + }; + + template<> + struct _Destroy_aux + { + template + static void + __destroy(_ForwardIterator, _ForwardIterator) { } + }; + /** * Destroy a range of objects. If the value_type of the object has * a trivial destructor, the compiler should optimize all of this *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 93,101 **** { typedef typename iterator_traits<_ForwardIterator>::value_type _Value_type; ! if (!__has_trivial_destructor(_Value_type)) ! for (; __first != __last; ++__first) ! std::_Destroy(&*__first); } /** --- 113,120 ---- { typedef typename iterator_traits<_ForwardIterator>::value_type _Value_type; ! std::_Destroy_aux<__has_trivial_destructor(_Value_type)>:: ! __destroy(__first, __last); } /** diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/bits/valarray_after.h gcc-4.4.1/libstdc++-v3/include/bits/valarray_after.h *** gcc-4.4.0/libstdc++-v3/include/bits/valarray_after.h Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/bits/valarray_after.h Wed Jul 15 21:07:07 2009 *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 315,321 **** _Expr<_Dom, _Tp>::operator!() const { typedef _UnClos<__logical_not, std::_Expr, _Dom> _Closure; ! return _Expr<_Closure, _Tp>(_Closure(this->_M_closure)); } #define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \ --- 315,321 ---- _Expr<_Dom, _Tp>::operator!() const { typedef _UnClos<__logical_not, std::_Expr, _Dom> _Closure; ! return _Expr<_Closure, bool>(_Closure(this->_M_closure)); } #define _DEFINE_EXPR_UNARY_OPERATOR(_Op, _Name) \ diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/ext/memory gcc-4.4.1/libstdc++-v3/include/ext/memory *** gcc-4.4.0/libstdc++-v3/include/ext/memory Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/ext/memory Tue Jun 2 09:06:45 2009 *************** _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) *** 102,110 **** template inline pair<_InputIter, _ForwardIter> __uninitialized_copy_n(_InputIter __first, _Size __count, ! _ForwardIter __result) ! { return __uninitialized_copy_n(__first, __count, __result, ! __iterator_category(__first)); } /** * @brief Copies the range [first,last) into result. --- 102,110 ---- template inline pair<_InputIter, _ForwardIter> __uninitialized_copy_n(_InputIter __first, _Size __count, ! _ForwardIter __result) ! { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result, ! __iterator_category(__first)); } /** * @brief Copies the range [first,last) into result. *************** _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) *** 120,127 **** inline pair<_InputIter, _ForwardIter> uninitialized_copy_n(_InputIter __first, _Size __count, _ForwardIter __result) ! { return __uninitialized_copy_n(__first, __count, __result, ! __iterator_category(__first)); } // An alternative version of uninitialized_copy_n that constructs --- 120,127 ---- inline pair<_InputIter, _ForwardIter> uninitialized_copy_n(_InputIter __first, _Size __count, _ForwardIter __result) ! { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result, ! __iterator_category(__first)); } // An alternative version of uninitialized_copy_n that constructs *************** _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) *** 154,160 **** _ForwardIter __result, std::allocator<_Tp>) { ! return uninitialized_copy_n(__first, __count, __result); } /** --- 154,160 ---- _ForwardIter __result, std::allocator<_Tp>) { ! return __gnu_cxx::uninitialized_copy_n(__first, __count, __result); } /** diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/parallel/algo.h gcc-4.4.1/libstdc++-v3/include/parallel/algo.h *** gcc-4.4.0/libstdc++-v3/include/parallel/algo.h Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/parallel/algo.h Tue May 12 14:57:35 2009 *************** namespace __parallel *** 149,156 **** if (_GLIBCXX_PARALLEL_CONDITION(true)) { ! binder2nd<__gnu_parallel::equal_to > ! comp(__gnu_parallel::equal_to(), val); return __gnu_parallel::find_template(begin, end, begin, comp, __gnu_parallel:: find_if_selector()).first; --- 149,156 ---- if (_GLIBCXX_PARALLEL_CONDITION(true)) { ! binder2nd<__gnu_parallel::equal_to > ! comp(__gnu_parallel::equal_to(), val); return __gnu_parallel::find_template(begin, end, begin, comp, __gnu_parallel:: find_if_selector()).first; diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/std/mutex gcc-4.4.1/libstdc++-v3/include/std/mutex *** gcc-4.4.0/libstdc++-v3/include/std/mutex Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/std/mutex Tue May 5 21:44:27 2009 *************** namespace std *** 729,736 **** #else extern function __once_functor; ! extern unique_lock& ! __get_once_functor_lock(); #endif extern "C" void __once_proxy(); --- 729,739 ---- #else extern function __once_functor; ! extern void ! __set_once_functor_lock_ptr(unique_lock*); ! ! extern mutex& ! __get_once_mutex(); #endif extern "C" void __once_proxy(); *************** namespace std *** 745,760 **** __once_callable = &__bound_functor; __once_call = &__once_call_impl; #else ! unique_lock& __functor_lock = __get_once_functor_lock(); ! __functor_lock.lock(); __once_functor = bind(__f, __args...); #endif int __e = __gthread_once(&(__once._M_once), &__once_proxy); #ifndef _GLIBCXX_HAVE_TLS if (__functor_lock) ! __functor_lock.unlock(); #endif if (__e) --- 748,763 ---- __once_callable = &__bound_functor; __once_call = &__once_call_impl; #else ! unique_lock __functor_lock(__get_once_mutex()); __once_functor = bind(__f, __args...); + __set_once_functor_lock_ptr(&__functor_lock); #endif int __e = __gthread_once(&(__once._M_once), &__once_proxy); #ifndef _GLIBCXX_HAVE_TLS if (__functor_lock) ! __set_once_functor_lock_ptr(0); #endif if (__e) diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/std/system_error gcc-4.4.1/libstdc++-v3/include/std/system_error *** gcc-4.4.0/libstdc++-v3/include/std/system_error Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/std/system_error Tue Apr 28 10:32:22 2009 *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 51,60 **** template struct is_error_code_enum : public false_type { }; - template<> - struct is_error_code_enum - : public true_type { }; - /// is_error_condition_enum template struct is_error_condition_enum : public false_type { }; --- 51,56 ---- *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 108,119 **** const error_category& system_category(); const error_category& generic_category(); /// error_code // Implementation-specific error identification struct error_code { error_code() ! : _M_value(0), _M_cat(&system_category()) { } error_code(int __v, const error_category& __cat) : _M_value(__v), _M_cat(&__cat) { } --- 104,117 ---- const error_category& system_category(); const error_category& generic_category(); + error_code make_error_code(errc); + /// error_code // Implementation-specific error identification struct error_code { error_code() ! : _M_value(0), _M_cat(&system_category()) { } error_code(int __v, const error_category& __cat) : _M_value(__v), _M_cat(&__cat) { } *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 121,128 **** template error_code(_ErrorCodeEnum __e, typename enable_if::value>::type* = 0) ! : _M_value(static_cast(__e)), _M_cat(&generic_category()) ! { } void assign(int __v, const error_category& __cat) --- 119,125 ---- template error_code(_ErrorCodeEnum __e, typename enable_if::value>::type* = 0) ! { *this = make_error_code(__e); } void assign(int __v, const error_category& __cat) *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 140,149 **** typename enable_if::value, error_code&>::type operator=(_ErrorCodeEnum __e) ! { ! assign(static_cast(__e), generic_category()); ! return *this; ! } int value() const { return _M_value; } --- 137,143 ---- typename enable_if::value, error_code&>::type operator=(_ErrorCodeEnum __e) ! { return *this = make_error_code(__e); } int value() const { return _M_value; } *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 192,203 **** operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) { return (__os << __e.category().name() << ':' << __e.value()); } /// error_condition // Portable error identification struct error_condition { ! error_condition() : _M_value(0), _M_cat(&generic_category()) { } error_condition(int __v, const error_category& __cat) : _M_value(__v), _M_cat(&__cat) { } --- 186,199 ---- operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) { return (__os << __e.category().name() << ':' << __e.value()); } + error_condition make_error_condition(errc); /// error_condition // Portable error identification struct error_condition { ! error_condition() ! : _M_value(0), _M_cat(&generic_category()) { } error_condition(int __v, const error_category& __cat) : _M_value(__v), _M_cat(&__cat) { } *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 206,212 **** error_condition(_ErrorConditionEnum __e, typename enable_if::value>::type* = 0) ! : _M_value(static_cast(__e)), _M_cat(&generic_category()) { } void assign(int __v, const error_category& __cat) --- 202,208 ---- error_condition(_ErrorConditionEnum __e, typename enable_if::value>::type* = 0) ! { *this = make_error_condition(__e); } void assign(int __v, const error_category& __cat) *************** _GLIBCXX_BEGIN_NAMESPACE(std) *** 220,229 **** typename enable_if::value, error_condition&>::type operator=(_ErrorConditionEnum __e) ! { ! assign(static_cast(__e), generic_category()); ! return *this; ! } void clear() --- 216,222 ---- typename enable_if::value, error_condition&>::type operator=(_ErrorConditionEnum __e) ! { return *this = make_error_condition(__e); } void clear() diff -Nrcpad gcc-4.4.0/libstdc++-v3/include/std/thread gcc-4.4.1/libstdc++-v3/include/std/thread *** gcc-4.4.0/libstdc++-v3/include/std/thread Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/include/std/thread Tue Jun 16 20:36:01 2009 *************** namespace std *** 135,141 **** ~thread() { if (joinable()) ! detach(); } thread& operator=(const thread&) = delete; --- 135,141 ---- ~thread() { if (joinable()) ! std::terminate(); } thread& operator=(const thread&) = delete; *************** namespace std *** 143,149 **** thread& operator=(thread&& __t) { if (joinable()) ! detach(); swap(__t); return *this; } --- 143,149 ---- thread& operator=(thread&& __t) { if (joinable()) ! std::terminate(); swap(__t); return *this; } diff -Nrcpad gcc-4.4.0/libstdc++-v3/libsupc++/eh_ptr.cc gcc-4.4.1/libstdc++-v3/libsupc++/eh_ptr.cc *** gcc-4.4.0/libstdc++-v3/libsupc++/eh_ptr.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/libsupc++/eh_ptr.cc Wed Jun 3 10:37:32 2009 *************** *** 26,31 **** --- 26,33 ---- #ifdef _GLIBCXX_ATOMIC_BUILTINS_4 + #define _GLIBCXX_EH_PTR_COMPAT + #include #include #include "unwind-cxx.h" *************** std::__exception_ptr::exception_ptr::swa *** 127,132 **** --- 129,135 ---- } + // Retained for compatibility with CXXABI_1.3. bool std::__exception_ptr::exception_ptr::operator!() const throw() { *************** std::__exception_ptr::exception_ptr::ope *** 134,139 **** --- 137,143 ---- } + // Retained for compatibility with CXXABI_1.3. std::__exception_ptr::exception_ptr::operator __safe_bool() const throw() { return _M_exception_object ? &exception_ptr::_M_safe_bool_dummy : 0; *************** std::rethrow_exception(std::exception_pt *** 235,238 **** --- 239,244 ---- std::terminate (); } + #undef _GLIBCXX_EH_PTR_COMPAT + #endif diff -Nrcpad gcc-4.4.0/libstdc++-v3/libsupc++/exception_ptr.h gcc-4.4.1/libstdc++-v3/libsupc++/exception_ptr.h *** gcc-4.4.0/libstdc++-v3/libsupc++/exception_ptr.h Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/libsupc++/exception_ptr.h Tue Jun 16 21:46:27 2009 *************** namespace std *** 121,127 **** exception_ptr& operator=(exception_ptr&& __o) throw() { ! exception_ptr(__o).swap(*this); return *this; } #endif --- 121,127 ---- exception_ptr& operator=(exception_ptr&& __o) throw() { ! exception_ptr(static_cast(__o)).swap(*this); return *this; } #endif *************** namespace std *** 131,148 **** void swap(exception_ptr&) throw(); ! #ifdef __GXX_EXPERIMENTAL_CXX0X__ ! void ! swap(exception_ptr &&__o) throw() ! { ! void *__tmp = _M_exception_object; ! _M_exception_object = __o._M_exception_object; ! __o._M_exception_object = __tmp; ! } ! #endif ! bool operator!() const throw(); operator __safe_bool() const throw(); friend bool operator==(const exception_ptr&, const exception_ptr&) throw(); --- 131,141 ---- void swap(exception_ptr&) throw(); ! #ifdef _GLIBCXX_EH_PTR_COMPAT ! // Retained for compatibility with CXXABI_1.3. bool operator!() const throw(); operator __safe_bool() const throw(); + #endif friend bool operator==(const exception_ptr&, const exception_ptr&) throw(); diff -Nrcpad gcc-4.4.0/libstdc++-v3/scripts/create_testsuite_files gcc-4.4.1/libstdc++-v3/scripts/create_testsuite_files *** gcc-4.4.0/libstdc++-v3/scripts/create_testsuite_files Mon Oct 9 23:53:35 2006 --- gcc-4.4.1/libstdc++-v3/scripts/create_testsuite_files Thu Apr 30 19:04:31 2009 *************** cd $srcdir *** 32,38 **** # This is the ugly version of "everything but the current directory". It's # what has to happen when find(1) doesn't support -mindepth, or -xtype. dlist=`echo [0-9][0-9]*` ! dlist="$dlist abi backward ext performance thread tr1" find $dlist "(" -type f -o -type l ")" -name "*.cc" -print > $tmp.01 find $dlist "(" -type f -o -type l ")" -name "*.c" -print > $tmp.02 cat $tmp.01 $tmp.02 | sort > $tmp.1 --- 32,38 ---- # This is the ugly version of "everything but the current directory". It's # what has to happen when find(1) doesn't support -mindepth, or -xtype. dlist=`echo [0-9][0-9]*` ! dlist="$dlist abi backward ext performance tr1" find $dlist "(" -type f -o -type l ")" -name "*.cc" -print > $tmp.01 find $dlist "(" -type f -o -type l ")" -name "*.c" -print > $tmp.02 cat $tmp.01 $tmp.02 | sort > $tmp.1 diff -Nrcpad gcc-4.4.0/libstdc++-v3/scripts/run_doxygen gcc-4.4.1/libstdc++-v3/scripts/run_doxygen *** gcc-4.4.0/libstdc++-v3/scripts/run_doxygen Thu Feb 19 08:15:15 2009 --- gcc-4.4.1/libstdc++-v3/scripts/run_doxygen Wed Apr 29 19:37:30 2009 *************** *** 1,7 **** #!/bin/bash # Runs doxygen and massages the output files. ! # Copyright (C) 2001, 2002, 2003, 2004, 2008 Free Software Foundation, Inc. # # Synopsis: run_doxygen --mode=[html|man|xml] --host_alias= \ # v3srcdir v3builddir --- 1,8 ---- #!/bin/bash # Runs doxygen and massages the output files. ! # Copyright (C) 2001, 2002, 2003, 2004, 2008, 2009 ! # Free Software Foundation, Inc. # # Synopsis: run_doxygen --mode=[html|man|xml] --host_alias= \ # v3srcdir v3builddir *************** mv tr1_random_generators.3 random_genera *** 225,235 **** # man pages are for functions/types/other entities, not source files # directly. who the heck would type "man foo.h" anyhow? ! #find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm rm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tcc.3 *_t.3 ! rm ext_*.3 ! rm tr1_*.3 ! rm debug_*.3 # this is used to examine what we would have deleted, for debugging #mkdir trash --- 226,234 ---- # man pages are for functions/types/other entities, not source files # directly. who the heck would type "man foo.h" anyhow? ! find . -name "[a-z]*" -a ! -name "std_*" -print | xargs rm rm -f *.h.3 *.hpp.3 *config* *.cc.3 *.tcc.3 *_t.3 ! #rm ext_*.3 tr1_*.3 debug_*.3 # this is used to examine what we would have deleted, for debugging #mkdir trash *************** rm stdheader *** 254,271 **** # Some of the pages for generated modules have text that confuses certain # implementations of man(1), e.g., Linux's. We need to have another top-level # *roff tag to /stop/ the .SH NAME entry. ! #problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` ! #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' ! #for f in $problematic; do ! # sed '/^\.SH NAME/{ ! #n ! #a\ ! #\ ! #.SH SYNOPSIS ! # }' $f > TEMP ! # mv TEMP $f ! #done # Also, break this (generated) line up. It's ugly as sin. problematic=`grep -l '[^^]Definition at line' *.3` --- 253,270 ---- # Some of the pages for generated modules have text that confuses certain # implementations of man(1), e.g., Linux's. We need to have another top-level # *roff tag to /stop/ the .SH NAME entry. ! problematic=`egrep --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' ! ! for f in $problematic; do ! sed '/^\.SH NAME/{ ! n ! a\ ! \ ! .SH SYNOPSIS ! }' $f > TEMP ! mv TEMP $f ! done # Also, break this (generated) line up. It's ugly as sin. problematic=`grep -l '[^^]Definition at line' *.3` *************** for f in __atomic2_*; do *** 320,326 **** newname=`echo $f | sed 's/^__atomic2_/std::__atomic2::/'` mv $f $newname done ! # Generic removal bits, where there are things in the generated man # pages that need to be killed. --- 319,328 ---- newname=`echo $f | sed 's/^__atomic2_/std::__atomic2::/'` mv $f $newname done ! for f in __cxxabiv1_*; do ! newname=`echo $f | sed 's/^__cxxabiv1_/abi::/'` ! mv $f $newname ! done # Generic removal bits, where there are things in the generated man # pages that need to be killed. diff -Nrcpad gcc-4.4.0/libstdc++-v3/src/math_stubs_long_double.cc gcc-4.4.1/libstdc++-v3/src/math_stubs_long_double.cc *** gcc-4.4.0/libstdc++-v3/src/math_stubs_long_double.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/src/math_stubs_long_double.cc Thu May 7 07:03:17 2009 *************** extern "C" *** 70,75 **** --- 70,83 ---- } #endif + #ifndef _GLIBCXX_HAVE_CEILL + long double + ceill(long double x) + { + return ceil((double) x); + } + #endif + #ifndef _GLIBCXX_HAVE_COSL long double cosl(long double x) diff -Nrcpad gcc-4.4.0/libstdc++-v3/src/mutex.cc gcc-4.4.1/libstdc++-v3/src/mutex.cc *** gcc-4.4.0/libstdc++-v3/src/mutex.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/src/mutex.cc Tue May 5 21:44:27 2009 *************** *** 28,38 **** #ifndef _GLIBCXX_HAVE_TLS namespace { ! std::mutex& ! get_once_mutex() { ! static std::mutex once_mutex; ! return once_mutex; } } #endif --- 28,38 ---- #ifndef _GLIBCXX_HAVE_TLS namespace { ! inline std::unique_lock*& ! __get_once_functor_lock_ptr() { ! static std::unique_lock* __once_functor_lock_ptr = 0; ! return __once_functor_lock_ptr; } } #endif *************** namespace std *** 55,64 **** template class function; function __once_functor; unique_lock& __get_once_functor_lock() { ! static unique_lock once_functor_lock(get_once_mutex(), defer_lock); return once_functor_lock; } #endif --- 55,79 ---- template class function; function __once_functor; + mutex& + __get_once_mutex() + { + static mutex once_mutex; + return once_mutex; + } + + // code linked against ABI 3.4.12 and later uses this + void + __set_once_functor_lock_ptr(unique_lock* __ptr) + { + __get_once_functor_lock_ptr() = __ptr; + } + + // unsafe - retained for compatibility with ABI 3.4.11 unique_lock& __get_once_functor_lock() { ! static unique_lock once_functor_lock(__get_once_mutex(), defer_lock); return once_functor_lock; } #endif *************** namespace std *** 69,75 **** { #ifndef _GLIBCXX_HAVE_TLS function __once_call = std::move(__once_functor); ! __get_once_functor_lock().unlock(); #endif __once_call(); } --- 84,97 ---- { #ifndef _GLIBCXX_HAVE_TLS function __once_call = std::move(__once_functor); ! if (unique_lock* __lock = __get_once_functor_lock_ptr()) ! { ! // caller is using new ABI and provided lock ptr ! __get_once_functor_lock_ptr() = 0; ! __lock->unlock(); ! } ! else ! __get_once_functor_lock().unlock(); // global lock #endif __once_call(); } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc gcc-4.4.1/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc *** gcc-4.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc Wed Jun 3 10:37:32 2009 *************** *** 0 **** --- 1,30 ---- + // { dg-do compile } + // { dg-options "-std=gnu++0x" } + // { dg-require-atomic-builtins "" } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + + // libstdc++/40296 + bool test01() + { + std::exception_ptr p; + + return (p == 0); + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc gcc-4.4.1/libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc *** gcc-4.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc Wed Jun 3 10:37:32 2009 *************** void test01() *** 31,37 **** using namespace std; exception_ptr ep = current_exception(); ! VERIFY( !ep ); } void test02() --- 31,37 ---- using namespace std; exception_ptr ep = current_exception(); ! VERIFY( ep == 0 ); } void test02() *************** void test02() *** 43,49 **** throw 0; } catch(...) { exception_ptr ep = current_exception(); ! VERIFY( ep ); } } --- 43,49 ---- throw 0; } catch(...) { exception_ptr ep = current_exception(); ! VERIFY( ep != 0 ); } } *************** void test03() *** 56,62 **** throw exception(); } catch(std::exception&) { exception_ptr ep = current_exception(); ! VERIFY( ep ); } } --- 56,62 ---- throw exception(); } catch(std::exception&) { exception_ptr ep = current_exception(); ! VERIFY( ep != 0 ); } } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc gcc-4.4.1/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc *** gcc-4.4.0/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/18_support/exception_ptr/move.cc Tue Jun 16 21:46:27 2009 *************** *** 0 **** --- 1,45 ---- + // { dg-options "-std=gnu++0x" } + // { dg-require-atomic-builtins "" } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + #include + + // Verify move construction and assignment are efficient and do not copy. + // This behaviour is a GNU extension provided for efficiency. + void test01() + { + bool test = true; + + std::exception_ptr p1 = std::copy_exception(test); + std::exception_ptr p2 = std::move(p1); + VERIFY( p1 == 0 ); + VERIFY( !(p2 == 0) ); + + p1 = std::move(p2); + VERIFY( !(p1 == 0) ); + VERIFY( p2 == 0 ); + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc Tue Apr 28 10:32:22 2009 *************** int main() *** 32,38 **** return 0; } ! // { dg-error "deleted function" "" { target *-*-* } 76 } // { dg-error "used here" "" { target *-*-* } 31 } // { dg-error "first required here" "" { target *-*-* } 30 } // { dg-excess-errors "copy constructor" } --- 32,38 ---- return 0; } ! // { dg-error "deleted function" "" { target *-*-* } 72 } // { dg-error "used here" "" { target *-*-* } 31 } // { dg-error "first required here" "" { target *-*-* } 30 } // { dg-excess-errors "copy constructor" } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc Tue Apr 28 10:32:22 2009 *************** int main() *** 37,43 **** VERIFY( e2.category() == cat ); // 3 ! std::error_code e3(std::errc::operation_not_supported); VERIFY( e3.value() == int(std::errc::operation_not_supported) ); VERIFY( e3.category() == std::generic_category() ); --- 37,43 ---- VERIFY( e2.category() == cat ); // 3 ! std::error_code e3(std::make_error_code(std::errc::operation_not_supported)); VERIFY( e3.value() == int(std::errc::operation_not_supported) ); VERIFY( e3.category() == std::generic_category() ); diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc Tue Apr 28 10:32:22 2009 *************** *** 0 **** --- 1,60 ---- + // { dg-options "-std=gnu++0x" } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + + enum my_errc { my_err = 0 }; + + class my_error_category_impl + : public std::error_category + { + public: + const char* name() const { return ""; } + std::string message(int) const { return ""; } + } my_error_category_instance; + + std::error_code + make_error_code(my_errc e) + { + return std::error_code(static_cast(e), + my_error_category_instance); + } + + namespace std + { + template<> + struct is_error_code_enum + : public true_type {}; + } + + // libstdc++/39882 + void test01() + { + bool test __attribute__((unused)) = true; + + std::error_code ec1(my_err); + VERIFY( ec1 == make_error_code(my_err) ); + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc Tue Apr 28 10:32:22 2009 *************** *** 0 **** --- 1,61 ---- + // { dg-options "-std=gnu++0x" } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + + enum my_errc { my_err = 0 }; + + class my_error_category_impl + : public std::error_category + { + public: + const char* name() const { return ""; } + std::string message(int) const { return ""; } + } my_error_category_instance; + + std::error_code + make_error_code(my_errc e) + { + return std::error_code(static_cast(e), + my_error_category_instance); + } + + namespace std + { + template<> + struct is_error_code_enum + : public true_type {}; + } + + // libstdc++/39882 + void test01() + { + bool test __attribute__((unused)) = true; + + std::error_code ec2; + ec2 = my_err; + VERIFY( ec2 == make_error_code(my_err) ); + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc Tue Apr 28 10:32:22 2009 *************** int main() *** 34,40 **** } // 2 ! std::error_code e2(std::errc::operation_not_supported); if (e2) { VERIFY( true ); --- 34,40 ---- } // 2 ! std::error_code e2(std::make_error_code(std::errc::operation_not_supported)); if (e2) { VERIFY( true ); diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc Tue Apr 28 10:32:22 2009 *************** int main() *** 27,33 **** bool test __attribute__((unused)) = true; std::error_code e1; ! std::error_code e2(std::errc::operation_not_supported); VERIFY( e1 == e1 ); VERIFY( !(e1 == e2) ); --- 27,33 ---- bool test __attribute__((unused)) = true; std::error_code e1; ! std::error_code e2(std::make_error_code(std::errc::operation_not_supported)); VERIFY( e1 == e1 ); VERIFY( !(e1 == e2) ); diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc Tue Apr 28 10:32:22 2009 *************** int main() *** 27,33 **** bool test __attribute__((unused)) = true; std::error_code e1; ! std::error_code e2(std::errc::operation_not_supported); VERIFY( !(e1 != e1) ); VERIFY( e1 != e2 ); --- 27,33 ---- bool test __attribute__((unused)) = true; std::error_code e1; ! std::error_code e2(std::make_error_code(std::errc::operation_not_supported)); VERIFY( !(e1 != e1) ); VERIFY( e1 != e2 ); diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc Tue Apr 28 10:32:22 2009 *************** *** 0 **** --- 1,60 ---- + // { dg-options "-std=gnu++0x" } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + + enum my_errc { my_err = 0 }; + + class my_error_category_impl + : public std::error_category + { + public: + const char* name() const { return ""; } + std::string message(int) const { return ""; } + } my_error_category_instance; + + std::error_condition + make_error_condition(my_errc e) + { + return std::error_condition(static_cast(e), + my_error_category_instance); + } + + namespace std + { + template<> + struct is_error_condition_enum + : public true_type { }; + } + + // libstdc++/39881 + void test01() + { + bool test __attribute__((unused)) = true; + + std::error_condition ec1(my_err); + VERIFY( ec1 == make_error_condition(my_err) ); + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc Tue Apr 28 10:32:22 2009 *************** *** 0 **** --- 1,61 ---- + // { dg-options "-std=gnu++0x" } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + #include + + enum my_errc { my_err = 0 }; + + class my_error_category_impl + : public std::error_category + { + public: + const char* name() const { return ""; } + std::string message(int) const { return ""; } + } my_error_category_instance; + + std::error_condition + make_error_condition(my_errc e) + { + return std::error_condition(static_cast(e), + my_error_category_instance); + } + + namespace std + { + template<> + struct is_error_condition_enum + : public true_type { }; + } + + // libstdc++/39881 + void test01() + { + bool test __attribute__((unused)) = true; + + std::error_condition ec2; + ec2 = my_err; + VERIFY( ec2 == make_error_condition(my_err) ); + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc Tue Apr 28 10:32:22 2009 *************** *** 0 **** --- 1,29 ---- + // { dg-options "-std=gnu++0x" } + // { dg-do compile } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + + // libstdc++/39880 + void test01() + { + std::error_code ec; + if (ec == std::errc::not_supported) + { } + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc Tue Apr 28 10:32:22 2009 *************** int main() *** 26,32 **** { bool test __attribute__((unused)) = true; const std::string s("too late: boulangerie out of pain au raisin"); ! const std::error_code e(std::errc::operation_not_supported); // 1 { --- 26,33 ---- { bool test __attribute__((unused)) = true; const std::string s("too late: boulangerie out of pain au raisin"); ! const std::error_code ! e(std::make_error_code(std::errc::operation_not_supported)); // 1 { diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc *** gcc-4.4.0/libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc Tue Apr 28 10:32:22 2009 *************** void test01() *** 31,37 **** bool test __attribute__((unused)) = true; std::string s("after nine thirty, this request cannot be met"); ! std::system_error obj = std::system_error(std::errc::invalid_argument, s); std::string s1(obj.what()); std::string s2(obj.what()); VERIFY( s1 == s2 ); --- 31,38 ---- bool test __attribute__((unused)) = true; std::string s("after nine thirty, this request cannot be met"); ! std::system_error obj = ! std::system_error(std::make_error_code(std::errc::invalid_argument), s); std::string s1(obj.what()); std::string s2(obj.what()); VERIFY( s1 == s2 ); diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc gcc-4.4.1/libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc *** gcc-4.4.0/libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc Tue Apr 21 20:26:46 2009 *************** *** 0 **** --- 1,77 ---- + // Copyright (C) 2009 Free Software Foundation + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + // 22.2.2.1.1 num_get members + + #include + #include + #include + #include + + // libstdc++/39802 + void test01() + { + using namespace std; + typedef istreambuf_iterator iterator_type; + + bool test __attribute__((unused)) = true; + + stringstream ss; + const num_get& ng = use_facet >(ss.getloc()); + ios_base::iostate err; + iterator_type end; + const string empty; + + unsigned long ul0 = 1; + const unsigned long ul1 = numeric_limits::max(); + + ss << "-0"; + err = ios_base::goodbit; + end = ng.get(ss.rdbuf(), 0, ss, err, ul0); + VERIFY( err == ios_base::eofbit ); + VERIFY( ul0 == 0 ); + + ss.clear(); + ss.str(empty); + ss << "-1"; + err = ios_base::goodbit; + end = ng.get(ss.rdbuf(), 0, ss, err, ul0); + VERIFY( err == ios_base::eofbit ); + VERIFY( ul0 == ul1 ); + + ss.clear(); + ss.str(empty); + ss << '-' << ul1; + err = ios_base::goodbit; + end = ng.get(ss.rdbuf(), 0, ss, err, ul0); + VERIFY( err == ios_base::eofbit ); + VERIFY( ul0 == 1 ); + + ss.clear(); + ss.str(empty); + ss << '-' << ul1 << '0'; + err = ios_base::goodbit; + end = ng.get(ss.rdbuf(), 0, ss, err, ul0); + VERIFY( err == (ios_base::eofbit | ios_base::failbit) ); + VERIFY( ul0 == ul1 ); + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc gcc-4.4.1/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc *** gcc-4.4.0/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc Tue Apr 21 20:26:46 2009 *************** *** 0 **** --- 1,77 ---- + // Copyright (C) 2009 Free Software Foundation + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + // 22.2.2.1.1 num_get members + + #include + #include + #include + #include + + // libstdc++/39802 + void test01() + { + using namespace std; + typedef istreambuf_iterator iterator_type; + + bool test __attribute__((unused)) = true; + + wstringstream ss; + const num_get& ng = use_facet >(ss.getloc()); + ios_base::iostate err; + iterator_type end; + const wstring empty; + + unsigned long ul0 = 1; + const unsigned long ul1 = numeric_limits::max(); + + ss << L"-0"; + err = ios_base::goodbit; + end = ng.get(ss.rdbuf(), 0, ss, err, ul0); + VERIFY( err == ios_base::eofbit ); + VERIFY( ul0 == 0 ); + + ss.clear(); + ss.str(empty); + ss << L"-1"; + err = ios_base::goodbit; + end = ng.get(ss.rdbuf(), 0, ss, err, ul0); + VERIFY( err == ios_base::eofbit ); + VERIFY( ul0 == ul1 ); + + ss.clear(); + ss.str(empty); + ss << L'-' << ul1; + err = ios_base::goodbit; + end = ng.get(ss.rdbuf(), 0, ss, err, ul0); + VERIFY( err == ios_base::eofbit ); + VERIFY( ul0 == 1 ); + + ss.clear(); + ss.str(empty); + ss << L'-' << ul1 << L'0'; + err = ios_base::goodbit; + end = ng.get(ss.rdbuf(), 0, ss, err, ul0); + VERIFY( err == (ios_base::eofbit | ios_base::failbit) ); + VERIFY( ul0 == ul1 ); + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/23_containers/vector/40192.cc gcc-4.4.1/libstdc++-v3/testsuite/23_containers/vector/40192.cc *** gcc-4.4.0/libstdc++-v3/testsuite/23_containers/vector/40192.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/23_containers/vector/40192.cc Mon May 18 23:16:48 2009 *************** *** 0 **** --- 1,28 ---- + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + // { dg-do compile } + + // libstdc++/40192 + + #include + + void test01() + { + typedef float float4[4]; + std::vector vals; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/25_algorithms/find/39546.cc gcc-4.4.1/libstdc++-v3/testsuite/25_algorithms/find/39546.cc *** gcc-4.4.0/libstdc++-v3/testsuite/25_algorithms/find/39546.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/25_algorithms/find/39546.cc Tue May 12 14:57:35 2009 *************** *** 0 **** --- 1,43 ---- + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + // 25.3.1 algorithms, find() + + #include + #include + #include + #include + + // libstdc++/39546 + void + test01() + { + bool test __attribute__((unused)) = true; + + std::vector dict; + dict.push_back("one"); + dict.push_back("two"); + dict.push_back("three"); + + VERIFY( std::find(dict.begin(), dict.end(), "two") == dict.begin() + 1 ); + } + + int + main() + { + test01(); + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/25_algorithms/minmax/2.cc gcc-4.4.1/libstdc++-v3/testsuite/25_algorithms/minmax/2.cc *** gcc-4.4.0/libstdc++-v3/testsuite/25_algorithms/minmax/2.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/25_algorithms/minmax/2.cc Tue Jun 30 12:10:14 2009 *************** void test01() *** 27,51 **** { bool test __attribute__((unused)) = true; ! std::pair z = std::minmax({1, 2, 3}); ! std::pair w = std::minmax({4, 3, 5, 4}); ! std::pair y = std::minmax({4, 5, 3, 7, 3}); VERIFY( z.first == 1 ); VERIFY( z.second == 3 ); VERIFY( w.first == 3 ); VERIFY( w.second == 5 ); VERIFY( y.first == 3 ); VERIFY( y.second == 7 ); ! ! std::pair zc = std::minmax({1, 2, 3}, std::greater()); ! ! std::pair wc = std::minmax({4, 3, 5, 4}, std::greater()); ! ! std::pair yc = std::minmax({4, 5, 3, 7, 3}, std::greater()); ! VERIFY( zc.first == 3 ); VERIFY( zc.second == 1 ); VERIFY( wc.first == 5 ); --- 27,51 ---- { bool test __attribute__((unused)) = true; ! std::pair z = std::minmax({1, 2, 3}); ! std::pair w = std::minmax({4, 3, 5, 4}); ! std::pair y = std::minmax({4, 5, 3, 7, 3}); VERIFY( z.first == 1 ); VERIFY( z.second == 3 ); VERIFY( w.first == 3 ); VERIFY( w.second == 5 ); VERIFY( y.first == 3 ); VERIFY( y.second == 7 ); ! ! std::pair zc = std::minmax({1, 2, 3}, std::greater()); ! ! std::pair wc = std::minmax({4, 3, 5, 4}, std::greater()); ! ! std::pair yc = std::minmax({4, 5, 3, 7, 3}, std::greater()); ! VERIFY( zc.first == 3 ); VERIFY( zc.second == 1 ); VERIFY( wc.first == 5 ); diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/25_algorithms/minmax/3.cc gcc-4.4.1/libstdc++-v3/testsuite/25_algorithms/minmax/3.cc *** gcc-4.4.0/libstdc++-v3/testsuite/25_algorithms/minmax/3.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/25_algorithms/minmax/3.cc Tue Jun 30 12:10:14 2009 *************** void test01() *** 41,48 **** { bool test __attribute__((unused)) = true; ! std::pair z = std::minmax({1, 2, 3, 4, 5, 6, 7, 8}, ! compare_counter()); // If N is the number of arguments in the minmax function call, // 25.3.7 specifies that at most 3N/2 comparisons are allowed. --- 41,48 ---- { bool test __attribute__((unused)) = true; ! std::pair z = std::minmax({1, 2, 3, 4, 5, 6, 7, 8}, ! compare_counter()); // If N is the number of arguments in the minmax function call, // 25.3.7 specifies that at most 3N/2 comparisons are allowed. diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/26_numerics/valarray/40691.cc gcc-4.4.1/libstdc++-v3/testsuite/26_numerics/valarray/40691.cc *** gcc-4.4.0/libstdc++-v3/testsuite/26_numerics/valarray/40691.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/26_numerics/valarray/40691.cc Wed Jul 15 21:07:07 2009 *************** *** 0 **** --- 1,39 ---- + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + // { dg-do compile } + + #include + + // PR libstdc++/40691 + void test01() + { + const std::valarray vi(12); + std::valarray vb1(12); + std::valarray vb2(3); + std::slice s(0,3,4); + + vb1 = !vi; + vb2 = !(std::valarray)vi[s]; + vb2 = !vi[s]; + } + + int main() + { + test01(); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc gcc-4.4.1/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc *** gcc-4.4.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc Tue Apr 28 10:32:22 2009 *************** void test() *** 32,38 **** char buf[64]; error_code e1; ! error_code e2(errc::bad_address); string s, s1, s2; { --- 32,38 ---- char buf[64]; error_code e1; ! error_code e2(make_error_code(errc::bad_address)); string s, s1, s2; { diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc gcc-4.4.1/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc *** gcc-4.4.0/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc Tue Apr 28 10:32:22 2009 *************** *** 1,6 **** // { dg-options "-std=gnu++0x" } ! // Copyright (C) 2007, 2009 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the --- 1,6 ---- // { dg-options "-std=gnu++0x" } ! // Copyright (C) 2007, 2008, 2009 Free Software Foundation // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the *************** void test() *** 32,38 **** wchar_t buf[64]; error_code e1; ! error_code e2(errc::bad_address); wstring s, s1, s2; { --- 32,38 ---- wchar_t buf[64]; error_code e1; ! error_code e2(make_error_code(errc::bad_address)); wstring s, s1, s2; { diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/29_atomics/atomic_address/cons/aggregate.cc gcc-4.4.1/libstdc++-v3/testsuite/29_atomics/atomic_address/cons/aggregate.cc *** gcc-4.4.0/libstdc++-v3/testsuite/29_atomics/atomic_address/cons/aggregate.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/29_atomics/atomic_address/cons/aggregate.cc Mon Jul 13 21:31:10 2009 *************** *** 1,5 **** // { dg-options "-std=gnu++0x" } ! // { dg-do compile { xfail *-*-* } } // Copyright (C) 2008, 2009 Free Software Foundation, Inc. // --- 1,5 ---- // { dg-options "-std=gnu++0x" } ! // { dg-do compile } // Copyright (C) 2008, 2009 Free Software Foundation, Inc. // *************** *** 23,28 **** int main() { ! std::atomic_address a = { { NULL } }; // { dg-excess-errors "braces around" } return 0; } --- 23,28 ---- int main() { ! std::atomic_address a = { { NULL } }; return 0; } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/30_threads/call_once/39909.cc gcc-4.4.1/libstdc++-v3/testsuite/30_threads/call_once/39909.cc *** gcc-4.4.0/libstdc++-v3/testsuite/30_threads/call_once/39909.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/30_threads/call_once/39909.cc Tue May 5 21:44:27 2009 *************** *** 0 **** --- 1,56 ---- + // { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* alpha*-*-osf* mips-sgi-irix6* } } + // { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* alpha*-*-osf* mips-sgi-irix6* } } + // { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } } + // { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } } + // { dg-require-cstdint "" } + // { dg-require-gthreads "" } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + + #include + #include + #include + + std::once_flag flag; + int value = 0; + + struct Inc { void operator()() const { ++value; } }; + + struct Func + { + void operator()() const + { + Inc inc; + for (int i = 0; i < 10000; ++i) + std::call_once(flag, inc); + } + }; + + int main() + { + Func f; + std::thread t1(f); + std::thread t2(f); + std::thread t3(f); + t1.join(); + t2.join(); + t3.join(); + VERIFY( value == 1 ); + return 0; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc gcc-4.4.1/libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc *** gcc-4.4.0/libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc Tue Apr 28 10:32:22 2009 *************** void test01() *** 44,50 **** } catch (const std::system_error& ex) { ! VERIFY( ex.code() == std::error_code(std::errc::operation_not_permitted) ); } catch (...) { --- 44,51 ---- } catch (const std::system_error& ex) { ! VERIFY( ex.code() == std::make_error_code ! (std::errc::operation_not_permitted) ); } catch (...) { *************** void test02() *** 80,87 **** } catch (const std::system_error& ex) { ! VERIFY( ex.code() == std::error_code( ! std::errc::resource_deadlock_would_occur) ); } catch (...) { --- 81,88 ---- } catch (const std::system_error& ex) { ! VERIFY( ex.code() == std::make_error_code ! (std::errc::resource_deadlock_would_occur) ); } catch (...) { diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/ext/rope/40299.cc gcc-4.4.1/libstdc++-v3/testsuite/ext/rope/40299.cc *** gcc-4.4.0/libstdc++-v3/testsuite/ext/rope/40299.cc Thu Jan 1 00:00:00 1970 --- gcc-4.4.1/libstdc++-v3/testsuite/ext/rope/40299.cc Tue Jun 2 09:06:45 2009 *************** *** 0 **** --- 1,27 ---- + // { dg-options "-std=gnu++0x" } + // { dg-do compile } + + // Copyright (C) 2009 Free Software Foundation, Inc. + // + // This file is part of the GNU ISO C++ Library. This library is free + // software; you can redistribute it and/or modify it under the + // terms of the GNU General Public License as published by the + // Free Software Foundation; either version 3, or (at your option) + // any later version. + // + // This library is distributed in the hope that it will be useful, + // but WITHOUT ANY WARRANTY; without even the implied warranty of + // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + // GNU General Public License for more details. + // + // You should have received a copy of the GNU General Public License along + // with this library; see the file COPYING3. If not see + // . + + #include + + // libstdc++/40299 + void test01() + { + __gnu_cxx::crope asdf; + } diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/lib/libstdc++.exp gcc-4.4.1/libstdc++-v3/testsuite/lib/libstdc++.exp *** gcc-4.4.0/libstdc++-v3/testsuite/lib/libstdc++.exp Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/lib/libstdc++.exp Thu May 21 11:30:55 2009 *************** proc v3_target_compile { source dest typ *** 402,409 **** # Flag setting based on type argument. if { $type == "executable" } { # Link the support objects into executables. ! set cxx_final [concat $cxx_final $cxxldflags] ! lappend options "additional_flags=./libtestc++.a" } else { if { $type == "sharedlib" } { # Don't link in anything. --- 402,408 ---- # Flag setting based on type argument. if { $type == "executable" } { # Link the support objects into executables. ! lappend options "additional_flags=./libtestc++.a $cxxldflags" } else { if { $type == "sharedlib" } { # Don't link in anything. diff -Nrcpad gcc-4.4.0/libstdc++-v3/testsuite/util/testsuite_abi.cc gcc-4.4.1/libstdc++-v3/testsuite/util/testsuite_abi.cc *** gcc-4.4.0/libstdc++-v3/testsuite/util/testsuite_abi.cc Thu Apr 9 23:23:07 2009 --- gcc-4.4.1/libstdc++-v3/testsuite/util/testsuite_abi.cc Tue May 5 21:44:27 2009 *************** check_version(symbol& test, bool added) *** 183,188 **** --- 183,189 ---- known_versions.push_back("GLIBCXX_3.4.9"); known_versions.push_back("GLIBCXX_3.4.10"); known_versions.push_back("GLIBCXX_3.4.11"); + known_versions.push_back("GLIBCXX_3.4.12"); known_versions.push_back("GLIBCXX_LDBL_3.4"); known_versions.push_back("GLIBCXX_LDBL_3.4.7"); known_versions.push_back("GLIBCXX_LDBL_3.4.10"); diff -Nrcpad gcc-4.4.0/maintainer-scripts/ChangeLog gcc-4.4.1/maintainer-scripts/ChangeLog *** gcc-4.4.0/maintainer-scripts/ChangeLog Tue Apr 21 08:46:46 2009 --- gcc-4.4.1/maintainer-scripts/ChangeLog Wed Jul 22 07:30:50 2009 *************** *** 1,3 **** --- 1,7 ---- + 2009-07-22 Release Manager + + * GCC 4.4.1 released. + 2009-04-21 Release Manager * GCC 4.4.0 released. diff -Nrcpad gcc-4.4.0/zlib/ChangeLog gcc-4.4.1/zlib/ChangeLog *** gcc-4.4.0/zlib/ChangeLog Tue Apr 21 08:48:02 2009 --- gcc-4.4.1/zlib/ChangeLog Wed Jul 22 07:32:07 2009 *************** *** 1,3 **** --- 1,7 ---- + 2009-07-22 Release Manager + + * GCC 4.4.1 released. + 2009-04-21 Release Manager * GCC 4.4.0 released.