[packages/crossmingw64-gcc] updated.
pluto
pluto at pld-linux.org
Thu Dec 20 22:27:37 CET 2012
commit 8c3f48e4321d2e8e8e7a3f46301ccd7658e6a81d
Author: Paweł Sikora <pawel.sikora at agmk.net>
Date: Thu Dec 20 22:27:23 2012 +0100
updated.
crossmingw64-gcc.spec | 11 +-
gcc-branch.diff | 346744 -----------------------------------------------
2 files changed, 6 insertions(+), 346749 deletions(-)
---
diff --git a/crossmingw64-gcc.spec b/crossmingw64-gcc.spec
index f937bf8..e0a0f9c 100644
--- a/crossmingw64-gcc.spec
+++ b/crossmingw64-gcc.spec
@@ -9,18 +9,19 @@ Summary(pl.UTF-8): Skrośne narzędzia programistyczne GNU dla Mingw64 - gcc
Summary(pt_BR.UTF-8): Utilitários para desenvolvimento de binários da GNU - Mingw64 gcc
Summary(tr.UTF-8): GNU geliştirme araçları - Mingw64 gcc
Name: crossmingw64-gcc
-Version: 4.7.1
-Release: 4
+Version: 4.7.2
+Release: 1
Epoch: 1
License: GPL v3+
Group: Development/Languages
Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/gcc-%{version}.tar.bz2
-# Source0-md5: 933e6f15f51c031060af64a9e14149ff
+# Source0-md5: cc308a0891e778cfda7a151ab8a6e762
# svn co https://mingw-w64.svn.sourceforge.net/svnroot/mingw-w64/stable/v2.x/mingw-w64-crt mingw64-crt
-%define _rev 5377
+%define _rev 5515
Source1: mingw64-crt.tar.xz
-# Source1-md5: ee609a06a5ead72f0b203495b5f76527
+# Source1-md5: bf9051e7e4deb445e9e8877ca68211e1
Patch0: gcc-branch.diff
+# Patch0-md5: 2add58e2b9d9874ba62e05ca9b6b513f
Patch1: gcc-mingw-dirs.patch
URL: http://mingw-w64.sourceforge.net/
BuildRequires: autoconf
diff --git a/gcc-branch.diff b/gcc-branch.diff
deleted file mode 100644
index 8922a2c..0000000
--- a/gcc-branch.diff
+++ /dev/null
@@ -1,346744 +0,0 @@
-Index: libgomp/ChangeLog
-===================================================================
---- libgomp/ChangeLog (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgomp/ChangeLog (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,3 +1,23 @@
-+2012-06-14 Jakub Jelinek <jakub at redhat.com>
-+
-+ Backported from mainline
-+ 2012-06-07 Jakub Jelinek <jakub at redhat.com>
-+
-+ PR middle-end/53580
-+ * testsuite/libgomp.c/pr26943-2.c: Remove #pragma omp barrier,
-+ use GOMP_barrier () call instead.
-+ * testsuite/libgomp.c/pr26943-3.c: Likewise.
-+ * testsuite/libgomp.c/pr26943-4.c: Likewise.
-+ * testsuite/libgomp.fortran/vla4.f90: Remove !$omp barrier,
-+ call GOMP_barrier instead.
-+ * testsuite/libgomp.fortran/vla5.f90: Likewise.
-+
-+ 2012-06-06 Jakub Jelinek <jakub at redhat.com>
-+
-+ PR libgomp/52993
-+ * config/linux/lock.c (gomp_init_nest_lock_25): Fix up last
-+ argument to memset call.
-+
- 2012-06-14 Release Manager
-
- * GCC 4.7.1 released.
-Index: libgomp/testsuite/libgomp.fortran/vla4.f90
-===================================================================
---- libgomp/testsuite/libgomp.fortran/vla4.f90 (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgomp/testsuite/libgomp.fortran/vla4.f90 (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -10,6 +10,10 @@
-
- subroutine foo (c, d, e, f, g, h, i, j, k, n)
- use omp_lib
-+ interface
-+ subroutine GOMP_barrier () bind(c, name="GOMP_barrier")
-+ end subroutine
-+ end interface
- integer :: n
- character (len = *) :: c
- character (len = n) :: d
-@@ -94,7 +98,7 @@
- forall (p = 1:2, q = 3:7, r = 1:7) u(p, q, r) = 30 - x - p + q - 2 * r
- forall (p = 1:5, q = 3:7, p + q .le. 8) v(p, q) = w(1:7)
- forall (p = 1:5, q = 3:7, p + q .gt. 8) v(p, q) = w(20:26)
--!$omp barrier ! { dg-warning "may not be closely nested" }
-+ call GOMP_barrier
- y = ''
- if (x .eq. 0) y = '0'
- if (x .eq. 1) y = '1'
-Index: libgomp/testsuite/libgomp.fortran/vla5.f90
-===================================================================
---- libgomp/testsuite/libgomp.fortran/vla5.f90 (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgomp/testsuite/libgomp.fortran/vla5.f90 (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -10,6 +10,10 @@
-
- subroutine foo (c, d, e, f, g, h, i, j, k, n)
- use omp_lib
-+ interface
-+ subroutine GOMP_barrier () bind(c, name="GOMP_barrier")
-+ end subroutine
-+ end interface
- integer :: n
- character (len = *) :: c
- character (len = n) :: d
-@@ -66,7 +70,7 @@
- forall (p = 1:2, q = 3:7, r = 1:7) u(p, q, r) = 30 - x - p + q - 2 * r
- forall (p = 1:5, q = 3:7, p + q .le. 8) v(p, q) = w(1:7)
- forall (p = 1:5, q = 3:7, p + q .gt. 8) v(p, q) = w(20:26)
--!$omp barrier ! { dg-warning "may not be closely nested" }
-+ call GOMP_barrier
- y = ''
- if (x .eq. 0) y = '0'
- if (x .eq. 1) y = '1'
-Index: libgomp/testsuite/libgomp.c/pr26943-2.c
-===================================================================
---- libgomp/testsuite/libgomp.c/pr26943-2.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgomp/testsuite/libgomp.c/pr26943-2.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -3,6 +3,7 @@
-
- extern int omp_set_dynamic (int);
- extern void abort (void);
-+extern void GOMP_barrier (void);
-
- int a = 8, b = 12, c = 16, d = 20, j = 0;
- char e[10] = "a", f[10] = "b", g[10] = "c", h[10] = "d";
-@@ -20,7 +21,7 @@
- {
- if (a != 8 || b != 12 || e[0] != 'a' || f[0] != 'b')
- j++;
--#pragma omp barrier /* { dg-warning "may not be closely nested" } */
-+ GOMP_barrier ();
- #pragma omp atomic
- a += i;
- b += i;
-@@ -31,7 +32,7 @@
- f[0] += i;
- g[0] = 'g' + i;
- h[0] = 'h' + i;
--#pragma omp barrier /* { dg-warning "may not be closely nested" } */
-+ GOMP_barrier ();
- if (a != 8 + 6 || b != 12 + i || c != i || d != i)
- j += 8;
- if (e[0] != 'a' + 6 || f[0] != 'b' + i || g[0] != 'g' + i)
-Index: libgomp/testsuite/libgomp.c/pr26943-3.c
-===================================================================
---- libgomp/testsuite/libgomp.c/pr26943-3.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgomp/testsuite/libgomp.c/pr26943-3.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -4,6 +4,7 @@
- extern int omp_set_dynamic (int);
- extern int omp_get_thread_num (void);
- extern void abort (void);
-+extern void GOMP_barrier (void);
-
- int a = 8, b = 12, c = 16, d = 20, j = 0, l = 0;
- char e[10] = "a", f[10] = "b", g[10] = "c", h[10] = "d";
-@@ -26,7 +27,7 @@
- {
- if (a != 8 || b != 12 || e[0] != 'a' || f[0] != 'b')
- j++;
--#pragma omp barrier /* { dg-warning "may not be closely nested" } */
-+ GOMP_barrier ();
- #pragma omp atomic
- a += i;
- b += i;
-@@ -37,7 +38,7 @@
- f[0] += i;
- g[0] = 'g' + i;
- h[0] = 'h' + i;
--#pragma omp barrier /* { dg-warning "may not be closely nested" } */
-+ GOMP_barrier ();
- if (a != 8 + 6 || b != 12 + i || c != i || d != i)
- j += 8;
- if (e[0] != 'a' + 6 || f[0] != 'b' + i || g[0] != 'g' + i)
-Index: libgomp/testsuite/libgomp.c/pr26943-4.c
-===================================================================
---- libgomp/testsuite/libgomp.c/pr26943-4.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgomp/testsuite/libgomp.c/pr26943-4.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -4,6 +4,7 @@
- extern int omp_set_dynamic (int);
- extern int omp_get_thread_num (void);
- extern void abort (void);
-+extern void GOMP_barrier (void);
-
- int a = 8, b = 12, c = 16, d = 20, j = 0, l = 0;
- char e[10] = "a", f[10] = "b", g[10] = "c", h[10] = "d";
-@@ -27,7 +28,7 @@
- {
- if (a != 8 || b != 12 || e[0] != 'a' || f[0] != 'b')
- j++;
--#pragma omp barrier /* { dg-warning "may not be closely nested" } */
-+ GOMP_barrier ();
- #pragma omp atomic
- a += i;
- b += i;
-@@ -38,7 +39,7 @@
- f[0] += i;
- g[0] = 'g' + i;
- h[0] = 'h' + i;
--#pragma omp barrier /* { dg-warning "may not be closely nested" } */
-+ GOMP_barrier ();
- if (a != 8 + 6 || b != 12 + i || c != i || d != i)
- j += 8;
- if (e[0] != 'a' + 6 || f[0] != 'b' + i || g[0] != 'g' + i)
-Index: libgomp/config/linux/lock.c
-===================================================================
---- libgomp/config/linux/lock.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgomp/config/linux/lock.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2005, 2008, 2009, 2011 Free Software Foundation, Inc.
-+/* Copyright (C) 2005, 2008, 2009, 2011, 2012 Free Software Foundation, Inc.
- Contributed by Richard Henderson <rth at redhat.com>.
-
- This file is part of the GNU OpenMP Library (libgomp).
-@@ -175,7 +175,7 @@
- void
- gomp_init_nest_lock_25 (omp_nest_lock_25_t *lock)
- {
-- memset (lock, 0, sizeof (lock));
-+ memset (lock, 0, sizeof (*lock));
- }
-
- void
-Index: libstdc++-v3/src/c++11/condition_variable.cc
-===================================================================
---- libstdc++-v3/src/c++11/condition_variable.cc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/src/c++11/condition_variable.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // condition_variable -*- C++ -*-
-
--// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
-+// Copyright (C) 2008, 2009, 2010, 2012 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
-@@ -32,12 +32,12 @@
-
- #ifdef __GTHREAD_COND_INIT
- condition_variable::condition_variable() noexcept = default;
-- condition_variable::~condition_variable() noexcept = default;
- #else
- condition_variable::condition_variable() noexcept
- {
- __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
- }
-+#endif
-
- condition_variable::~condition_variable() noexcept
- {
-@@ -45,7 +45,6 @@
- /* int __e = */ __gthread_cond_destroy(&_M_cond);
- // if __e == EBUSY then blocked
- }
--#endif
-
- void
- condition_variable::wait(unique_lock<mutex>& __lock)
-Index: libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
-===================================================================
---- libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -22,11 +22,16 @@
- // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- // <http://www.gnu.org/licenses/>.
-
-+#include <bits/c++config.h>
-+#if defined(_GLIBCXX_HAVE_TLS) && defined(PIC)
-+#define _GLIBCXX_ASYNC_ABI_COMPAT
-+#endif
-+
- #include <future>
- #include <mutex>
-
- #ifndef __GXX_EXPERIMENTAL_CXX0X__
--# error "compatibility-c++0x.cc must be compiled with -std=gnu++0x"
-+# error "compatibility-thread-c++0x.cc must be compiled with -std=gnu++0x"
- #endif
-
- #define _GLIBCXX_ASM_SYMVER(cur, old, version) \
-@@ -70,3 +75,23 @@
-
- #endif
- #endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
-+
-+
-+// XXX GLIBCXX_ABI Deprecated
-+// gcc-4.7.0
-+// <future> export changes
-+#if defined(_GLIBCXX_HAS_GTHREADS) && defined(_GLIBCXX_USE_C99_STDINT_TR1) \
-+ && (ATOMIC_INT_LOCK_FREE > 1)
-+#if defined(_GLIBCXX_HAVE_TLS) && defined(PIC)
-+namespace std _GLIBCXX_VISIBILITY(default)
-+{
-+_GLIBCXX_BEGIN_NAMESPACE_VERSION
-+ __future_base::_Async_state_common::~_Async_state_common() { _M_join(); }
-+
-+ // Explicit instantiation due to -fno-implicit-instantiation.
-+ template void call_once(once_flag&, void (thread::*&&)(), reference_wrapper<thread>&&);
-+ template _Bind_simple_helper<void (thread::*)(), reference_wrapper<thread>>::__type __bind_simple(void (thread::*&&)(), reference_wrapper<thread>&&);
-+_GLIBCXX_END_NAMESPACE_VERSION
-+} // namespace std
-+#endif
-+#endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1
-Index: libstdc++-v3/src/c++11/future.cc
-===================================================================
---- libstdc++-v3/src/c++11/future.cc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/src/c++11/future.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -84,15 +84,7 @@
- __future_base::_Result_base::~_Result_base() = default;
-
- __future_base::_State_base::~_State_base() = default;
--
--#ifdef _GLIBCXX_HAVE_TLS
-- __future_base::_Async_state_common::~_Async_state_common() { _M_join(); }
--
-- // Explicit instantiation due to -fno-implicit-instantiation.
-- template void call_once(once_flag&, void (thread::*&&)(), reference_wrapper<thread>&&);
-- template _Bind_simple_helper<void (thread::*)(), reference_wrapper<thread>>::__type __bind_simple(void (thread::*&&)(), reference_wrapper<thread>&&);
- #endif
--#endif
-
- _GLIBCXX_END_NAMESPACE_VERSION
- } // namespace std
-Index: libstdc++-v3/include/debug/unordered_map
-===================================================================
---- libstdc++-v3/include/debug/unordered_map (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/debug/unordered_map (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -247,8 +247,8 @@
- }
-
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- std::pair<iterator, bool>
- insert(_Pair&& __obj)
- {
-@@ -260,8 +260,8 @@
- }
-
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __hint, _Pair&& __obj)
- {
-@@ -661,8 +661,8 @@
- }
-
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(_Pair&& __obj)
- {
-@@ -673,8 +673,8 @@
- }
-
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __hint, _Pair&& __obj)
- {
-Index: libstdc++-v3/include/debug/map.h
-===================================================================
---- libstdc++-v3/include/debug/map.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/debug/map.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -212,8 +212,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- std::pair<iterator, bool>
- insert(_Pair&& __x)
- {
-@@ -243,8 +243,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __position, _Pair&& __x)
- {
-Index: libstdc++-v3/include/debug/multimap.h
-===================================================================
---- libstdc++-v3/include/debug/multimap.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/debug/multimap.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -200,8 +200,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(_Pair&& __x)
- { return iterator(_Base::insert(std::forward<_Pair>(__x)), this); }
-@@ -226,8 +226,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __position, _Pair&& __x)
- {
-Index: libstdc++-v3/include/std/thread
-===================================================================
---- libstdc++-v3/include/std/thread (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/std/thread (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // <thread> -*- C++ -*-
-
--// Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
-+// Copyright (C) 2008, 2009, 2010, 2011, 2012 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
-@@ -188,7 +188,7 @@
- _M_make_routine(_Callable&& __f)
- {
- // Create and allocate full data structure, not base.
-- return make_shared<_Impl<_Callable>>(std::forward<_Callable>(__f));
-+ return std::make_shared<_Impl<_Callable>>(std::forward<_Callable>(__f));
- }
- };
-
-Index: libstdc++-v3/include/std/future
-===================================================================
---- libstdc++-v3/include/std/future (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/std/future (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1425,10 +1425,10 @@
- class __future_base::_Async_state_common : public __future_base::_State_base
- {
- protected:
--#ifdef _GLIBCXX_HAVE_TLS
-+#ifdef _GLIBCXX_ASYNC_ABI_COMPAT
- ~_Async_state_common();
- #else
-- ~_Async_state_common() { _M_join(); }
-+ ~_Async_state_common() = default;
- #endif
-
- // Allow non-timed waiting functions to block until the thread completes,
-@@ -1455,6 +1455,8 @@
- } };
- }
-
-+ ~_Async_state_impl() { _M_join(); }
-+
- private:
- typedef __future_base::_Ptr<_Result<_Res>> _Ptr_type;
- _Ptr_type _M_result;
-Index: libstdc++-v3/include/std/condition_variable
-===================================================================
---- libstdc++-v3/include/std/condition_variable (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/std/condition_variable (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // <condition_variable> -*- C++ -*-
-
--// Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
-+// Copyright (C) 2008, 2009, 2010, 2011, 2012 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
-@@ -176,6 +176,26 @@
- condition_variable _M_cond;
- mutex _M_mutex;
-
-+ // scoped unlock - unlocks in ctor, re-locks in dtor
-+ template<typename _Lock>
-+ struct _Unlock
-+ {
-+ explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
-+
-+ ~_Unlock() noexcept(false)
-+ {
-+ if (uncaught_exception())
-+ __try { _M_lock.lock(); } __catch(...) { }
-+ else
-+ _M_lock.lock();
-+ }
-+
-+ _Unlock(const _Unlock&) = delete;
-+ _Unlock& operator=(const _Unlock&) = delete;
-+
-+ _Lock& _M_lock;
-+ };
-+
- public:
-
- condition_variable_any() noexcept;
-@@ -202,21 +222,8 @@
- void
- wait(_Lock& __lock)
- {
-- // scoped unlock - unlocks in ctor, re-locks in dtor
-- struct _Unlock {
-- explicit _Unlock(_Lock& __lk) : _M_lock(__lk) { __lk.unlock(); }
-- ~_Unlock() noexcept(false)
-- {
-- if (uncaught_exception())
-- __try { _M_lock.lock(); } __catch(...) { }
-- else
-- _M_lock.lock();
-- }
-- _Lock& _M_lock;
-- };
--
- unique_lock<mutex> __my_lock(_M_mutex);
-- _Unlock __unlock(__lock);
-+ _Unlock<_Lock> __unlock(__lock);
- // _M_mutex must be unlocked before re-locking __lock so move
- // ownership of _M_mutex lock to an object with shorter lifetime.
- unique_lock<mutex> __my_lock2(std::move(__my_lock));
-@@ -237,11 +244,12 @@
- wait_until(_Lock& __lock,
- const chrono::time_point<_Clock, _Duration>& __atime)
- {
-- unique_lock<mutex> __my_lock(_M_mutex);
-- __lock.unlock();
-- cv_status __status = _M_cond.wait_until(__my_lock, __atime);
-- __lock.lock();
-- return __status;
-+ unique_lock<mutex> __my_lock(_M_mutex);
-+ _Unlock<_Lock> __unlock(__lock);
-+ // _M_mutex must be unlocked before re-locking __lock so move
-+ // ownership of _M_mutex lock to an object with shorter lifetime.
-+ unique_lock<mutex> __my_lock2(std::move(__my_lock));
-+ return _M_cond.wait_until(__my_lock2, __atime);
- }
-
- template<typename _Lock, typename _Clock,
-Index: libstdc++-v3/include/std/mutex
-===================================================================
---- libstdc++-v3/include/std/mutex (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/std/mutex (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -116,13 +116,13 @@
-
- // matches a recursive mutex with a member 'actual'
- template<typename _Rm>
-- static typename enable_if<sizeof(&_Rm::actual), void>::type
-+ static typename enable_if<(bool)sizeof(&_Rm::actual), void>::type
- _S_destroy(_Rm* __mx)
- { __gthread_mutex_destroy(&__mx->actual); }
-
- // matches a gthr-win32.h recursive mutex
- template<typename _Rm>
-- static typename enable_if<sizeof(&_Rm::sema), void>::type
-+ static typename enable_if<(bool)sizeof(&_Rm::sema), void>::type
- _S_destroy(_Rm* __mx)
- {
- __gthread_mutex_t __tmp;
-Index: libstdc++-v3/include/decimal/decimal.h
-===================================================================
---- libstdc++-v3/include/decimal/decimal.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/decimal/decimal.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -288,7 +288,7 @@
- inline _Tp operator _Op(_Tp __rhs) \
- { \
- _Tp __tmp; \
-- __tmp.__setval(0 _Op __rhs.__getval()); \
-+ __tmp.__setval(_Op __rhs.__getval()); \
- return __tmp; \
- }
-
-Index: libstdc++-v3/include/ext/concurrence.h
-===================================================================
---- libstdc++-v3/include/ext/concurrence.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/ext/concurrence.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // Support for concurrent programing -*- C++ -*-
-
--// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-+// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
- // Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library. This library is free
-@@ -143,7 +143,11 @@
- class __mutex
- {
- private:
-+#if __GTHREADS && defined __GTHREAD_MUTEX_INIT
-+ __gthread_mutex_t _M_mutex = __GTHREAD_MUTEX_INIT;
-+#else
- __gthread_mutex_t _M_mutex;
-+#endif
-
- __mutex(const __mutex&);
- __mutex& operator=(const __mutex&);
-@@ -151,17 +155,10 @@
- public:
- __mutex()
- {
--#if __GTHREADS
-+#if __GTHREADS && ! defined __GTHREAD_MUTEX_INIT
- if (__gthread_active_p())
-- {
--#if defined __GTHREAD_MUTEX_INIT
-- __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
-- _M_mutex = __tmp;
--#else
-- __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
-+ __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
- #endif
-- }
--#endif
- }
-
- #if __GTHREADS && ! defined __GTHREAD_MUTEX_INIT
-@@ -201,7 +198,11 @@
- class __recursive_mutex
- {
- private:
-+#if __GTHREADS && defined __GTHREAD_RECURSIVE_MUTEX_INIT
-+ __gthread_recursive_mutex_t _M_mutex = __GTHREAD_RECURSIVE_MUTEX_INIT;
-+#else
- __gthread_recursive_mutex_t _M_mutex;
-+#endif
-
- __recursive_mutex(const __recursive_mutex&);
- __recursive_mutex& operator=(const __recursive_mutex&);
-@@ -209,17 +210,10 @@
- public:
- __recursive_mutex()
- {
--#if __GTHREADS
-+#if __GTHREADS && ! defined __GTHREAD_RECURSIVE_MUTEX_INIT
- if (__gthread_active_p())
-- {
--#if defined __GTHREAD_RECURSIVE_MUTEX_INIT
-- __gthread_recursive_mutex_t __tmp = __GTHREAD_RECURSIVE_MUTEX_INIT;
-- _M_mutex = __tmp;
--#else
-- __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex);
-+ __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex);
- #endif
-- }
--#endif
- }
-
- #if __GTHREADS && ! defined __GTHREAD_RECURSIVE_MUTEX_INIT
-@@ -270,7 +264,7 @@
-
- // matches a gthr-win32.h recursive mutex
- template<typename _Rm>
-- static typename __enable_if<sizeof(&_Rm::sema), void>::__type
-+ static typename __enable_if<(bool)sizeof(&_Rm::sema), void>::__type
- _S_destroy(_Rm* __mx)
- {
- __gthread_mutex_t __tmp;
-@@ -279,7 +273,7 @@
-
- // matches a recursive mutex with a member 'actual'
- template<typename _Rm>
-- static typename __enable_if<sizeof(&_Rm::actual), void>::__type
-+ static typename __enable_if<(bool)sizeof(&_Rm::actual), void>::__type
- _S_destroy(_Rm* __mx)
- { __gthread_mutex_destroy(&__mx->actual); }
-
-@@ -319,7 +313,11 @@
- class __cond
- {
- private:
-+#if __GTHREADS && defined __GTHREAD_COND_INIT
-+ __gthread_cond_t _M_cond = __GTHREAD_COND_INIT;
-+#else
- __gthread_cond_t _M_cond;
-+#endif
-
- __cond(const __cond&);
- __cond& operator=(const __cond&);
-@@ -327,17 +325,10 @@
- public:
- __cond()
- {
--#if __GTHREADS
-+#if __GTHREADS && ! defined __GTHREAD_COND_INIT
- if (__gthread_active_p())
-- {
--#if defined __GTHREAD_COND_INIT
-- __gthread_cond_t __tmp = __GTHREAD_COND_INIT;
-- _M_cond = __tmp;
--#else
-- __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
-+ __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
- #endif
-- }
--#endif
- }
-
- #if __GTHREADS && ! defined __GTHREAD_COND_INIT
-Index: libstdc++-v3/include/ext/rope
-===================================================================
---- libstdc++-v3/include/ext/rope (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/ext/rope (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,7 +1,7 @@
- // SGI's rope class -*- C++ -*-
-
--// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
--// Free Software Foundation, Inc.
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
-+// 2012 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
-@@ -44,6 +44,8 @@
- #ifndef _ROPE
- #define _ROPE 1
-
-+#pragma GCC system_header
-+
- #include <algorithm>
- #include <iosfwd>
- #include <bits/stl_construct.h>
-@@ -458,20 +460,28 @@
- volatile _RC_t _M_ref_count;
-
- // Constructor
-+#ifdef __GTHREAD_MUTEX_INIT
-+ __gthread_mutex_t _M_ref_count_lock = __GTHREAD_MUTEX_INIT;
-+#else
- __gthread_mutex_t _M_ref_count_lock;
-+#endif
-
-- _Refcount_Base(_RC_t __n) : _M_ref_count(__n), _M_ref_count_lock()
-+ _Refcount_Base(_RC_t __n) : _M_ref_count(__n)
- {
--#ifdef __GTHREAD_MUTEX_INIT
-- __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
-- _M_ref_count_lock = __tmp;
--#elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
-+#ifndef __GTHREAD_MUTEX_INIT
-+#ifdef __GTHREAD_MUTEX_INIT_FUNCTION
- __GTHREAD_MUTEX_INIT_FUNCTION (&_M_ref_count_lock);
- #else
- #error __GTHREAD_MUTEX_INIT or __GTHREAD_MUTEX_INIT_FUNCTION should be defined by gthr.h abstraction layer, report problem to libstdc++ at gcc.gnu.org.
- #endif
-+#endif
- }
-
-+#ifndef __GTHREAD_MUTEX_INIT
-+ ~_Refcount_Base()
-+ { __gthread_mutex_destroy(&_M_ref_count_lock); }
-+#endif
-+
- void
- _M_incr()
- {
-@@ -581,7 +591,11 @@
- bool _M_is_balanced:8;
- unsigned char _M_depth;
- __GC_CONST _CharT* _M_c_string;
-+#ifdef __GTHREAD_MUTEX_INIT
-+ __gthread_mutex_t _M_c_string_lock = __GTHREAD_MUTEX_INIT;
-+#else
- __gthread_mutex_t _M_c_string_lock;
-+#endif
- /* Flattened version of string, if needed. */
- /* typically 0. */
- /* If it's not 0, then the memory is owned */
-@@ -602,13 +616,11 @@
- #endif
- _M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0)
- #ifdef __GTHREAD_MUTEX_INIT
-- {
-- // Do not copy a POSIX/gthr mutex once in use. However, bits are bits.
-- __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
-- _M_c_string_lock = __tmp;
-- }
-+ { }
- #else
-- { __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
-+ { __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
-+ ~_Rope_RopeRep()
-+ { __gthread_mutex_destroy (&_M_c_string_lock); }
- #endif
- #ifdef __GC
- void
-Index: libstdc++-v3/include/ext/alloc_traits.h
-===================================================================
---- libstdc++-v3/include/ext/alloc_traits.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/ext/alloc_traits.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // Allocator traits -*- C++ -*-
-
--// Copyright (C) 2011 Free Software Foundation, Inc.
-+// Copyright (C) 2011, 2012 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
-@@ -49,37 +49,56 @@
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
--template<typename _Alloc>
-- struct __allocator_always_compares_equal
-- { static const bool value = false; };
-+ template<typename _Alloc>
-+ struct __allocator_always_compares_equal
-+ { static const bool value = false; };
-
-+ template<typename _Alloc>
-+ const bool __allocator_always_compares_equal<_Alloc>::value;
-+
- template<typename _Tp>
- struct __allocator_always_compares_equal<std::allocator<_Tp>>
- { static const bool value = true; };
-
-+ template<typename _Tp>
-+ const bool __allocator_always_compares_equal<std::allocator<_Tp>>::value;
-+
- template<typename, typename> struct array_allocator;
-
- template<typename _Tp, typename _Array>
- struct __allocator_always_compares_equal<array_allocator<_Tp, _Array>>
- { static const bool value = true; };
-
-+ template<typename _Tp, typename _Array>
-+ const bool
-+ __allocator_always_compares_equal<array_allocator<_Tp, _Array>>::value;
-+
- template<typename> struct mt_allocator;
-
- template<typename _Tp>
- struct __allocator_always_compares_equal<mt_allocator<_Tp>>
- { static const bool value = true; };
-
-+ template<typename _Tp>
-+ const bool __allocator_always_compares_equal<mt_allocator<_Tp>>::value;
-+
- template<typename> struct new_allocator;
-
- template<typename _Tp>
- struct __allocator_always_compares_equal<new_allocator<_Tp>>
- { static const bool value = true; };
-
-+ template<typename _Tp>
-+ const bool __allocator_always_compares_equal<new_allocator<_Tp>>::value;
-+
- template<typename> struct pool_allocator;
-
- template<typename _Tp>
- struct __allocator_always_compares_equal<pool_allocator<_Tp>>
- { static const bool value = true; };
-+
-+ template<typename _Tp>
-+ const bool __allocator_always_compares_equal<pool_allocator<_Tp>>::value;
- #endif
-
- /**
-Index: libstdc++-v3/include/profile/unordered_map
-===================================================================
---- libstdc++-v3/include/profile/unordered_map (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/profile/unordered_map (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // Profiling unordered_map/unordered_multimap implementation -*- C++ -*-
-
--// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
-+// Copyright (C) 2009, 2010, 2011, 2012 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
-@@ -214,8 +214,8 @@
- }
-
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- std::pair<iterator, bool>
- insert(_Pair&& __obj)
- {
-@@ -227,8 +227,8 @@
- }
-
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __iter, _Pair&& __v)
- {
-@@ -503,8 +503,8 @@
- }
-
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(_Pair&& __obj)
- {
-@@ -515,8 +515,8 @@
- }
-
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __iter, _Pair&& __v)
- {
-Index: libstdc++-v3/include/profile/map.h
-===================================================================
---- libstdc++-v3/include/profile/map.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/profile/map.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // Profiling map implementation -*- C++ -*-
-
--// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
-+// Copyright (C) 2009, 2010, 2011, 2012 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
-@@ -248,8 +248,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- std::pair<iterator, bool>
- insert(_Pair&& __x)
- {
-@@ -289,8 +289,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __position, _Pair&& __x)
- {
-Index: libstdc++-v3/include/profile/multimap.h
-===================================================================
---- libstdc++-v3/include/profile/multimap.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/profile/multimap.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // Profiling multimap implementation -*- C++ -*-
-
--// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
-+// Copyright (C) 2009, 2010, 2011, 2012 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
-@@ -186,8 +186,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(_Pair&& __x)
- { return iterator(_Base::insert(std::forward<_Pair>(__x))); }
-@@ -209,8 +209,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __position, _Pair&& __x)
- { return iterator(_Base::insert(__position,
-Index: libstdc++-v3/include/bits/hashtable.h
-===================================================================
---- libstdc++-v3/include/bits/hashtable.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/hashtable.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -550,8 +550,8 @@
-
- template<typename _Pair, typename = typename
- std::enable_if<__and_<integral_constant<bool, !__constant_iterators>,
-- std::is_convertible<_Pair,
-- value_type>>::value>::type>
-+ std::is_constructible<value_type,
-+ _Pair&&>>::value>::type>
- _Insert_Return_Type
- insert(_Pair&& __v)
- { return _M_insert(std::forward<_Pair>(__v),
-@@ -559,8 +559,8 @@
-
- template<typename _Pair, typename = typename
- std::enable_if<__and_<integral_constant<bool, !__constant_iterators>,
-- std::is_convertible<_Pair,
-- value_type>>::value>::type>
-+ std::is_constructible<value_type,
-+ _Pair&&>>::value>::type>
- iterator
- insert(const_iterator, _Pair&& __v)
- { return _Insert_Conv_Type()(insert(std::forward<_Pair>(__v))); }
-@@ -760,11 +760,12 @@
- _M_element_count(0),
- _M_rehash_policy()
- {
-- _M_bucket_count = std::max(_M_rehash_policy._M_next_bkt(__bucket_hint),
-- _M_rehash_policy.
-- _M_bkt_for_elements(__detail::
-- __distance_fw(__f,
-- __l)));
-+ _M_bucket_count =
-+ _M_rehash_policy._M_bkt_for_elements(__detail::__distance_fw(__f,
-+ __l));
-+ if (_M_bucket_count <= __bucket_hint)
-+ _M_bucket_count = _M_rehash_policy._M_next_bkt(__bucket_hint);
-+
- // We don't want the rehash policy to ask for the hashtable to shrink
- // on the first insertion so we need to reset its previous resize
- // level.
-@@ -1582,10 +1583,20 @@
- rehash(size_type __n)
- {
- const _RehashPolicyState& __saved_state = _M_rehash_policy._M_state();
-- _M_rehash(std::max(_M_rehash_policy._M_next_bkt(__n),
-- _M_rehash_policy._M_bkt_for_elements(_M_element_count
-- + 1)),
-- __saved_state);
-+ std::size_t __buckets
-+ = _M_rehash_policy._M_bkt_for_elements(_M_element_count + 1);
-+ if (__buckets <= __n)
-+ __buckets = _M_rehash_policy._M_next_bkt(__n);
-+
-+ if (__buckets != _M_bucket_count)
-+ {
-+ _M_rehash(__buckets, __saved_state);
-+
-+ // We don't want the rehash policy to ask for the hashtable to shrink
-+ // on the next insertion so we need to reset its previous resize
-+ // level.
-+ _M_rehash_policy._M_prev_resize = 0;
-+ }
- }
-
- template<typename _Key, typename _Value,
-Index: libstdc++-v3/include/bits/stl_list.h
-===================================================================
---- libstdc++-v3/include/bits/stl_list.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/stl_list.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,7 +1,7 @@
- // List implementation -*- C++ -*-
-
- // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--// 2011 Free Software Foundation, Inc.
-+// 2011, 2012 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
-@@ -313,27 +313,17 @@
- {
- __detail::_List_node_base _M_node;
-
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- size_t _M_size;
--#endif
--
- _List_impl()
- : _Node_alloc_type(), _M_node()
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- , _M_size(0)
--#endif
- { }
-
- _List_impl(const _Node_alloc_type& __a)
- : _Node_alloc_type(__a), _M_node()
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- , _M_size(0)
--#endif
- { }
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- _List_impl(_Node_alloc_type&& __a)
-- : _Node_alloc_type(std::move(__a)), _M_node(), _M_size(0)
-+ : _Node_alloc_type(std::move(__a)), _M_node()
- { }
- #endif
- };
-@@ -342,23 +332,12 @@
-
- _List_node<_Tp>*
- _M_get_node()
-- {
-- _List_node<_Tp>* __tmp = _M_impl._Node_alloc_type::allocate(1);
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- ++_M_impl._M_size;
--#endif
-- return __tmp;
-- }
-+ { return _M_impl._Node_alloc_type::allocate(1); }
-
- void
- _M_put_node(_List_node<_Tp>* __p)
-- {
-- _M_impl._Node_alloc_type::deallocate(__p, 1);
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- --_M_impl._M_size;
--#endif
-- }
--
-+ { _M_impl._Node_alloc_type::deallocate(__p, 1); }
-+
- public:
- typedef _Alloc allocator_type;
-
-@@ -392,7 +371,6 @@
- {
- _M_init();
- __detail::_List_node_base::swap(_M_impl._M_node, __x._M_impl._M_node);
-- std::swap(_M_impl._M_size, __x._M_impl._M_size);
- }
- #endif
-
-@@ -874,13 +852,7 @@
- /** Returns the number of elements in the %list. */
- size_type
- size() const _GLIBCXX_NOEXCEPT
-- {
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- return this->_M_impl._M_size;
--#else
-- return std::distance(begin(), end());
--#endif
-- }
-+ { return std::distance(begin(), end()); }
-
- /** Returns the size() of the largest possible %list. */
- size_type
-@@ -1215,9 +1187,6 @@
- {
- __detail::_List_node_base::swap(this->_M_impl._M_node,
- __x._M_impl._M_node);
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- std::swap(this->_M_impl._M_size, __x._M_impl._M_size);
--#endif
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 431. Swapping containers with unequal allocators.
-@@ -1262,11 +1231,6 @@
- _M_check_equal_allocators(__x);
-
- this->_M_transfer(__position, __x.begin(), __x.end());
--
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- this->_M_impl._M_size += __x.size();
-- __x._M_impl._M_size = 0;
--#endif
- }
- }
-
-@@ -1298,15 +1262,8 @@
- return;
-
- if (this != &__x)
-- {
-- _M_check_equal_allocators(__x);
-+ _M_check_equal_allocators(__x);
-
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- ++this->_M_impl._M_size;
-- --__x._M_impl._M_size;
--#endif
-- }
--
- this->_M_transfer(__position, __i, __j);
- }
-
-@@ -1340,16 +1297,8 @@
- if (__first != __last)
- {
- if (this != &__x)
-- {
-- _M_check_equal_allocators(__x);
-+ _M_check_equal_allocators(__x);
-
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- const size_type __size = std::distance(__first, __last);
-- this->_M_impl._M_size += __size;
-- __x._M_impl._M_size -= __size;
--#endif
-- }
--
- this->_M_transfer(__position, __first, __last);
- }
- }
-@@ -1624,10 +1573,6 @@
- inline bool
- operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
- {
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- return (__x.size() == __y.size()
-- && std::equal(__x.begin(), __x.end(), __y.begin()));
--#else
- typedef typename list<_Tp, _Alloc>::const_iterator const_iterator;
- const_iterator __end1 = __x.end();
- const_iterator __end2 = __y.end();
-@@ -1640,7 +1585,6 @@
- ++__i2;
- }
- return __i1 == __end1 && __i2 == __end2;
--#endif
- }
-
- /**
-Index: libstdc++-v3/include/bits/stl_map.h
-===================================================================
---- libstdc++-v3/include/bits/stl_map.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/stl_map.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,7 +1,7 @@
- // Map implementation -*- C++ -*-
-
- // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--// 2011 Free Software Foundation, Inc.
-+// 2011, 2012 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
-@@ -524,8 +524,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- std::pair<iterator, bool>
- insert(_Pair&& __x)
- { return _M_t._M_insert_unique(std::forward<_Pair>(__x)); }
-@@ -577,8 +577,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __position, _Pair&& __x)
- { return _M_t._M_insert_unique_(__position,
-Index: libstdc++-v3/include/bits/hashtable_policy.h
-===================================================================
---- libstdc++-v3/include/bits/hashtable_policy.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/hashtable_policy.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -294,6 +294,8 @@
-
- enum { _S_n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48 };
-
-+ static const std::size_t _S_growth_factor = 2;
-+
- float _M_max_load_factor;
- mutable std::size_t _M_prev_resize;
- mutable std::size_t _M_next_resize;
-@@ -314,28 +316,27 @@
- static const unsigned char __fast_bkt[12]
- = { 2, 2, 2, 3, 5, 5, 7, 7, 11, 11, 11, 11 };
-
-- if (__n <= 11)
-+ const std::size_t __grown_n = __n * _S_growth_factor;
-+ if (__grown_n <= 11)
- {
- _M_prev_resize = 0;
- _M_next_resize
-- = __builtin_ceil(__fast_bkt[__n] * (long double)_M_max_load_factor);
-- return __fast_bkt[__n];
-+ = __builtin_ceil(__fast_bkt[__grown_n]
-+ * (long double)_M_max_load_factor);
-+ return __fast_bkt[__grown_n];
- }
-
-- const unsigned long* __p
-- = std::lower_bound(__prime_list + 5, __prime_list + _S_n_primes, __n);
-+ const unsigned long* __next_bkt
-+ = std::lower_bound(__prime_list + 5, __prime_list + _S_n_primes,
-+ __grown_n);
-+ const unsigned long* __prev_bkt
-+ = std::lower_bound(__prime_list + 1, __next_bkt, __n / _S_growth_factor);
-
-- // Shrink will take place only if the number of elements is small enough
-- // so that the prime number 2 steps before __p is large enough to still
-- // conform to the max load factor:
- _M_prev_resize
-- = __builtin_floor(*(__p - 2) * (long double)_M_max_load_factor);
--
-- // Let's guaranty that a minimal grow step of 11 is used
-- if (*__p - __n < 11)
-- __p = std::lower_bound(__p, __prime_list + _S_n_primes, __n + 11);
-- _M_next_resize = __builtin_ceil(*__p * (long double)_M_max_load_factor);
-- return *__p;
-+ = __builtin_floor(*(__prev_bkt - 1) * (long double)_M_max_load_factor);
-+ _M_next_resize
-+ = __builtin_ceil(*__next_bkt * (long double)_M_max_load_factor);
-+ return *__next_bkt;
- }
-
- // Return the smallest prime p such that alpha p >= n, where alpha
-Index: libstdc++-v3/include/bits/unique_ptr.h
-===================================================================
---- libstdc++-v3/include/bits/unique_ptr.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/unique_ptr.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -166,7 +166,13 @@
- #endif
-
- // Destructor.
-- ~unique_ptr() noexcept { reset(); }
-+ ~unique_ptr() noexcept
-+ {
-+ auto& __ptr = std::get<0>(_M_t);
-+ if (__ptr != nullptr)
-+ get_deleter()(__ptr);
-+ __ptr = pointer();
-+ }
-
- // Assignment.
- unique_ptr&
-@@ -310,7 +316,13 @@
- { }
-
- // Destructor.
-- ~unique_ptr() { reset(); }
-+ ~unique_ptr()
-+ {
-+ auto& __ptr = std::get<0>(_M_t);
-+ if (__ptr != nullptr)
-+ get_deleter()(__ptr);
-+ __ptr = pointer();
-+ }
-
- // Assignment.
- unique_ptr&
-Index: libstdc++-v3/include/bits/stl_multimap.h
-===================================================================
---- libstdc++-v3/include/bits/stl_multimap.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/stl_multimap.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,7 +1,7 @@
- // Multimap implementation -*- C++ -*-
-
- // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--// 2011 Free Software Foundation, Inc.
-+// 2011, 2012 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
-@@ -445,8 +445,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(_Pair&& __x)
- { return _M_t._M_insert_equal(std::forward<_Pair>(__x)); }
-@@ -482,8 +482,8 @@
-
- #ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _Pair, typename = typename
-- std::enable_if<std::is_convertible<_Pair,
-- value_type>::value>::type>
-+ std::enable_if<std::is_constructible<value_type,
-+ _Pair&&>::value>::type>
- iterator
- insert(const_iterator __position, _Pair&& __x)
- { return _M_t._M_insert_equal_(__position,
-Index: libstdc++-v3/include/bits/stl_pair.h
-===================================================================
---- libstdc++-v3/include/bits/stl_pair.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/stl_pair.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,7 +1,7 @@
- // Pair implementation -*- C++ -*-
-
- // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
--// 2010, 2011
-+// 2010, 2011, 2012
- // Free Software Foundation, Inc.
- //
- // This file is part of the GNU ISO C++ Library. This library is free
-@@ -117,14 +117,8 @@
- : first(__p.first), second(__p.second) { }
-
- constexpr pair(const pair&) = default;
-+ constexpr pair(pair&&) = default;
-
-- // XXX Defaulted?!? Breaks std::map!!!
-- pair(pair&& __p)
-- noexcept(__and_<is_nothrow_move_constructible<_T1>,
-- is_nothrow_move_constructible<_T2>>::value)
-- : first(std::forward<first_type>(__p.first)),
-- second(std::forward<second_type>(__p.second)) { }
--
- // DR 811.
- template<class _U1, class = typename
- enable_if<is_convertible<_U1, _T1>::value>::type>
-Index: libstdc++-v3/include/bits/ptr_traits.h
-===================================================================
---- libstdc++-v3/include/bits/ptr_traits.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/ptr_traits.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // Pointer Traits -*- C++ -*-
-
--// Copyright (C) 2011 Free Software Foundation, Inc.
-+// Copyright (C) 2011, 2012 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
-@@ -86,6 +86,9 @@
- static const bool __value = _S_chk<_Ptr, _Up>(nullptr);
- };
-
-+ template<typename _Ptr, typename _Up>
-+ const bool __ptrtr_rebind_helper<_Ptr, _Up>::__value;
-+
- template<typename _Tp, typename _Up,
- bool = __ptrtr_rebind_helper<_Tp, _Up>::__value>
- struct __ptrtr_rebind;
-Index: libstdc++-v3/include/bits/list.tcc
-===================================================================
---- libstdc++-v3/include/bits/list.tcc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/list.tcc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,7 +1,7 @@
- // List implementation (out of line) -*- C++ -*-
-
- // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
--// 2011 Free Software Foundation, Inc.
-+// 2011, 2012 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
-@@ -139,14 +139,14 @@
- list<_Tp, _Alloc>::
- resize(size_type __new_size)
- {
-- if (__new_size > size())
-- _M_default_append(__new_size - size());
-- else if (__new_size < size())
-- {
-- iterator __i = begin();
-- std::advance(__i, __new_size);
-- erase(__i, end());
-- }
-+ iterator __i = begin();
-+ size_type __len = 0;
-+ for (; __i != end() && __len < __new_size; ++__i, ++__len)
-+ ;
-+ if (__len == __new_size)
-+ erase(__i, end());
-+ else // __i == end()
-+ _M_default_append(__new_size - __len);
- }
-
- template<typename _Tp, typename _Alloc>
-@@ -154,14 +154,14 @@
- list<_Tp, _Alloc>::
- resize(size_type __new_size, const value_type& __x)
- {
-- if (__new_size > size())
-- insert(end(), __new_size - size(), __x);
-- else if (__new_size < size())
-- {
-- iterator __i = begin();
-- std::advance(__i, __new_size);
-- erase(__i, end());
-- }
-+ iterator __i = begin();
-+ size_type __len = 0;
-+ for (; __i != end() && __len < __new_size; ++__i, ++__len)
-+ ;
-+ if (__len == __new_size)
-+ erase(__i, end());
-+ else // __i == end()
-+ insert(end(), __new_size - __len, __x);
- }
- #else
- template<typename _Tp, typename _Alloc>
-@@ -312,11 +312,6 @@
- ++__first1;
- if (__first2 != __last2)
- _M_transfer(__last1, __first2, __last2);
--
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- this->_M_impl._M_size += __x.size();
-- __x._M_impl._M_size = 0;
--#endif
- }
- }
-
-@@ -351,11 +346,6 @@
- ++__first1;
- if (__first2 != __last2)
- _M_transfer(__last1, __first2, __last2);
--
--#ifdef __GXX_EXPERIMENTAL_CXX0X__
-- this->_M_impl._M_size += __x.size();
-- __x._M_impl._M_size = 0;
--#endif
- }
- }
-
-Index: libstdc++-v3/include/bits/alloc_traits.h
-===================================================================
---- libstdc++-v3/include/bits/alloc_traits.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/include/bits/alloc_traits.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // Allocator traits -*- C++ -*-
-
--// Copyright (C) 2011 Free Software Foundation, Inc.
-+// Copyright (C) 2011, 2012 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
-@@ -56,6 +56,9 @@
- static const bool __value = _S_chk<_Alloc, _Tp>(nullptr);
- };
-
-+ template<typename _Alloc, typename _Tp>
-+ const bool __alloctr_rebind_helper<_Alloc, _Tp>::__value;
-+
- template<typename _Alloc, typename _Tp,
- bool = __alloctr_rebind_helper<_Alloc, _Tp>::__value>
- struct __alloctr_rebind;
-@@ -423,6 +426,27 @@
- };
-
- template<typename _Alloc>
-+ template<typename _Alloc2>
-+ const bool allocator_traits<_Alloc>::__allocate_helper<_Alloc2>::value;
-+
-+ template<typename _Alloc>
-+ template<typename _Tp, typename... _Args>
-+ const bool
-+ allocator_traits<_Alloc>::__construct_helper<_Tp, _Args...>::value;
-+
-+ template<typename _Alloc>
-+ template<typename _Tp>
-+ const bool allocator_traits<_Alloc>::__destroy_helper<_Tp>::value;
-+
-+ template<typename _Alloc>
-+ template<typename _Alloc2>
-+ const bool allocator_traits<_Alloc>::__maxsize_helper<_Alloc2>::value;
-+
-+ template<typename _Alloc>
-+ template<typename _Alloc2>
-+ const bool allocator_traits<_Alloc>::__select_helper<_Alloc2>::value;
-+
-+ template<typename _Alloc>
- inline void
- __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type)
- { __one = __two; }
-Index: libstdc++-v3/ChangeLog
-===================================================================
---- libstdc++-v3/ChangeLog (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/ChangeLog (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,3 +1,192 @@
-+2012-08-26 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ * testsuite/30_threads/async/54297.cc: Add dg-require-nanosleep.
-+
-+2012-08-26 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/54297
-+ * src/c++11/future.cc (~_Async_state_common): Move to...
-+ * src/c++11/compatibility-thread-c++0x.cc (~_Async_state_common):
-+ Here.
-+ (_GLIBCXX_ABI_COMPAT_ASYNC): Rename to _GLIBCXX_ASYNC_ABI_COMPAT.
-+ * include/std/future (_GLIBCXX_ABI_COMPAT_ASYNC): Likewise.
-+
-+2012-08-26 Jonathan Wakely <jwakely.gcc at gmail.com>
-+ Geoff Romer <gromer at google.com>
-+
-+ PR libstdc++/54351
-+ * include/bits/unique_ptr.h (unique_ptr<T>::~unique_ptr): Do not use
-+ reset().
-+ (unique_ptr<T[]>::~unique_ptr()): Likewise.
-+ * testsuite/20_util/unique_ptr/54351.cc: New.
-+ * testsuite/20_util/unique_ptr/assign/48635_neg.cc: Adjust dg-error
-+ line numbers.
-+
-+2012-08-25 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/54297
-+ * include/std/future (~_Async_state_impl): Join thread before
-+ derived class members are destroyed.
-+ (~_Async_state_common): Only define non-trivial destructor when
-+ included from future.cc for ABI compatibility reasons.
-+ * src/c++11/future.cc (_GLIBCXX_ABI_COMPAT_ASYNC): Define.
-+ * testsuite/30_threads/async/54297.cc: New.
-+
-+2012-08-13 David Adler <d.adler.s at gmail.com>
-+
-+ PR libstdc++/54185
-+ * src/c++11/condition_variable.cc (condition_variable): Always
-+ destroy native type in destructor.
-+ * testsuite/30_threads/condition_variable/54185.cc: New.
-+
-+2012-08-06 Peter Bergner <bergner at vnet.ibm.com>
-+
-+ PR libstdc++/54036
-+ * include/decimal/decimal.h (_DEFINE_DECIMAL_UNARY_OP): Use _Op as
-+ a unary operator.
-+ * testsuite/decimal/pr54036-1.cc: New test.
-+ * testsuite/decimal/pr54036-2.cc: Likewise.
-+ * testsuite/decimal/pr54036-3.cc: Likewise.
-+
-+2012-08-02 Michael Hope <michael.hope at linaro.org>
-+
-+ Backport from mainline r186389:
-+ 2012-04-12 Andreas Schwab <schwab at linux-m68k.org>
-+
-+ * testsuite/Makefile.am (check_DEJAGNUnormal0): Run
-+ prettyprinters.exp.
-+ * testsuite/Makefile.in: Regenerated.
-+
-+2012-07-29 François Dumont <fdumont at gcc.gnu.org>
-+
-+ PR libstdc++/54075
-+ * include/bits/hashtable_policy.h
-+ (_Prime_rehash_policy::_M_next_bkt): Add a growth factor set to 2
-+ to boost growth in the number of buckets.
-+ * testsuite/performance/23_containers/insert/unordered_set.cc: New.
-+
-+2012-07-26 François Dumont <fdumont at gcc.gnu.org>
-+
-+ PR libstdc++/54075
-+ * include/bits/hashtable.h
-+ (_Hashtable<>::_Hashtable(_InputIterator, _InputIterator,
-+ size_type, ...): Remove std::max usage to guarantee that hashtable
-+ state is consistent with hash policy state.
-+ (_Hashtable<>::rehash): Likewise. Set _M_prev_resize to 0 to avoid
-+ the hashtable shrinking on next insertion.
-+ * testsuite/23_containers/unordered_set/modifiers/reserve.cc: New.
-+ * testsuite/23_containers/unordered_multiset/modifiers/reserve.cc: New.
-+ * testsuite/23_containers/unordered_map/modifiers/reserve.cc: New.
-+ * testsuite/23_containers/unordered_multimap/modifiers/reserve.cc: New.
-+
-+2012-07-20 Paolo Carlini <paolo.carlini at oracle.com>
-+
-+ * testsuite/30_threads/thread/adl.cc: Add missing dg-requires.
-+
-+2012-07-16 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/53270
-+ * include/ext/concurrence.h: Use NSDMI for gthreads types.
-+ * include/ext/rope: Likewise. Destroy mutexes in destructors. Add
-+ system_header pragma.
-+
-+ Revert:
-+ 2012-06-19 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/53270
-+ * config/os/gnu-linux/os_defines.h: Disable static initializer macros
-+ for gthreads types in C++11 mode.
-+
-+2012-07-16 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/53978
-+ * include/bits/alloc_traits.h (allocator_traits): Define static
-+ constants.
-+ * include/bits/ptr_traits.h (pointer_traits): Likewise.
-+ * include/ext/alloc_traits.h (__allocator_always_compares_equal):
-+ Likewise.
-+
-+2012-07-13 Paolo Carlini <paolo.carlini at oracle.com>
-+
-+ PR libstdc++/53657
-+ * include/bits/stl_pair.h (pair<>::pair(pair&&)): Declare defaulted,
-+ per C++11.
-+ * include/bits/stl_map.h (map<>::insert(_Pair&&), map<>::insert
-+ (const_iterator, _Pair&&)): Constrain with std::is_constructible,
-+ per LWG2005.
-+ * include/bits/stl_multimap.h (multimap<>::insert(_Pair&&),
-+ multimap<>::insert(const_iterator, _Pair&&)): Likewise.
-+ * include/bits/hashtable_policy.h (_Insert<>::insert(_Pair&&),
-+ _Insert<>::insert(const_iterator, _Pair&&)): Likewise.
-+ * include/debug/unordered_map: Adjust.
-+ * include/debug/map.h: Likewise.
-+ * include/debug/multimap.h: Likewise.
-+ * include/profile/unordered_map: Likewise.
-+ * include/profile/map.h: Likewise.
-+ * include/profile/multimap.h: Likewise.
-+
-+2012-07-07 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/53578
-+ * include/ext/concurrence.h (__recursive_mutex::_S_destroy): Fix
-+ narrowing conversion.
-+ * include/std/mutex (__recursive_mutex_base::_S_destroy): Likewise.
-+
-+2012-07-06 Paolo Carlini <paolo.carlini at oracle.com>
-+
-+ PR libstdc++/53872
-+ * include/std/thread (thread::_M_make_routine): Qualify make_shared
-+ to prevent ADL.
-+ * testsuite/30_threads/thread/adl.cc: New.
-+
-+2012-07-05 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ * include/std/condition_variable: Update copyright years.
-+
-+2012-07-05 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/53830
-+ * include/std/condition_variable (condition_variable_any::wait):
-+ Move _Unlock type to class scope.
-+ (condition_variable_any::wait_until): Reuse it.
-+ * testsuite/30_threads/condition_variable_any/53830.cc: New.
-+
-+2012-07-02 Paolo Carlini <paolo.carlini at oracle.com>
-+
-+ Revert:
-+ 2011-10-04 Paolo Carlini <paolo.carlini at oracle.com>
-+
-+ PR libstdc++/49561
-+ * include/bits/stl_list.h (_List_base<>::_List_impl::_M_size):
-+ Add in C++0x mode.
-+ (_List_base<>::_List_impl, _List_base<>::_M_get_node,
-+ _List_base<>::_M_put_node, _List_base<>::_List_base(_List_base&&),
-+ list<>::size, list<>::swap, list<>::splice): Use it.
-+ (operator==(const list<>&, const list<>&)): Rewrite in C++0x mode.
-+ * include/bits/list.tcc (list<>::erase): Likewise.
-+ (list<>::merge): Adjust in C++0x mode.
-+ * testsuite/23_containers/list/requirements/dr438/assign_neg.cc:
-+ Adjust dg-error line number.
-+ * testsuite/23_containers/list/requirements/dr438/insert_neg.cc:
-+ Likewise.
-+ * testsuite/23_containers/list/requirements/dr438/
-+ constructor_1_neg.cc: Likewise.
-+ * testsuite/23_containers/list/requirements/dr438/
-+ constructor_2_neg.cc: Likewise.
-+
-+2012-06-19 Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/53270
-+ * config/os/gnu-linux/os_defines.h: Disable static initializer macros
-+ for gthreads types in C++11 mode.
-+
-+2012-06-19 Jörg Sonnenberger <joerg at britannica.bec.de>
-+ Jonathan Wakely <jwakely.gcc at gmail.com>
-+
-+ PR libstdc++/53678
-+ * config/os/bsd/netbsd/ctype_base.h: Check for _CTYPE_U.
-+ * testsuite/22_locale/ctype_base/53678.cc: New.
-+
- 2012-06-14 Release Manager
-
- * GCC 4.7.1 released.
-Index: libstdc++-v3/testsuite/Makefile.in
-===================================================================
---- libstdc++-v3/testsuite/Makefile.in (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/testsuite/Makefile.in (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -572,7 +572,7 @@
- normal0) \
- if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
- $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \
-- $(RUNTESTFLAGS) abi.exp; \
-+ $(RUNTESTFLAGS) abi.exp prettyprinters.exp; \
- else echo "WARNING: could not find \`runtest'" 1>&2; :;\
- fi; \
- dirs="`cd $$srcdir; echo [013-9][0-9]_*/*`";; \
-Index: libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc
-===================================================================
---- libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,62 @@
-+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } }
-+// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } }
-+// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
-+// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
-+// { dg-require-cstdint "" }
-+// { dg-require-gthreads "" }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+#include <vector>
-+#include <mutex>
-+#include <condition_variable>
-+#include <thread>
-+
-+// PR libstdc++/54185
-+
-+std::condition_variable* cond = nullptr;
-+std::mutex mx;
-+int started = 0;
-+int constexpr NUM_THREADS = 10;
-+
-+void do_thread_a()
-+{
-+ std::unique_lock<std::mutex> lock(mx);
-+ if(++started >= NUM_THREADS)
-+ {
-+ cond->notify_all();
-+ delete cond;
-+ cond = nullptr;
-+ }
-+ else
-+ cond->wait(lock);
-+}
-+
-+int main(){
-+ std::vector<std::thread> vec;
-+ for(int j = 0; j < 1000; ++j)
-+ {
-+ started = 0;
-+ cond = new std::condition_variable;
-+ for (int i = 0; i < NUM_THREADS; ++i)
-+ vec.emplace_back(&do_thread_a);
-+ for (int i = 0; i < NUM_THREADS; ++i)
-+ vec[i].join();
-+ vec.clear();
-+ }
-+}
-Index: libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
-===================================================================
---- libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,68 @@
-+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } }
-+// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } }
-+// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
-+// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
-+// { dg-require-cstdint "" }
-+// { dg-require-gthreads "" }
-+// { dg-require-sched-yield "" }
-+// { dg-require-nanosleep "" }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+// PR libstdc++/53830
-+// Test for deadlock in condition_variable_any::wait_for
-+
-+#include <thread>
-+#include <mutex>
-+#include <condition_variable>
-+#include <chrono>
-+#include <atomic>
-+
-+std::mutex mutex;
-+std::condition_variable_any cv;
-+
-+std::atomic<int> barrier(0);
-+
-+// waits for data from another thread
-+void wait_for_data()
-+{
-+ std::unique_lock<std::mutex> lock(mutex);
-+ barrier = 1;
-+ cv.wait_for(lock, std::chrono::milliseconds(100), []{ return false; });
-+ // read data
-+}
-+
-+// passes data to waiting thread
-+void provide_data()
-+{
-+ while (barrier == 0)
-+ std::this_thread::yield();
-+ std::unique_lock<std::mutex> lock(mutex);
-+ // pass data
-+ std::this_thread::sleep_for(std::chrono::seconds(1));
-+ cv.notify_one();
-+}
-+
-+int main()
-+{
-+ std::thread thread1(wait_for_data);
-+ provide_data();
-+ thread1.join();
-+ return 0;
-+}
-+
-Index: libstdc++-v3/testsuite/30_threads/thread/adl.cc
-===================================================================
---- libstdc++-v3/testsuite/30_threads/thread/adl.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/30_threads/thread/adl.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,39 @@
-+// { dg-do compile }
-+// { dg-options "-std=gnu++11" }
-+// { dg-require-cstdint "" }
-+// { dg-require-gthreads "" }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+#include <thread>
-+#include <memory>
-+#include <functional>
-+
-+template<typename, typename...P>
-+void make_shared(P&&...)
-+{}
-+
-+struct C {};
-+
-+void f(C){}
-+
-+// PR libstdc++/53872
-+int main()
-+{
-+ std::thread t(std::bind(&::f, C()));
-+}
-Index: libstdc++-v3/testsuite/30_threads/async/54297.cc
-===================================================================
---- libstdc++-v3/testsuite/30_threads/async/54297.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/30_threads/async/54297.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,51 @@
-+// { dg-do run { target *-*-freebsd* *-*-netbsd* *-*-linux* *-*-solaris* *-*-cygwin *-*-darwin* powerpc-ibm-aix* } }
-+// { dg-options " -std=gnu++0x -pthread" { target *-*-freebsd* *-*-netbsd* *-*-linux* powerpc-ibm-aix* } }
-+// { dg-options " -std=gnu++0x -pthreads" { target *-*-solaris* } }
-+// { dg-options " -std=gnu++0x " { target *-*-cygwin *-*-darwin* } }
-+// { dg-require-cstdint "" }
-+// { dg-require-gthreads "" }
-+// { dg-require-atomic-builtins "" }
-+// { dg-require-nanosleep "" }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+#include <chrono>
-+#include <thread>
-+#include <future>
-+#include <set>
-+#include <testsuite_hooks.h>
-+
-+struct Task;
-+
-+std::set<const Task*> dead_tasks;
-+
-+struct Task
-+{
-+ ~Task() { dead_tasks.insert(this); }
-+
-+ void operator()() const
-+ {
-+ std::this_thread::sleep_for(std::chrono::seconds(1));
-+ VERIFY( dead_tasks.count(this) == 0 );
-+ }
-+};
-+
-+int main()
-+{
-+ std::async(std::launch::async, Task());
-+}
-Index: libstdc++-v3/testsuite/decimal/pr54036-1.cc
-===================================================================
---- libstdc++-v3/testsuite/decimal/pr54036-1.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/decimal/pr54036-1.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,70 @@
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+// { dg-require-effective-target dfp }
-+
-+#include <decimal/decimal>
-+#include <testsuite_hooks.h>
-+
-+using namespace std::decimal;
-+
-+decimal32
-+__attribute__ ((noinline))
-+my_nan32 (void)
-+{
-+ decimal32 z = 0;
-+ decimal32 v = z/z;
-+ return v;
-+}
-+
-+decimal32
-+__attribute__ ((noinline))
-+my_inf32 (void)
-+{
-+ decimal32 o = 1;
-+ decimal32 z = 0;
-+ decimal32 v = o/z;
-+ return v;
-+}
-+
-+int
-+main ()
-+{
-+ decimal32 v;
-+
-+ v = my_nan32 ();
-+
-+ VERIFY (__builtin_isnand32 (v.__getval ()));
-+ VERIFY (!__builtin_signbitd32 (v.__getval ()));
-+
-+ v = -v;
-+
-+ VERIFY (__builtin_isnand32 (v.__getval ()));
-+ VERIFY (__builtin_signbitd32 (v.__getval ()));
-+
-+ v = my_inf32 ();
-+
-+ VERIFY (__builtin_isinfd32 (v.__getval ()));
-+ VERIFY (!__builtin_signbitd32 (v.__getval ()));
-+
-+ v = -v;
-+
-+ VERIFY (__builtin_isinfd32 (v.__getval ()));
-+ VERIFY (__builtin_signbitd32 (v.__getval ()));
-+
-+ return 0;
-+}
-Index: libstdc++-v3/testsuite/decimal/pr54036-2.cc
-===================================================================
---- libstdc++-v3/testsuite/decimal/pr54036-2.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/decimal/pr54036-2.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,70 @@
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+// { dg-require-effective-target dfp }
-+
-+#include <decimal/decimal>
-+#include <testsuite_hooks.h>
-+
-+using namespace std::decimal;
-+
-+decimal64
-+__attribute__ ((noinline))
-+my_nan64 (void)
-+{
-+ decimal64 z = 0;
-+ decimal64 v = z/z;
-+ return v;
-+}
-+
-+decimal64
-+__attribute__ ((noinline))
-+my_inf64 (void)
-+{
-+ decimal64 o = 1;
-+ decimal64 z = 0;
-+ decimal64 v = o/z;
-+ return v;
-+}
-+
-+int
-+main ()
-+{
-+ decimal64 v;
-+
-+ v = my_nan64 ();
-+
-+ VERIFY (__builtin_isnand64 (v.__getval ()));
-+ VERIFY (!__builtin_signbitd64 (v.__getval ()));
-+
-+ v = -v;
-+
-+ VERIFY (__builtin_isnand64 (v.__getval ()));
-+ VERIFY (__builtin_signbitd64 (v.__getval ()));
-+
-+ v = my_inf64 ();
-+
-+ VERIFY (__builtin_isinfd64 (v.__getval ()));
-+ VERIFY (!__builtin_signbitd64 (v.__getval ()));
-+
-+ v = -v;
-+
-+ VERIFY (__builtin_isinfd64 (v.__getval ()));
-+ VERIFY (__builtin_signbitd64 (v.__getval ()));
-+
-+ return 0;
-+}
-Index: libstdc++-v3/testsuite/decimal/pr54036-3.cc
-===================================================================
---- libstdc++-v3/testsuite/decimal/pr54036-3.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/decimal/pr54036-3.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,70 @@
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+// { dg-require-effective-target dfp }
-+
-+#include <decimal/decimal>
-+#include <testsuite_hooks.h>
-+
-+using namespace std::decimal;
-+
-+decimal128
-+__attribute__ ((noinline))
-+my_nan128 (void)
-+{
-+ decimal128 z = 0;
-+ decimal128 v = z/z;
-+ return v;
-+}
-+
-+decimal128
-+__attribute__ ((noinline))
-+my_inf128 (void)
-+{
-+ decimal128 o = 1;
-+ decimal128 z = 0;
-+ decimal128 v = o/z;
-+ return v;
-+}
-+
-+int
-+main ()
-+{
-+ decimal128 v;
-+
-+ v = my_nan128 ();
-+
-+ VERIFY (__builtin_isnand128 (v.__getval ()));
-+ VERIFY (!__builtin_signbitd128 (v.__getval ()));
-+
-+ v = -v;
-+
-+ VERIFY (__builtin_isnand128 (v.__getval ()));
-+ VERIFY (__builtin_signbitd128 (v.__getval ()));
-+
-+ v = my_inf128 ();
-+
-+ VERIFY (__builtin_isinfd128 (v.__getval ()));
-+ VERIFY (!__builtin_signbitd128 (v.__getval ()));
-+
-+ v = -v;
-+
-+ VERIFY (__builtin_isinfd128 (v.__getval ()));
-+ VERIFY (__builtin_signbitd128 (v.__getval ()));
-+
-+ return 0;
-+}
-Index: libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
-===================================================================
---- libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,42 @@
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+// { dg-options "-std=c++11" }
-+
-+#include <unordered_set>
-+#include <testsuite_performance.h>
-+
-+int main()
-+{
-+ using namespace __gnu_test;
-+
-+ time_counter time;
-+ resource_counter resource;
-+
-+ const int sz = 10000000;
-+
-+ std::unordered_set<int> s;
-+ start_counters(time, resource);
-+
-+ for (int i = 0; i != sz ; ++i)
-+ s.insert(i);
-+
-+ stop_counters(time, resource);
-+ report_performance(__FILE__, "unordered_set 10000000 insertions",
-+ time, resource);
-+ return 0;
-+}
-Index: libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
-===================================================================
---- libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,28 @@
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+// { dg-do compile }
-+
-+// 22.2.1 The ctype category
-+
-+#include <locale>
-+
-+// libstdc++/53678
-+void test01()
-+{
-+ bool NetBSD __attribute__((unused)) = true;
-+}
-Index: libstdc++-v3/testsuite/Makefile.am
-===================================================================
---- libstdc++-v3/testsuite/Makefile.am (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/testsuite/Makefile.am (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -134,7 +134,7 @@
- normal0) \
- if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \
- $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \
-- $(RUNTESTFLAGS) abi.exp; \
-+ $(RUNTESTFLAGS) abi.exp prettyprinters.exp; \
- else echo "WARNING: could not find \`runtest'" 1>&2; :;\
- fi; \
- dirs="`cd $$srcdir; echo [013-9][0-9]_*/*`";; \
-Index: libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,47 @@
-+// { dg-options "-std=gnu++0x" }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+#include <unordered_map>
-+#include <testsuite_hooks.h>
-+
-+bool test __attribute__((unused)) = true;
-+
-+void test01()
-+{
-+ const int N = 1000;
-+
-+ typedef std::unordered_map<int, int> Map;
-+ Map m;
-+ m.reserve(N);
-+
-+ std::size_t bkts = m.bucket_count();
-+ for (int i = 0; i != N; ++i)
-+ {
-+ m.insert(std::make_pair(i, i));
-+ // As long as we insert less than the reserved number of elements we
-+ // shouldn't experiment any rehash.
-+ VERIFY( m.bucket_count() == bkts );
-+ }
-+}
-+
-+int main()
-+{
-+ test01();
-+ return 0;
-+}
-Index: libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,48 @@
-+// { dg-options "-std=gnu++0x" }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+#include <unordered_map>
-+#include <testsuite_hooks.h>
-+
-+bool test __attribute__((unused)) = true;
-+
-+void test01()
-+{
-+ const int N = 1000;
-+
-+ typedef std::unordered_multimap<int, int> MMap;
-+ MMap m;
-+ m.reserve(N * 2);
-+
-+ std::size_t bkts = m.bucket_count();
-+ for (int i = 0; i != N; ++i)
-+ {
-+ m.insert(std::make_pair(i, i));
-+ m.insert(std::make_pair(i, i));
-+ // As long as we insert less than the reserved number of elements we
-+ // shouldn't experiment any rehash.
-+ VERIFY( m.bucket_count() == bkts );
-+ }
-+}
-+
-+int main()
-+{
-+ test01();
-+ return 0;
-+}
-Index: libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,47 @@
-+// { dg-options "-std=gnu++0x" }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+#include <unordered_set>
-+#include <testsuite_hooks.h>
-+
-+bool test __attribute__((unused)) = true;
-+
-+void test01()
-+{
-+ const int N = 1000;
-+
-+ typedef std::unordered_set<int> Set;
-+ Set s;
-+ s.reserve(N);
-+
-+ std::size_t bkts = s.bucket_count();
-+ for (int i = 0; i != N; ++i)
-+ {
-+ s.insert(i);
-+ // As long as we insert less than the reserved number of elements we
-+ // shouldn't experiment any rehash.
-+ VERIFY( s.bucket_count() == bkts );
-+ }
-+}
-+
-+int main()
-+{
-+ test01();
-+ return 0;
-+}
-Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // 2007-04-27 Paolo Carlini <pcarlini at suse.de>
-
--// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation
-+// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 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
-@@ -18,7 +18,7 @@
- // <http://www.gnu.org/licenses/>.
-
- // { dg-do compile }
--// { dg-error "no matching" "" { target *-*-* } 1552 }
-+// { dg-error "no matching" "" { target *-*-* } 1501 }
-
- #include <list>
-
-Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // 2007-04-27 Paolo Carlini <pcarlini at suse.de>
-
--// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation
-+// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 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
-@@ -18,7 +18,7 @@
- // <http://www.gnu.org/licenses/>.
-
- // { dg-do compile }
--// { dg-error "no matching" "" { target *-*-* } 1508 }
-+// { dg-error "no matching" "" { target *-*-* } 1457 }
-
- #include <list>
-
-Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // 2007-04-27 Paolo Carlini <pcarlini at suse.de>
-
--// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation
-+// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 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
-@@ -18,7 +18,7 @@
- // <http://www.gnu.org/licenses/>.
-
- // { dg-do compile }
--// { dg-error "no matching" "" { target *-*-* } 1508 }
-+// { dg-error "no matching" "" { target *-*-* } 1457 }
-
- #include <list>
-
-Index: libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // 2007-04-27 Paolo Carlini <pcarlini at suse.de>
-
--// Copyright (C) 2007, 2008, 2009, 2010, 2011 Free Software Foundation
-+// Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012 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
-@@ -18,7 +18,7 @@
- // <http://www.gnu.org/licenses/>.
-
- // { dg-do compile }
--// { dg-error "no matching" "" { target *-*-* } 1508 }
-+// { dg-error "no matching" "" { target *-*-* } 1457 }
-
- #include <list>
- #include <utility>
-Index: libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc
-===================================================================
---- libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,48 @@
-+// { dg-options "-std=gnu++0x" }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+#include <unordered_set>
-+#include <testsuite_hooks.h>
-+
-+bool test __attribute__((unused)) = true;
-+
-+void test01()
-+{
-+ const int N = 1000;
-+
-+ typedef std::unordered_multiset<int> MSet;
-+ MSet s;
-+ s.reserve(N * 2);
-+
-+ std::size_t bkts = s.bucket_count();
-+ for (int i = 0; i != N; ++i)
-+ {
-+ s.insert(i);
-+ s.insert(i);
-+ // As long as we insert less than the reserved number of elements we
-+ // shouldn't experiment any rehash.
-+ VERIFY( s.bucket_count() == bkts );
-+ }
-+}
-+
-+int main()
-+{
-+ test01();
-+ return 0;
-+}
-Index: libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
-===================================================================
---- libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -41,10 +41,10 @@
- std::unique_ptr<int, B&> ub(nullptr, b);
- std::unique_ptr<int, D&> ud(nullptr, d);
- ub = std::move(ud);
--// { dg-error "use of deleted function" "" { target *-*-* } 189 }
-+// { dg-error "use of deleted function" "" { target *-*-* } 195 }
-
- std::unique_ptr<int[], B&> uba(nullptr, b);
- std::unique_ptr<int[], D&> uda(nullptr, d);
- uba = std::move(uda);
--// { dg-error "use of deleted function" "" { target *-*-* } 329 }
-+// { dg-error "use of deleted function" "" { target *-*-* } 341 }
- }
-Index: libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
-===================================================================
---- libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc (.../tags/gcc_4_7_1_release) (wersja 0)
-+++ libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1,70 @@
-+// { dg-options "-std=gnu++0x" }
-+// { dg-do run }
-+
-+// Copyright (C) 2012 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
-+// <http://www.gnu.org/licenses/>.
-+
-+// 20.7.1 Template class unique_ptr [unique.ptr]
-+
-+#include <memory>
-+#include <testsuite_hooks.h>
-+
-+struct A;
-+
-+struct B
-+{
-+ std::unique_ptr<A> a;
-+};
-+
-+struct A
-+{
-+ B* b;
-+ ~A() { VERIFY(b->a != nullptr); }
-+};
-+
-+void test01()
-+{
-+ B b;
-+ b.a.reset(new A);
-+ b.a->b = &b;
-+}
-+
-+struct C;
-+
-+struct D
-+{
-+ std::unique_ptr<C[]> c;
-+};
-+
-+struct C
-+{
-+ D* d;
-+ ~C() { VERIFY(d->c != nullptr); }
-+};
-+
-+void test02()
-+{
-+ D d;
-+ d.c.reset(new C[1]);
-+ d.c[0].d = &d;
-+}
-+
-+int main()
-+{
-+ test01();
-+ test02();
-+}
-Index: libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
-===================================================================
---- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,6 +1,6 @@
- // Locale support -*- C++ -*-
-
--// Copyright (C) 2000, 2009 Free Software Foundation, Inc.
-+// Copyright (C) 2000, 2009, 2011, 2012 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
-@@ -31,8 +31,6 @@
- // anoncvs at anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
- // See www.netbsd.org for details of access.
-
--#include <sys/param.h>
--
- namespace std _GLIBCXX_VISIBILITY(default)
- {
- _GLIBCXX_BEGIN_NAMESPACE_VERSION
-@@ -47,7 +45,7 @@
- // on the mask type. Because of this, we don't use an enum.
- typedef unsigned char mask;
-
--#if __NetBSD_Version__ < 599004100
-+#ifndef _CTYPE_U
- static const mask upper = _U;
- static const mask lower = _L;
- static const mask alpha = _U | _L;
-Index: libgcc/config.host
-===================================================================
---- libgcc/config.host (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgcc/config.host (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -916,15 +916,15 @@
- ;;
- rs6000-ibm-aix4.[3456789]* | powerpc-ibm-aix4.[3456789]*)
- md_unwind_header=rs6000/aix-unwind.h
-- tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble rs6000/t-slibgcc-aix"
-+ tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-slibgcc-aix rs6000/t-ibm-ldouble"
- ;;
- rs6000-ibm-aix5.1.* | powerpc-ibm-aix5.1.*)
- md_unwind_header=rs6000/aix-unwind.h
-- tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble rs6000/t-slibgcc-aix"
-+ tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-slibgcc-aix rs6000/t-ibm-ldouble"
- ;;
- rs6000-ibm-aix[56789].* | powerpc-ibm-aix[56789].*)
- md_unwind_header=rs6000/aix-unwind.h
-- tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-ibm-ldouble rs6000/t-slibgcc-aix"
-+ tmake_file="t-fdpbit rs6000/t-ppc64-fp rs6000/t-slibgcc-aix rs6000/t-ibm-ldouble"
- ;;
- rl78-*-elf)
- tmake_file="$tm_file t-fdpbit rl78/t-rl78"
-Index: libgcc/ChangeLog
-===================================================================
---- libgcc/ChangeLog (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgcc/ChangeLog (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,3 +1,16 @@
-+2012-08-21 Ian Lance Taylor <iant at google.com>
-+
-+ * config/i386/morestack.S (__morestack_non_split): Increase amount
-+ of space allocated for non-split code stack.
-+
-+2012-08-16 David Edelsohn <dje.gcc at gmail.com>
-+
-+ Backported from mainline
-+ 2012-08-16 David Edelsohn <dje.gcc at gmail.com>
-+
-+ * config.host (*-*-aix*): Move rs6000/t-ibm-ldouble after
-+ rs6000/t-slibgcc-aix.
-+
- 2012-06-14 Release Manager
-
- * GCC 4.7.1 released.
-Index: libgcc/config/i386/morestack.S
-===================================================================
---- libgcc/config/i386/morestack.S (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ libgcc/config/i386/morestack.S (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -83,6 +83,9 @@
- #endif
-
-
-+# The amount of space we ask for when calling non-split-stack code.
-+#define NON_SPLIT_STACK 0x100000
-+
- # This entry point is for split-stack code which calls non-split-stack
- # code. When the linker sees this case, it converts the call to
- # __morestack to call __morestack_non_split instead. We just bump the
-@@ -109,7 +112,7 @@
-
- movl %esp,%eax # Current stack,
- subl 8(%esp),%eax # less required stack frame size,
-- subl $0x4000,%eax # less space for non-split code.
-+ subl $NON_SPLIT_STACK,%eax # less space for non-split code.
- cmpl %gs:0x30,%eax # See if we have enough space.
- jb 2f # Get more space if we need it.
-
-@@ -171,7 +174,8 @@
-
- .cfi_adjust_cfa_offset -4 # Account for popped register.
-
-- addl $0x5000+BACKOFF,4(%esp) # Increment space we request.
-+ # Increment space we request.
-+ addl $NON_SPLIT_STACK+0x1000+BACKOFF,4(%esp)
-
- # Fall through into morestack.
-
-@@ -186,7 +190,7 @@
-
- movq %rsp,%rax # Current stack,
- subq %r10,%rax # less required stack frame size,
-- subq $0x4000,%rax # less space for non-split code.
-+ subq $NON_SPLIT_STACK,%rax # less space for non-split code.
-
- #ifdef __LP64__
- cmpq %fs:0x70,%rax # See if we have enough space.
-@@ -219,7 +223,8 @@
-
- .cfi_adjust_cfa_offset -8 # Adjust for popped register.
-
-- addq $0x5000+BACKOFF,%r10 # Increment space we request.
-+ # Increment space we request.
-+ addq $NON_SPLIT_STACK+0x1000+BACKOFF,%r10
-
- # Fall through into morestack.
-
-Index: gcc/doc/tm.texi
-===================================================================
---- gcc/doc/tm.texi (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/doc/tm.texi (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1105,6 +1105,14 @@
- If the value of this macro has a type, it should be an unsigned type.
- @end defmac
-
-+ at deftypefn {Target Hook} HOST_WIDE_INT TARGET_VECTOR_ALIGNMENT (const_tree @var{type})
-+This hook can be used to define the alignment for a vector of type
-+ at var{type}, in order to comply with a platform ABI. The default is to
-+require natural alignment for vector types. The alignment returned by
-+this hook must be a power-of-two multiple of the default alignment of
-+the vector element type.
-+ at end deftypefn
-+
- @defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
- If defined, a C expression to compute the alignment for stack slot.
- @var{type} is the data type, @var{mode} is the widest mode available,
-Index: gcc/doc/tm.texi.in
-===================================================================
---- gcc/doc/tm.texi.in (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/doc/tm.texi.in (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1093,6 +1093,8 @@
- If the value of this macro has a type, it should be an unsigned type.
- @end defmac
-
-+ at hook TARGET_VECTOR_ALIGNMENT
-+
- @defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
- If defined, a C expression to compute the alignment for stack slot.
- @var{type} is the data type, @var{mode} is the widest mode available,
-Index: gcc/doc/invoke.texi
-===================================================================
---- gcc/doc/invoke.texi (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/doc/invoke.texi (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -493,7 +493,8 @@
- -mcaller-super-interworking -mcallee-super-interworking @gol
- -mtp=@var{name} -mtls-dialect=@var{dialect} @gol
- -mword-relocations @gol
---mfix-cortex-m3-ldrd}
-+-mfix-cortex-m3-ldrd @gol
-+-munaligned-access}
-
- @emph{AVR Options}
- @gccoptlist{-mmcu=@var{mcu} -maccumulate-args -mbranch-cost=@var{cost} @gol
-@@ -882,8 +883,8 @@
- -m5-compact -m5-compact-nofpu @gol
- -mb -ml -mdalign -mrelax @gol
- -mbigtable -mfmovd -mhitachi -mrenesas -mno-renesas -mnomacsave @gol
---mieee -mbitops -misize -minline-ic_invalidate -mpadstruct -mspace @gol
---mprefergot -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
-+-mieee -mno-ieee -mbitops -misize -minline-ic_invalidate -mpadstruct @gol
-+-mspace -mprefergot -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
- -mdivsi3_libfunc=@var{name} -mfixed-range=@var{register-range} @gol
- -madjust-unroll -mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol
- -maccumulate-outgoing-args -minvalid-symbols -msoft-atomic @gol
-@@ -10929,6 +10930,23 @@
- generating these instructions. This option is enabled by default when
- @option{-mcpu=cortex-m3} is specified.
-
-+ at item -munaligned-access
-+ at itemx -mno-unaligned-access
-+ at opindex munaligned-access
-+ at opindex mno-unaligned-access
-+Enables (or disables) reading and writing of 16- and 32- bit values
-+from addresses that are not 16- or 32- bit aligned. By default
-+unaligned access is disabled for all pre-ARMv6 and all ARMv6-M
-+architectures, and enabled for all other architectures. If unaligned
-+access is not enabled then words in packed data structures will be
-+accessed a byte at a time.
-+
-+The ARM attribute @code{Tag_CPU_unaligned_access} will be set in the
-+generated object file to either true or false, depending upon the
-+setting of this option. If unaligned access is enabled then the
-+preprocessor symbol @code{__ARM_FEATURE_UNALIGNED} will also be
-+defined.
-+
- @end table
-
- @node AVR Options
-@@ -17952,13 +17970,15 @@
- @option{-mhitachi} is given.
-
- @item -mieee
-+ at item -mno-ieee
- @opindex mieee
--Increase IEEE compliance of floating-point code.
--At the moment, this is equivalent to @option{-fno-finite-math-only}.
--When generating 16-bit SH opcodes, getting IEEE-conforming results for
--comparisons of NANs / infinities incurs extra overhead in every
--floating-point comparison, therefore the default is set to
-- at option{-ffinite-math-only}.
-+ at opindex mnoieee
-+Control the IEEE compliance of floating-point comparisons, which affects the
-+handling of cases where the result of a comparison is unordered. By default
-+ at option{-mieee} is implicitly enabled. If @option{-ffinite-math-only} is
-+enabled @option{-mno-ieee} is implicitly set, which results in faster
-+floating-point greater-equal and less-equal comparisons. The implcit settings
-+can be overridden by specifying either @option{-mieee} or @option{-mno-ieee}.
-
- @item -minline-ic_invalidate
- @opindex minline-ic_invalidate
-Index: gcc/doc/md.texi
-===================================================================
---- gcc/doc/md.texi (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/doc/md.texi (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -3588,7 +3588,7 @@
- @itemx R07
- @itemx R08
- @itemx R09
-- at itemx R010
-+ at itemx R10
- Each of these represents a register constraint for an individual
- register, from r0 to r10.
-
-@@ -3666,7 +3666,7 @@
- @itemx R07
- @itemx R08
- @itemx R09
-- at itemx R010
-+ at itemx R10
- Each of these represents a register constraint for an individual
- register, from r0 to r10.
-
-Index: gcc/tree-ssa-loop-im.c
-===================================================================
---- gcc/tree-ssa-loop-im.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/tree-ssa-loop-im.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -52,7 +52,7 @@
- }
- }
-
-- Where COND and INV are is invariants, but evaluating INV may trap or be
-+ Where COND and INV are invariants, but evaluating INV may trap or be
- invalid from some other reason if !COND. This may be transformed to
-
- if (cond)
-@@ -1480,9 +1480,8 @@
- /* A function to free the mem_ref object OBJ. */
-
- static void
--memref_free (void *obj)
-+memref_free (struct mem_ref *mem)
- {
-- struct mem_ref *const mem = (struct mem_ref *) obj;
- unsigned i;
- mem_ref_locs_p accs;
-
-@@ -1626,6 +1625,7 @@
- fprintf (dump_file, "\n");
- }
- }
-+
- if (is_stored)
- mark_ref_stored (ref, loop);
-
-@@ -1721,8 +1721,7 @@
- unsigned i;
- bitmap empty;
-
-- memory_accesses.refs
-- = htab_create (100, memref_hash, memref_eq, memref_free);
-+ memory_accesses.refs = htab_create (100, memref_hash, memref_eq, NULL);
- memory_accesses.refs_list = NULL;
- memory_accesses.refs_in_loop = VEC_alloc (bitmap, heap,
- number_of_loops ());
-@@ -1956,6 +1955,173 @@
- return lsm_tmp_name;
- }
-
-+struct prev_flag_edges {
-+ /* Edge to insert new flag comparison code. */
-+ edge append_cond_position;
-+
-+ /* Edge for fall through from previous flag comparison. */
-+ edge last_cond_fallthru;
-+};
-+
-+/* Helper function for execute_sm. Emit code to store TMP_VAR into
-+ MEM along edge EX.
-+
-+ The store is only done if MEM has changed. We do this so no
-+ changes to MEM occur on code paths that did not originally store
-+ into it.
-+
-+ The common case for execute_sm will transform:
-+
-+ for (...) {
-+ if (foo)
-+ stuff;
-+ else
-+ MEM = TMP_VAR;
-+ }
-+
-+ into:
-+
-+ lsm = MEM;
-+ for (...) {
-+ if (foo)
-+ stuff;
-+ else
-+ lsm = TMP_VAR;
-+ }
-+ MEM = lsm;
-+
-+ This function will generate:
-+
-+ lsm = MEM;
-+
-+ lsm_flag = false;
-+ ...
-+ for (...) {
-+ if (foo)
-+ stuff;
-+ else {
-+ lsm = TMP_VAR;
-+ lsm_flag = true;
-+ }
-+ }
-+ if (lsm_flag) <--
-+ MEM = lsm; <--
-+*/
-+
-+static void
-+execute_sm_if_changed (edge ex, tree mem, tree tmp_var, tree flag)
-+{
-+ basic_block new_bb, then_bb, old_dest;
-+ bool loop_has_only_one_exit;
-+ edge then_old_edge, orig_ex = ex;
-+ gimple_stmt_iterator gsi;
-+ gimple stmt;
-+ struct prev_flag_edges *prev_edges = (struct prev_flag_edges *) ex->aux;
-+
-+ /* ?? Insert store after previous store if applicable. See note
-+ below. */
-+ if (prev_edges)
-+ ex = prev_edges->append_cond_position;
-+
-+ loop_has_only_one_exit = single_pred_p (ex->dest);
-+
-+ if (loop_has_only_one_exit)
-+ ex = split_block_after_labels (ex->dest);
-+
-+ old_dest = ex->dest;
-+ new_bb = split_edge (ex);
-+ then_bb = create_empty_bb (new_bb);
-+ if (current_loops && new_bb->loop_father)
-+ add_bb_to_loop (then_bb, new_bb->loop_father);
-+
-+ gsi = gsi_start_bb (new_bb);
-+ stmt = gimple_build_cond (NE_EXPR, flag, boolean_false_node,
-+ NULL_TREE, NULL_TREE);
-+ gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
-+
-+ gsi = gsi_start_bb (then_bb);
-+ /* Insert actual store. */
-+ stmt = gimple_build_assign (unshare_expr (mem), tmp_var);
-+ gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
-+
-+ make_edge (new_bb, then_bb, EDGE_TRUE_VALUE);
-+ make_edge (new_bb, old_dest, EDGE_FALSE_VALUE);
-+ then_old_edge = make_edge (then_bb, old_dest, EDGE_FALLTHRU);
-+
-+ set_immediate_dominator (CDI_DOMINATORS, then_bb, new_bb);
-+
-+ if (prev_edges)
-+ {
-+ basic_block prevbb = prev_edges->last_cond_fallthru->src;
-+ redirect_edge_succ (prev_edges->last_cond_fallthru, new_bb);
-+ set_immediate_dominator (CDI_DOMINATORS, new_bb, prevbb);
-+ set_immediate_dominator (CDI_DOMINATORS, old_dest,
-+ recompute_dominator (CDI_DOMINATORS, old_dest));
-+ }
-+
-+ /* ?? Because stores may alias, they must happen in the exact
-+ sequence they originally happened. Save the position right after
-+ the (_lsm) store we just created so we can continue appending after
-+ it and maintain the original order. */
-+ {
-+ struct prev_flag_edges *p;
-+
-+ if (orig_ex->aux)
-+ orig_ex->aux = NULL;
-+ alloc_aux_for_edge (orig_ex, sizeof (struct prev_flag_edges));
-+ p = (struct prev_flag_edges *) orig_ex->aux;
-+ p->append_cond_position = then_old_edge;
-+ p->last_cond_fallthru = find_edge (new_bb, old_dest);
-+ orig_ex->aux = (void *) p;
-+ }
-+
-+ if (!loop_has_only_one_exit)
-+ for (gsi = gsi_start_phis (old_dest); !gsi_end_p (gsi); gsi_next (&gsi))
-+ {
-+ gimple phi = gsi_stmt (gsi);
-+ unsigned i;
-+
-+ for (i = 0; i < gimple_phi_num_args (phi); i++)
-+ if (gimple_phi_arg_edge (phi, i)->src == new_bb)
-+ {
-+ tree arg = gimple_phi_arg_def (phi, i);
-+ add_phi_arg (phi, arg, then_old_edge, UNKNOWN_LOCATION);
-+ update_stmt (phi);
-+ }
-+ }
-+ /* Remove the original fall through edge. This was the
-+ single_succ_edge (new_bb). */
-+ EDGE_SUCC (new_bb, 0)->flags &= ~EDGE_FALLTHRU;
-+}
-+
-+/* Helper function for execute_sm. On every location where REF is
-+ set, set an appropriate flag indicating the store. */
-+
-+static tree
-+execute_sm_if_changed_flag_set (struct loop *loop, mem_ref_p ref)
-+{
-+ unsigned i;
-+ mem_ref_loc_p loc;
-+ tree flag;
-+ VEC (mem_ref_loc_p, heap) *locs = NULL;
-+ char *str = get_lsm_tmp_name (ref->mem, ~0);
-+
-+ lsm_tmp_name_add ("_flag");
-+ flag = make_rename_temp (boolean_type_node, str);
-+ get_all_locs_in_loop (loop, ref, &locs);
-+ FOR_EACH_VEC_ELT (mem_ref_loc_p, locs, i, loc)
-+ {
-+ gimple_stmt_iterator gsi;
-+ gimple stmt;
-+
-+ gsi = gsi_for_stmt (loc->stmt);
-+ stmt = gimple_build_assign (flag, boolean_true_node);
-+ gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
-+ }
-+ VEC_free (mem_ref_loc_p, heap, locs);
-+ return flag;
-+}
-+
- /* Executes store motion of memory reference REF from LOOP.
- Exits from the LOOP are stored in EXITS. The initialization of the
- temporary variable is put to the preheader of the loop, and assignments
-@@ -1964,12 +2130,13 @@
- static void
- execute_sm (struct loop *loop, VEC (edge, heap) *exits, mem_ref_p ref)
- {
-- tree tmp_var;
-+ tree tmp_var, store_flag;
- unsigned i;
-- gimple load, store;
-+ gimple load;
- struct fmt_data fmt_data;
-- edge ex;
-+ edge ex, latch_edge;
- struct lim_aux_data *lim_data;
-+ bool multi_threaded_model_p = false;
-
- if (dump_file && (dump_flags & TDF_DETAILS))
- {
-@@ -1985,23 +2152,47 @@
- fmt_data.orig_loop = loop;
- for_each_index (&ref->mem, force_move_till, &fmt_data);
-
-+ if (block_in_transaction (loop_preheader_edge (loop)->src)
-+ || !PARAM_VALUE (PARAM_ALLOW_STORE_DATA_RACES))
-+ multi_threaded_model_p = true;
-+
-+ if (multi_threaded_model_p)
-+ store_flag = execute_sm_if_changed_flag_set (loop, ref);
-+
- rewrite_mem_refs (loop, ref, tmp_var);
-
-- /* Emit the load & stores. */
-+ /* Emit the load code into the latch, so that we are sure it will
-+ be processed after all dependencies. */
-+ latch_edge = loop_latch_edge (loop);
-+
-+ /* FIXME/TODO: For the multi-threaded variant, we could avoid this
-+ load altogether, since the store is predicated by a flag. We
-+ could, do the load only if it was originally in the loop. */
- load = gimple_build_assign (tmp_var, unshare_expr (ref->mem));
- lim_data = init_lim_data (load);
- lim_data->max_loop = loop;
- lim_data->tgt_loop = loop;
-+ gsi_insert_on_edge (latch_edge, load);
-
-- /* Put this into the latch, so that we are sure it will be processed after
-- all dependencies. */
-- gsi_insert_on_edge (loop_latch_edge (loop), load);
-+ if (multi_threaded_model_p)
-+ {
-+ load = gimple_build_assign (store_flag, boolean_false_node);
-+ lim_data = init_lim_data (load);
-+ lim_data->max_loop = loop;
-+ lim_data->tgt_loop = loop;
-+ gsi_insert_on_edge (latch_edge, load);
-+ }
-
-+ /* Sink the store to every exit from the loop. */
- FOR_EACH_VEC_ELT (edge, exits, i, ex)
-- {
-- store = gimple_build_assign (unshare_expr (ref->mem), tmp_var);
-- gsi_insert_on_edge (ex, store);
-- }
-+ if (!multi_threaded_model_p)
-+ {
-+ gimple store;
-+ store = gimple_build_assign (unshare_expr (ref->mem), tmp_var);
-+ gsi_insert_on_edge (ex, store);
-+ }
-+ else
-+ execute_sm_if_changed (ex, ref->mem, tmp_var, store_flag);
- }
-
- /* Hoists memory references MEM_REFS out of LOOP. EXITS is the list of exit
-@@ -2410,6 +2601,8 @@
-
- if (flag_tm)
- compute_transaction_bits ();
-+
-+ alloc_aux_for_edges (0);
- }
-
- /* Cleans up after the invariant motion pass. */
-@@ -2420,15 +2613,21 @@
- basic_block bb;
- unsigned i;
- bitmap b;
-+ mem_ref_p ref;
-
-+ free_aux_for_edges ();
-+
- FOR_EACH_BB (bb)
- SET_ALWAYS_EXECUTED_IN (bb, NULL);
-
- pointer_map_destroy (lim_aux_data_map);
-
-- VEC_free (mem_ref_p, heap, memory_accesses.refs_list);
- htab_delete (memory_accesses.refs);
-
-+ FOR_EACH_VEC_ELT (mem_ref_p, memory_accesses.refs_list, i, ref)
-+ memref_free (ref);
-+ VEC_free (mem_ref_p, heap, memory_accesses.refs_list);
-+
- FOR_EACH_VEC_ELT (bitmap, memory_accesses.refs_in_loop, i, b)
- BITMAP_FREE (b);
- VEC_free (bitmap, heap, memory_accesses.refs_in_loop);
-@@ -2442,7 +2641,7 @@
- VEC_free (bitmap, heap, memory_accesses.all_refs_stored_in_loop);
-
- if (memory_accesses.ttae_cache)
-- pointer_map_destroy (memory_accesses.ttae_cache);
-+ free_affine_expand_cache (&memory_accesses.ttae_cache);
- }
-
- /* Moves invariants from loops. Only "expensive" invariants are moved out --
-Index: gcc/targhooks.c
-===================================================================
---- gcc/targhooks.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/targhooks.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -939,6 +939,13 @@
- return id;
- }
-
-+/* Default to natural alignment for vector types. */
-+HOST_WIDE_INT
-+default_vector_alignment (const_tree type)
-+{
-+ return tree_low_cst (TYPE_SIZE (type), 0);
-+}
-+
- bool
- default_builtin_vector_alignment_reachable (const_tree type, bool is_packed)
- {
-Index: gcc/targhooks.h
-===================================================================
---- gcc/targhooks.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/targhooks.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -83,6 +83,8 @@
-
- extern tree default_builtin_reciprocal (unsigned int, bool, bool);
-
-+extern HOST_WIDE_INT default_vector_alignment (const_tree);
-+
- extern bool default_builtin_vector_alignment_reachable (const_tree, bool);
- extern bool
- default_builtin_support_vector_misalignment (enum machine_mode mode,
-Index: gcc/tree-ssa-loop-niter.c
-===================================================================
---- gcc/tree-ssa-loop-niter.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/tree-ssa-loop-niter.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -2290,7 +2290,10 @@
- /* Loops with multiple exits are expensive to handle and less important. */
- if (!flag_expensive_optimizations
- && VEC_length (edge, exits) > 1)
-- return chrec_dont_know;
-+ {
-+ VEC_free (edge, heap, exits);
-+ return chrec_dont_know;
-+ }
-
- FOR_EACH_VEC_ELT (edge, exits, i, ex)
- {
-Index: gcc/c-family/ChangeLog
-===================================================================
---- gcc/c-family/ChangeLog (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/c-family/ChangeLog (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,3 +1,9 @@
-+2012-06-27 Kai Tietz <ktietz at redhat.com>
-+
-+ Merged from trunk
-+ PR preprocessor/37215
-+ * c-ppoutput.c (preprocess_file): Check for nonempty buffer.
-+
- 2012-06-14 Release Manager
-
- * GCC 4.7.1 released.
-Index: gcc/c-family/c-ppoutput.c
-===================================================================
---- gcc/c-family/c-ppoutput.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/c-family/c-ppoutput.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -86,7 +86,7 @@
- {
- /* A successful cpp_read_main_file guarantees that we can call
- cpp_scan_nooutput or cpp_get_token next. */
-- if (flag_no_output)
-+ if (flag_no_output && pfile->buffer)
- {
- /* Scan -included buffers, then the main file. */
- while (pfile->buffer->prev)
-Index: gcc/target.def
-===================================================================
---- gcc/target.def (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/target.def (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1615,6 +1615,16 @@
- bool, (enum machine_mode mode),
- hook_bool_mode_false)
-
-+DEFHOOK
-+(vector_alignment,
-+ "This hook can be used to define the alignment for a vector of type\n\
-+ at var{type}, in order to comply with a platform ABI. The default is to\n\
-+require natural alignment for vector types. The alignment returned by\n\
-+this hook must be a power-of-two multiple of the default alignment of\n\
-+the vector element type.",
-+ HOST_WIDE_INT, (const_tree type),
-+ default_vector_alignment)
-+
- /* True if we should try to use a scalar mode to represent an array,
- overriding the usual MAX_FIXED_MODE limit. */
- DEFHOOK
-Index: gcc/DATESTAMP
-===================================================================
---- gcc/DATESTAMP (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/DATESTAMP (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1 +1 @@
--20120614
-+20120901
-Index: gcc/defaults.h
-===================================================================
---- gcc/defaults.h (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/defaults.h (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1063,6 +1063,11 @@
- #define TARGET_HAS_SINCOS 0
- #endif
-
-+/* Determin whether the target runtime library is Bionic */
-+#ifndef TARGET_HAS_BIONIC
-+#define TARGET_HAS_BIONIC 0
-+#endif
-+
- /* Indicate that CLZ and CTZ are undefined at zero. */
- #ifndef CLZ_DEFINED_VALUE_AT_ZERO
- #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) 0
-Index: gcc/tree.c
-===================================================================
---- gcc/tree.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/tree.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1617,7 +1617,7 @@
- {
- case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE:
- case POINTER_TYPE: case REFERENCE_TYPE:
-- case OFFSET_TYPE:
-+ case OFFSET_TYPE: case NULLPTR_TYPE:
- return build_int_cst (type, 0);
-
- case REAL_TYPE:
-@@ -2922,6 +2922,7 @@
- case METHOD_TYPE:
- case FUNCTION_TYPE:
- case VECTOR_TYPE:
-+ case NULLPTR_TYPE:
- return false;
-
- case INTEGER_TYPE:
-@@ -4517,11 +4518,17 @@
- free_lang_data_in_one_sizepos (&TYPE_SIZE (type));
- free_lang_data_in_one_sizepos (&TYPE_SIZE_UNIT (type));
-
-- if (debug_info_level < DINFO_LEVEL_TERSE
-- || (TYPE_CONTEXT (type)
-- && TREE_CODE (TYPE_CONTEXT (type)) != FUNCTION_DECL
-- && TREE_CODE (TYPE_CONTEXT (type)) != NAMESPACE_DECL))
-- TYPE_CONTEXT (type) = NULL_TREE;
-+ if (TYPE_CONTEXT (type)
-+ && TREE_CODE (TYPE_CONTEXT (type)) == BLOCK)
-+ {
-+ tree ctx = TYPE_CONTEXT (type);
-+ do
-+ {
-+ ctx = BLOCK_SUPERCONTEXT (ctx);
-+ }
-+ while (ctx && TREE_CODE (ctx) == BLOCK);
-+ TYPE_CONTEXT (type) = ctx;
-+ }
- }
-
-
-@@ -4846,7 +4853,15 @@
- fld_worklist_push (TYPE_MAIN_VARIANT (t), fld);
- /* Do not walk TYPE_NEXT_VARIANT. We do not stream it and thus
- do not and want not to reach unused variants this way. */
-- fld_worklist_push (TYPE_CONTEXT (t), fld);
-+ if (TYPE_CONTEXT (t))
-+ {
-+ tree ctx = TYPE_CONTEXT (t);
-+ /* We adjust BLOCK TYPE_CONTEXTs to the innermost non-BLOCK one.
-+ So push that instead. */
-+ while (ctx && TREE_CODE (ctx) == BLOCK)
-+ ctx = BLOCK_SUPERCONTEXT (ctx);
-+ fld_worklist_push (ctx, fld);
-+ }
- /* Do not walk TYPE_CANONICAL. We do not stream it and thus do not
- and want not to reach unused types this way. */
-
-@@ -6119,6 +6134,7 @@
- case COMPLEX_TYPE:
- case POINTER_TYPE:
- case REFERENCE_TYPE:
-+ case NULLPTR_TYPE:
- return 1;
-
- case VECTOR_TYPE:
-Index: gcc/configure
-===================================================================
---- gcc/configure (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/configure (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -26179,7 +26179,7 @@
- then gcc_cv_as_gnu_unique_object=yes
- fi
- elif test x$gcc_cv_as != x; then
-- $as_echo '.type foo, @gnu_unique_object' > conftest.s
-+ $as_echo '.type foo, '$target_type_format_char'gnu_unique_object' > conftest.s
- if { ac_try='$gcc_cv_as $gcc_cv_as_flags -o conftest.o conftest.s >&5'
- { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
- (eval $ac_try) 2>&5
-@@ -26198,7 +26198,8 @@
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_gnu_unique_object" >&5
- $as_echo "$gcc_cv_as_gnu_unique_object" >&6; }
- if test $gcc_cv_as_gnu_unique_object = yes; then
-- # Also check for ld.so support, i.e. glibc 2.11 or higher.
-+ # We need to unquote above to to use the definition from config.gcc.
-+# Also check for ld.so support, i.e. glibc 2.11 or higher.
- if test x$host = x$build -a x$host = x$target &&
- ldd --version 2>/dev/null &&
- glibcver=`ldd --version 2>/dev/null | sed 's/.* //;q'`; then
-@@ -26721,6 +26722,11 @@
- $target_header_dir/bits/uClibc_config.h > /dev/null; then
- gcc_cv_libc_provides_ssp=yes
- fi
-+ # all versions of Bionic support stack protector
-+ elif test -f $target_header_dir/sys/cdefs.h \
-+ && $EGREP '^[ ]*#[ ]*define[ ]+__BIONIC__[ ]+1' \
-+ $target_header_dir/sys/cdefs.h > /dev/null; then
-+ gcc_cv_libc_provides_ssp=yes
- fi
- ;;
- *-*-gnu*)
-Index: gcc/omp-low.c
-===================================================================
---- gcc/omp-low.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/omp-low.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1823,8 +1823,8 @@
-
-
- /* Check OpenMP nesting restrictions. */
--static void
--check_omp_nesting_restrictions (gimple stmt, omp_context *ctx)
-+static bool
-+check_omp_nesting_restrictions (gimple stmt, omp_context *ctx)
- {
- switch (gimple_code (stmt))
- {
-@@ -1843,17 +1843,19 @@
- case GIMPLE_OMP_TASK:
- if (is_gimple_call (stmt))
- {
-- warning (0, "barrier region may not be closely nested inside "
-- "of work-sharing, critical, ordered, master or "
-- "explicit task region");
-- return;
-+ error_at (gimple_location (stmt),
-+ "barrier region may not be closely nested inside "
-+ "of work-sharing, critical, ordered, master or "
-+ "explicit task region");
-+ return false;
- }
-- warning (0, "work-sharing region may not be closely nested inside "
-- "of work-sharing, critical, ordered, master or explicit "
-- "task region");
-- return;
-+ error_at (gimple_location (stmt),
-+ "work-sharing region may not be closely nested inside "
-+ "of work-sharing, critical, ordered, master or explicit "
-+ "task region");
-+ return false;
- case GIMPLE_OMP_PARALLEL:
-- return;
-+ return true;
- default:
- break;
- }
-@@ -1866,11 +1868,12 @@
- case GIMPLE_OMP_SECTIONS:
- case GIMPLE_OMP_SINGLE:
- case GIMPLE_OMP_TASK:
-- warning (0, "master region may not be closely nested inside "
-- "of work-sharing or explicit task region");
-- return;
-+ error_at (gimple_location (stmt),
-+ "master region may not be closely nested inside "
-+ "of work-sharing or explicit task region");
-+ return false;
- case GIMPLE_OMP_PARALLEL:
-- return;
-+ return true;
- default:
- break;
- }
-@@ -1881,17 +1884,22 @@
- {
- case GIMPLE_OMP_CRITICAL:
- case GIMPLE_OMP_TASK:
-- warning (0, "ordered region may not be closely nested inside "
-- "of critical or explicit task region");
-- return;
-+ error_at (gimple_location (stmt),
-+ "ordered region may not be closely nested inside "
-+ "of critical or explicit task region");
-+ return false;
- case GIMPLE_OMP_FOR:
- if (find_omp_clause (gimple_omp_for_clauses (ctx->stmt),
- OMP_CLAUSE_ORDERED) == NULL)
-- warning (0, "ordered region must be closely nested inside "
-+ {
-+ error_at (gimple_location (stmt),
-+ "ordered region must be closely nested inside "
- "a loop region with an ordered clause");
-- return;
-+ return false;
-+ }
-+ return true;
- case GIMPLE_OMP_PARALLEL:
-- return;
-+ return true;
- default:
- break;
- }
-@@ -1902,14 +1910,16 @@
- && (gimple_omp_critical_name (stmt)
- == gimple_omp_critical_name (ctx->stmt)))
- {
-- warning (0, "critical region may not be nested inside a critical "
-- "region with the same name");
-- return;
-+ error_at (gimple_location (stmt),
-+ "critical region may not be nested inside a critical "
-+ "region with the same name");
-+ return false;
- }
- break;
- default:
- break;
- }
-+ return true;
- }
-
-
-@@ -1980,15 +1990,21 @@
- /* Check the OpenMP nesting restrictions. */
- if (ctx != NULL)
- {
-+ bool remove = false;
- if (is_gimple_omp (stmt))
-- check_omp_nesting_restrictions (stmt, ctx);
-+ remove = !check_omp_nesting_restrictions (stmt, ctx);
- else if (is_gimple_call (stmt))
- {
- tree fndecl = gimple_call_fndecl (stmt);
- if (fndecl && DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_NORMAL
- && DECL_FUNCTION_CODE (fndecl) == BUILT_IN_GOMP_BARRIER)
-- check_omp_nesting_restrictions (stmt, ctx);
-+ remove = !check_omp_nesting_restrictions (stmt, ctx);
- }
-+ if (remove)
-+ {
-+ stmt = gimple_build_nop ();
-+ gsi_replace (gsi, stmt, false);
-+ }
- }
-
- *handled_ops_p = true;
-@@ -4742,45 +4758,40 @@
- unsigned i, casei;
- bool exit_reachable = region->cont != NULL;
-
-- gcc_assert (exit_reachable == (region->exit != NULL));
-+ gcc_assert (region->exit != NULL);
- entry_bb = region->entry;
- l0_bb = single_succ (entry_bb);
- l1_bb = region->cont;
- l2_bb = region->exit;
-- if (exit_reachable)
-+ if (single_pred_p (l2_bb) && single_pred (l2_bb) == l0_bb)
-+ l2 = gimple_block_label (l2_bb);
-+ else
- {
-- if (single_pred_p (l2_bb) && single_pred (l2_bb) == l0_bb)
-- l2 = gimple_block_label (l2_bb);
-+ /* This can happen if there are reductions. */
-+ len = EDGE_COUNT (l0_bb->succs);
-+ gcc_assert (len > 0);
-+ e = EDGE_SUCC (l0_bb, len - 1);
-+ si = gsi_last_bb (e->dest);
-+ l2 = NULL_TREE;
-+ if (gsi_end_p (si)
-+ || gimple_code (gsi_stmt (si)) != GIMPLE_OMP_SECTION)
-+ l2 = gimple_block_label (e->dest);
- else
-- {
-- /* This can happen if there are reductions. */
-- len = EDGE_COUNT (l0_bb->succs);
-- gcc_assert (len > 0);
-- e = EDGE_SUCC (l0_bb, len - 1);
-- si = gsi_last_bb (e->dest);
-- l2 = NULL_TREE;
-- if (gsi_end_p (si)
-- || gimple_code (gsi_stmt (si)) != GIMPLE_OMP_SECTION)
-- l2 = gimple_block_label (e->dest);
-- else
-- FOR_EACH_EDGE (e, ei, l0_bb->succs)
-+ FOR_EACH_EDGE (e, ei, l0_bb->succs)
-+ {
-+ si = gsi_last_bb (e->dest);
-+ if (gsi_end_p (si)
-+ || gimple_code (gsi_stmt (si)) != GIMPLE_OMP_SECTION)
- {
-- si = gsi_last_bb (e->dest);
-- if (gsi_end_p (si)
-- || gimple_code (gsi_stmt (si)) != GIMPLE_OMP_SECTION)
-- {
-- l2 = gimple_block_label (e->dest);
-- break;
-- }
-+ l2 = gimple_block_label (e->dest);
-+ break;
- }
-- }
-- default_bb = create_empty_bb (l1_bb->prev_bb);
-+ }
- }
-+ if (exit_reachable)
-+ default_bb = create_empty_bb (l1_bb->prev_bb);
- else
-- {
-- default_bb = create_empty_bb (l0_bb);
-- l2 = gimple_block_label (default_bb);
-- }
-+ default_bb = create_empty_bb (l0_bb);
-
- /* We will build a switch() with enough cases for all the
- GIMPLE_OMP_SECTION regions, a '0' case to handle the end of more work
-@@ -4833,13 +4844,9 @@
- vnext = NULL_TREE;
- }
-
-- i = 0;
-- if (exit_reachable)
-- {
-- t = build_case_label (build_int_cst (unsigned_type_node, 0), NULL, l2);
-- VEC_quick_push (tree, label_vec, t);
-- i++;
-- }
-+ t = build_case_label (build_int_cst (unsigned_type_node, 0), NULL, l2);
-+ VEC_quick_push (tree, label_vec, t);
-+ i = 1;
-
- /* Convert each GIMPLE_OMP_SECTION into a CASE_LABEL_EXPR. */
- for (inner = region->inner, casei = 1;
-@@ -4909,18 +4916,18 @@
- gsi_remove (&si, true);
-
- single_succ_edge (l1_bb)->flags = EDGE_FALLTHRU;
--
-- /* Cleanup function replaces GIMPLE_OMP_RETURN in EXIT_BB. */
-- si = gsi_last_bb (l2_bb);
-- if (gimple_omp_return_nowait_p (gsi_stmt (si)))
-- t = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_END_NOWAIT);
-- else
-- t = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_END);
-- stmt = gimple_build_call (t, 0);
-- gsi_insert_after (&si, stmt, GSI_SAME_STMT);
-- gsi_remove (&si, true);
- }
-
-+ /* Cleanup function replaces GIMPLE_OMP_RETURN in EXIT_BB. */
-+ si = gsi_last_bb (l2_bb);
-+ if (gimple_omp_return_nowait_p (gsi_stmt (si)))
-+ t = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_END_NOWAIT);
-+ else
-+ t = builtin_decl_explicit (BUILT_IN_GOMP_SECTIONS_END);
-+ stmt = gimple_build_call (t, 0);
-+ gsi_insert_after (&si, stmt, GSI_SAME_STMT);
-+ gsi_remove (&si, true);
-+
- set_immediate_dominator (CDI_DOMINATORS, default_bb, l0_bb);
- }
-
-@@ -6852,6 +6859,9 @@
- lower_omp (gimple_try_eval (stmt), ctx);
- lower_omp (gimple_try_cleanup (stmt), ctx);
- break;
-+ case GIMPLE_TRANSACTION:
-+ lower_omp (gimple_transaction_body (stmt), ctx);
-+ break;
- case GIMPLE_BIND:
- lower_omp (gimple_bind_body (stmt), ctx);
- break;
-Index: gcc/cfg.c
-===================================================================
---- gcc/cfg.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/cfg.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -814,10 +814,10 @@
- clear_aux_for_blocks ();
- }
-
--/* Allocate a memory edge of SIZE as BB->aux. The obstack must
-+/* Allocate a memory edge of SIZE as E->aux. The obstack must
- be first initialized by alloc_aux_for_edges. */
-
--static void
-+void
- alloc_aux_for_edge (edge e, int size)
- {
- /* Verify that aux field is clear. */
-Index: gcc/tree-chrec.c
-===================================================================
---- gcc/tree-chrec.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/tree-chrec.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1011,6 +1011,8 @@
- if (TREE_CODE (chrec) == POLYNOMIAL_CHREC)
- {
- if (CHREC_VARIABLE (chrec) == (unsigned) loopnum
-+ || flow_loop_nested_p (get_loop (loopnum),
-+ get_loop (CHREC_VARIABLE (chrec)))
- || !evolution_function_is_invariant_rec_p (CHREC_RIGHT (chrec),
- loopnum)
- || !evolution_function_is_invariant_rec_p (CHREC_LEFT (chrec),
-@@ -1114,6 +1116,8 @@
- break;
-
- default:
-+ if (tree_contains_chrecs (CHREC_LEFT (chrec), NULL))
-+ return false;
- break;
- }
-
-@@ -1127,6 +1131,8 @@
- break;
-
- default:
-+ if (tree_contains_chrecs (CHREC_RIGHT (chrec), NULL))
-+ return false;
- break;
- }
-
-Index: gcc/DEV-PHASE
-===================================================================
---- gcc/DEV-PHASE (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/DEV-PHASE (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -0,0 +1 @@
-+prerelease
-Index: gcc/tree-ssa-sccvn.c
-===================================================================
---- gcc/tree-ssa-sccvn.c (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/tree-ssa-sccvn.c (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -3590,6 +3590,8 @@
- fprintf (dump_file, "WARNING: Giving up with SCCVN due to "
- "SCC size %u exceeding %u\n", VEC_length (tree, scc),
- (unsigned)PARAM_VALUE (PARAM_SCCVN_MAX_SCC_SIZE));
-+
-+ VEC_free (tree, heap, scc);
- return false;
- }
-
-Index: gcc/ChangeLog
-===================================================================
---- gcc/ChangeLog (.../tags/gcc_4_7_1_release) (wersja 190845)
-+++ gcc/ChangeLog (.../branches/gcc-4_7-branch) (wersja 190845)
-@@ -1,3 +1,805 @@
-+2012-08-31 Kirill Yukhin <kirill.yukhin at intel.com>
-+
-+ Backport from mainline
-+ 2012-08-23 Yuri Rumyantsev <ysrumyan at gmail.com>
-+
-+ * config/i386/i386.c (ia32_multipass_dfa_lookahead) : Add
-+ case for Atom processor.
-+
-+2012-08-28 Uros Bizjak <ubizjak at gmail.com>
-+
-+ Backport from mainline
-+ 2012-08-27 Uros Bizjak <ubizjak at gmail.com>
-+
-+ PR target/46254
-+ * config/i386/predicates.md (cmpxchg8b_pic_memory_operand): Return
-+ true for TARGET_64BIT or !flag_pic.
-+ * config/i386/sync.md (*atomic_compare_and_swap_doubledi_pic): Remove.
-+ (atomic_compare_and_swap_double<mode>): Change operand 2 predicate
-+ to cmpxchg8b_pic_memory_operand. Use DWIH mode iterator.
-+ Add insn constraint. Conditionally emit xchg asm insns.
-+ (atomic_compare_and_swap<mode>): Update calls. Check only
-+ cmpxchg8b_pic_memory_operand in memory address fixup.
-+ (DCASMODE): Remove.
-+ (CASHMODE): Rename from DCASHMODE.
-+ (doublemodesuffix): Update modes.
-+ (regprefix): New mode attribute.
-+
-+ (unspecv) <UNSPECV_CMPXCHG_{1,2,3,4}>: Remove.
-+ <UNSPECV_CMPXCHG>: New constant.
-+ (atomic_compare_and_swap<mode>_1): Rename from
-+ atomic_compare_and_swap_single<mode>. Update calls and
-+ unspec_volatile constants.
-+ (atomic_compare_and_swap<mode>_doubleword): Rename from
-+ atomic_compare_and_swap_double<mode>. Update calls and
-+ unspec_volatile constants.
-+
-+2012-08-28 Walter Lee <walt at tilera.com>
-+
-+ Backport from mainline
-+ 2012-08-28 Walter Lee <walt at tilera.com>
-+
-+ * confg/tilegx/tilegx.md: Fix code style.
-+ (*zero_extendsidi_truncdisi): Fix typo.
-+ * config/tilegx/tilegx.c: Fix code style.
-+ (tilegx_function_profiler): Fix typo.
-+
-+2012-08-27 Walter Lee <walt at tilera.com>
-+
-+ Backport from mainline
-+ 2012-08-27 Walter Lee <walt at tilera.com>
-+
-+ * doc/md.texi (TILE-Gx): Fix typo.
-+
-+2012-08-27 Walter Lee <walt at tilera.com>
-+
-+ Backport from mainline
-+ 2012-08-27 Walter Lee <walt at tilera.com>
-+
-+ * config/tilegx/tilegx.c (tilegx_function_profiler): Fix typo.
-+ * config/tilepro/tilepro.c (tilepro_function_profiler): Ditto.
-+
-+2012-08-27 Walter Lee <walt at tilera.com>
-+
-+ Backport from mainline
-+ 2012-08-27 Walter Lee <walt at tilera.com>
-+
-+ * config/tilegx/tilegx.md (*bfins): Rename to insn_bfins.
-+ (insn_bfins): Delete.
-+
-+2012-08-27 Walter Lee <walt at tilera.com>
-+
-+ Backport from mainline
-+ 2012-08-27 Walter Lee <walt at tilera.com>
-+
-+ * config/tilegx/sync.md (atomic_compare_and_swap_bare<mode>,
-+ atomic_exchange_bare<mode>,
-+ atomic_fetch_<fetchop_name>_bare<mode>): Set type to X1_remote.
-+ * config/tilegx/tilegx-generic.md (X1_remote): New insn_reservation.
-+ * config/tilegx/tilegx.md (type): Add X1_remove.
-+ (insn_cmpexch<four_if_si>, insn_exch<four_if_si>,
-+ insn_fetchadd<four_if_si>, insn_fetchaddgez<four_if_si>,
-+ insn_fetchand<four_if_si>, insn_fetchor<four_if_si>): Set type to
-+ X1_remote.
-+
-+2012-08-25 Eric Botcazou <ebotcazou at adacore.com>
-+
-+ PR rtl-optimization/54088
-+ * jump.c (delete_related_insns): Robustify latest change.
-+
-+2012-08-21 Richard Guenther <rguenther at suse.de>
-+
-+ Backport from mainline
-+ 2012-08-16 Richard Guenther <rguenther at suse.de>
-+
-+ PR middle-end/54146
-+ * tree-ssa-loop-niter.c (find_loop_niter_by_eval): Free the
-+ exit vector.
-+ * ipa-pure-const.c (analyze_function): Use FOR_EACH_LOOP_BREAK.
-+ * cfgloop.h (FOR_EACH_LOOP_BREAK): Fix.
-+ * tree-ssa-structalias.c (handle_lhs_call): Properly free rhsc.
-+ * tree-ssa-loop-im.c (analyze_memory_references): Adjust.
-+ (tree_ssa_lim_finalize): Free all mem_refs.
-+ * tree-ssa-sccvn.c (extract_and_process_scc_for_name): Free
-+ scc when bailing out.
-+ * modulo-sched.c (sms_schedule): Use FOR_EACH_LOOP_BREAK.
-+ * ira-build.c (loop_with_complex_edge_p): Free loop exit vector.
-+ * graphite-sese-to-poly.c (scop_ivs_can_be_represented): Use
-+ FOR_EACH_LOOP_BREAK.
-+
-+ 2012-08-17 Richard Guenther <rguenther at suse.de>
-+
-+ * tree-sra.c (modify_function): Free redirect_callers vector.
-+ * ipa-split.c (split_function): Free args_to_pass vector.
-+ * tree-vect-stmts.c (vectorizable_operation): Do not pre-allocate
-+ vec_oprnds.
-+ (new_stmt_vec_info): Do not pre-allocate STMT_VINFO_SAME_ALIGN_REFS.
<Skipped 342803 lines>
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/crossmingw64-gcc.git/commitdiff/8c3f48e4321d2e8e8e7a3f46301ccd7658e6a81d
More information about the pld-cvs-commit
mailing list