
2012-09-28  Benjamin Kosnik  <bkoz@redhat.com>

	* acinclude.m4 (GLIBCXX_ENABLE_PARALLEL): Remove ENABLE_PARALLEL.
	* include/Makefile.am: Same.
	* src/c++98/Makefile.am: Same.
	* src/Makefile.am: Same.
	* Makefile.in: Regenerated.
	* aclocal.m4: Same.
	* configure: Same.
	* doc/Makefile.in: Same.
	* include/Makefile.in: Same.
	* libsupc++/Makefile.in: Same.
	* po/Makefile.in: Same.
	* python/Makefile.in: Same.
	* src/Makefile.in: Same.
	* testsuite/Makefile.in: Same.
	* src/c++11/Makefile.in: Same.
	* src/c++98/Makefile.in: Same.

	* src/c++98/compatibility-debug_list-2.cc: Update comments.
	* src/c++98/compatibility-debug_list.cc: Same.
	* src/c++98/compatibility-list-2.cc: Renamed to src/c++98/list-aux-2.cc
	* src/c++98/compatibility-list.cc: Renamed to src/c++98/list-aux.cc
	* src/c++98/compatibility-parallel_list-2.cc: Renamed to
	src/c++98/list_associated-2.cc.
	* src/c++98/compatibility-parallel_list.cc: Renamed to
	src/c++98/list_associated.cc.

diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index ab26660..b9aa5c7 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -2173,7 +2173,6 @@ AC_DEFUN([GLIBCXX_ENABLE_PARALLEL], [
 
   AC_MSG_CHECKING([for parallel mode support])
   AC_MSG_RESULT([$enable_parallel])
-  GLIBCXX_CONDITIONAL(ENABLE_PARALLEL, test $enable_parallel = yes)
 ])
 
 
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index 7b12ea2..09925d5 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -737,7 +737,6 @@ debug_headers = \
 # Parallel mode headers
 parallel_srcdir = ${glibcxx_srcdir}/include/parallel
 parallel_builddir = ./parallel
-if ENABLE_PARALLEL
 parallel_headers = \
 	${parallel_srcdir}/algo.h \
 	${parallel_srcdir}/algobase.h \
@@ -782,9 +781,6 @@ parallel_headers = \
 	${parallel_srcdir}/types.h \
 	${parallel_srcdir}/unique_copy.h \
 	${parallel_srcdir}/workstealing.h
-else
-parallel_headers =
-endif
 
 # Profile mode headers
 profile_srcdir = ${glibcxx_srcdir}/include/profile
@@ -1283,10 +1279,8 @@ install-headers:
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir}
 	for file in ${debug_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done
-	parallel_headers_install='${parallel_headers}';\
-	test -z "$$parallel_headers_install" || \
-	  $(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${parallel_builddir};\
-	for file in $$parallel_headers_install; do \
+	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${parallel_builddir}
+	for file in ${parallel_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${parallel_builddir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${profile_builddir}
 	for file in ${profile_headers}; do \
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index f64dca4..0251289 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -38,21 +38,16 @@ else
 ldbl_compat_sources =
 endif
 
-if ENABLE_PARALLEL
+
 parallel_compat_sources = \
 	compatibility-parallel_list.cc  compatibility-parallel_list-2.cc
-else
-parallel_compat_sources =
-endif
+
 
 cxx98_sources = \
 	compatibility.cc \
 	compatibility-debug_list.cc \
 	compatibility-debug_list-2.cc \
-	compatibility-list.cc \
-	compatibility-list-2.cc \
-	${ldbl_compat_sources} \
-	${parallel_compat_sources}
+	${ldbl_compat_sources} 
 
 cxx11_sources = \
 	compatibility-c++0x.cc \
@@ -79,18 +74,6 @@ libstdc___la_LDFLAGS = \
 libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
 
 
-# Use special rules for parallel mode compilation.
-PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp
-compatibility-parallel_list.lo: compatibility-parallel_list.cc
-	$(LTCXXCOMPILE) -c $<
-compatibility-parallel_list.o: compatibility-parallel_list.cc
-	$(CXXCOMPILE) -c $<
-
-compatibility-parallel_list-2.lo: compatibility-parallel_list-2.cc
-	$(LTCXXCOMPILE) -c $<
-compatibility-parallel_list-2.o: compatibility-parallel_list-2.cc
-	$(CXXCOMPILE) -c $<
-
 # Use special rules for compatibility-ldbl.cc compilation, as we need to
 # pass -mlong-double-64.
 if GLIBCXX_LDBL_COMPAT
diff --git a/libstdc++-v3/src/c++98/Makefile.am b/libstdc++-v3/src/c++98/Makefile.am
index c153a59..5733f34 100644
--- a/libstdc++-v3/src/c++98/Makefile.am
+++ b/libstdc++-v3/src/c++98/Makefile.am
@@ -82,11 +82,6 @@ c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC)
 basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
 	$(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true
 
-if ENABLE_PARALLEL
-parallel_sources = parallel_settings.cc
-else
-parallel_sources =
-endif
 
 if ENABLE_EXTERN_TEMPLATE
 XTEMPLATE_FLAGS = -fno-implicit-templates
@@ -108,6 +103,8 @@ XTEMPLATE_FLAGS =
 inst_sources =
 endif
 
+parallel_sources = parallel_settings.cc
+
 # Sources present in the src directory, always present.
 sources = \
 	bitmap_allocator.cc \
@@ -124,6 +121,10 @@ sources = \
 	ios_init.cc \
 	ios_locale.cc \
 	list.cc \
+	list-aux.cc \
+	list-aux-2.cc \
+	list_associated.cc \
+	list_associated-2.cc \
 	locale.cc \
 	locale_init.cc \
 	locale_facets.cc \
diff --git a/libstdc++-v3/src/c++98/compatibility-debug_list-2.cc b/libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
index c032ff8..7091ecd 100644
--- a/libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
+++ b/libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
@@ -1,6 +1,6 @@
 // Compatibility symbols for previous versions, debug list -*- 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
@@ -25,4 +25,4 @@
 #define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __norm {
 #define _GLIBCXX_END_NAMESPACE_COMPAT }
 
-#include "compatibility-list-2.cc"
+#include "list-aux-2.cc"
diff --git a/libstdc++-v3/src/c++98/compatibility-debug_list.cc b/libstdc++-v3/src/c++98/compatibility-debug_list.cc
index 76cceec..eb20884 100644
--- a/libstdc++-v3/src/c++98/compatibility-debug_list.cc
+++ b/libstdc++-v3/src/c++98/compatibility-debug_list.cc
@@ -1,6 +1,6 @@
 // Compatibility symbols for previous versions, debug list -*- C++ -*-
 
-// Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 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
@@ -25,4 +25,4 @@
 #define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __norm {
 #define _GLIBCXX_END_NAMESPACE_COMPAT }
 
-#include "compatibility-list.cc"
+#include "list-aux.cc"
diff --git a/libstdc++-v3/src/c++98/compatibility-list-2.cc b/libstdc++-v3/src/c++98/compatibility-list-2.cc
deleted file mode 100644
index 0e118ff..0000000
--- a/libstdc++-v3/src/c++98/compatibility-list-2.cc
+++ /dev/null
@@ -1,117 +0,0 @@
-// Compatibility symbols for previous versions, list bits -*- C++ -*-
-
-// 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
-// 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.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-#include <bits/move.h>
-
-#ifdef _GLIBCXX_SHARED
-
-#ifndef _GLIBCXX_BEGIN_NAMESPACE_COMPAT
-# define _GLIBCXX_BEGIN_NAMESPACE_COMPAT
-#endif
-
-#ifndef _GLIBCXX_END_NAMESPACE_COMPAT
-# define _GLIBCXX_END_NAMESPACE_COMPAT
-#endif
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-_GLIBCXX_BEGIN_NAMESPACE_COMPAT
-
-  struct _List_node_base
-  {
-    _List_node_base* _M_next;
-    _List_node_base* _M_prev;
-
-    void
-    _M_transfer(_List_node_base * const __first,
-		_List_node_base * const __last) _GLIBCXX_USE_NOEXCEPT;
-
-    void
-    _M_reverse() _GLIBCXX_USE_NOEXCEPT;
-
-    void
-    _M_hook(_List_node_base * const __position) _GLIBCXX_USE_NOEXCEPT;
-
-    void
-    _M_unhook() _GLIBCXX_USE_NOEXCEPT;
-  };
-
-  void
-  _List_node_base::
-  _M_transfer(_List_node_base * const __first,
-	      _List_node_base * const __last) _GLIBCXX_USE_NOEXCEPT
-  {
-    if (this != __last)
-    {
-      // Remove [first, last) from its old position.
-      __last->_M_prev->_M_next  = this;
-      __first->_M_prev->_M_next = __last;
-      this->_M_prev->_M_next    = __first;
-
-      // Splice [first, last) into its new position.
-      _List_node_base* const __tmp = this->_M_prev;
-      this->_M_prev                = __last->_M_prev;
-      __last->_M_prev              = __first->_M_prev;
-      __first->_M_prev             = __tmp;
-    }
-  }
-
-  void
-  _List_node_base::_M_reverse() _GLIBCXX_USE_NOEXCEPT
-  {
-    _List_node_base* __tmp = this;
-    do
-    {
-      std::swap(__tmp->_M_next, __tmp->_M_prev);
-
-      // Old next node is now prev.
-      __tmp = __tmp->_M_prev;
-    }
-    while (__tmp != this);
-  }
-
-  void
-  _List_node_base::
-  _M_hook(_List_node_base* const __position) _GLIBCXX_USE_NOEXCEPT
-  {
-    this->_M_next = __position;
-    this->_M_prev = __position->_M_prev;
-    __position->_M_prev->_M_next = this;
-    __position->_M_prev = this;
-  }
-
-  void
-  _List_node_base::_M_unhook() _GLIBCXX_USE_NOEXCEPT
-  {
-    _List_node_base* const __next_node = this->_M_next;
-    _List_node_base* const __prev_node = this->_M_prev;
-    __prev_node->_M_next = __next_node;
-    __next_node->_M_prev = __prev_node;
-  }
-
-_GLIBCXX_END_NAMESPACE_COMPAT
-
-} // namespace std
-
-#endif
diff --git a/libstdc++-v3/src/c++98/compatibility-list.cc b/libstdc++-v3/src/c++98/compatibility-list.cc
deleted file mode 100644
index 7e074a7..0000000
--- a/libstdc++-v3/src/c++98/compatibility-list.cc
+++ /dev/null
@@ -1,146 +0,0 @@
-// Compatibility symbols for previous versions, list bits -*- C++ -*-
-
-// Copyright (C) 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
-// 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.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-#include <bits/move.h>
-
-#ifndef _GLIBCXX_BEGIN_NAMESPACE_COMPAT
-# define _GLIBCXX_BEGIN_NAMESPACE_COMPAT
-#endif
-
-#ifndef _GLIBCXX_END_NAMESPACE_COMPAT
-# define _GLIBCXX_END_NAMESPACE_COMPAT
-#endif
-
-namespace std _GLIBCXX_VISIBILITY(default)
-{
-_GLIBCXX_BEGIN_NAMESPACE_COMPAT
-
-  struct _List_node_base
-  {
-    _List_node_base* _M_next;
-    _List_node_base* _M_prev;
-
-    static void
-    swap(_List_node_base& __x, _List_node_base& __y) throw ();
-
-    void
-    transfer(_List_node_base * const __first,
-	     _List_node_base * const __last) throw ();
-
-    void
-    reverse() throw ();
-
-    void
-    hook(_List_node_base * const __position) throw ();
-
-    void
-    unhook() throw ();
-  };
-
-  void
-  _List_node_base::swap(_List_node_base& __x, _List_node_base& __y) throw()
-  {
-    if ( __x._M_next != &__x )
-      {
-	if ( __y._M_next != &__y )
-	  {
-	    // Both __x and __y are not empty.
-	    std::swap(__x._M_next,__y._M_next);
-	    std::swap(__x._M_prev,__y._M_prev);
-	    __x._M_next->_M_prev = __x._M_prev->_M_next = &__x;
-	    __y._M_next->_M_prev = __y._M_prev->_M_next = &__y;
-	  }
-	else
-	  {
-	    // __x is not empty, __y is empty.
-	    __y._M_next = __x._M_next;
-	    __y._M_prev = __x._M_prev;
-	    __y._M_next->_M_prev = __y._M_prev->_M_next = &__y;
-	    __x._M_next = __x._M_prev = &__x;
-	  }
-      }
-    else if ( __y._M_next != &__y )
-      {
-	// __x is empty, __y is not empty.
-	__x._M_next = __y._M_next;
-	__x._M_prev = __y._M_prev;
-	__x._M_next->_M_prev = __x._M_prev->_M_next = &__x;
-	__y._M_next = __y._M_prev = &__y;
-      }
-  }
-
-  void
-  _List_node_base::transfer(_List_node_base * const __first,
-			    _List_node_base * const __last) throw ()
-  {
-    if (this != __last)
-    {
-      // Remove [first, last) from its old position.
-      __last->_M_prev->_M_next  = this;
-      __first->_M_prev->_M_next = __last;
-      this->_M_prev->_M_next    = __first;
-
-      // Splice [first, last) into its new position.
-      _List_node_base* const __tmp = this->_M_prev;
-      this->_M_prev                = __last->_M_prev;
-      __last->_M_prev              = __first->_M_prev;
-      __first->_M_prev             = __tmp;
-    }
-  }
-
-  void
-  _List_node_base::reverse() throw ()
-  {
-    _List_node_base* __tmp = this;
-    do
-    {
-      std::swap(__tmp->_M_next, __tmp->_M_prev);
-
-      // Old next node is now prev.
-      __tmp = __tmp->_M_prev;
-    }
-    while (__tmp != this);
-  }
-
-  void
-  _List_node_base::hook(_List_node_base* const __position) throw ()
-  {
-    this->_M_next = __position;
-    this->_M_prev = __position->_M_prev;
-    __position->_M_prev->_M_next = this;
-    __position->_M_prev = this;
-  }
-
-  void
-  _List_node_base::unhook() throw ()
-  {
-    _List_node_base* const __next_node = this->_M_next;
-    _List_node_base* const __prev_node = this->_M_prev;
-    __prev_node->_M_next = __next_node;
-    __next_node->_M_prev = __prev_node;
-  }
-
-_GLIBCXX_END_NAMESPACE_COMPAT
-
-} // namespace std
diff --git a/libstdc++-v3/src/c++98/compatibility-parallel_list-2.cc b/libstdc++-v3/src/c++98/compatibility-parallel_list-2.cc
deleted file mode 100644
index 8dc837a..0000000
--- a/libstdc++-v3/src/c++98/compatibility-parallel_list-2.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-// Compatibility symbols for previous versions, parallel list -*- C++ -*-
-
-// Copyright (C) 2011 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.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-#define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __cxx1998 {
-#define _GLIBCXX_END_NAMESPACE_COMPAT }
-
-#include "compatibility-list-2.cc"
diff --git a/libstdc++-v3/src/c++98/compatibility-parallel_list.cc b/libstdc++-v3/src/c++98/compatibility-parallel_list.cc
deleted file mode 100644
index 05e50fa..0000000
--- a/libstdc++-v3/src/c++98/compatibility-parallel_list.cc
+++ /dev/null
@@ -1,28 +0,0 @@
-// Compatibility symbols for previous versions, parallel list -*- C++ -*-
-
-// Copyright (C) 2010, 2011 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.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-// <http://www.gnu.org/licenses/>.
-
-#define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __cxx1998 {
-#define _GLIBCXX_END_NAMESPACE_COMPAT }
-
-#include "compatibility-list.cc"
diff --git a/libstdc++-v3/src/c++98/list-aux-2.cc b/libstdc++-v3/src/c++98/list-aux-2.cc
new file mode 100644
index 0000000..0e118ff
--- /dev/null
+++ b/libstdc++-v3/src/c++98/list-aux-2.cc
@@ -0,0 +1,117 @@
+// Compatibility symbols for previous versions, list bits -*- C++ -*-
+
+// 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
+// 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.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/move.h>
+
+#ifdef _GLIBCXX_SHARED
+
+#ifndef _GLIBCXX_BEGIN_NAMESPACE_COMPAT
+# define _GLIBCXX_BEGIN_NAMESPACE_COMPAT
+#endif
+
+#ifndef _GLIBCXX_END_NAMESPACE_COMPAT
+# define _GLIBCXX_END_NAMESPACE_COMPAT
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_COMPAT
+
+  struct _List_node_base
+  {
+    _List_node_base* _M_next;
+    _List_node_base* _M_prev;
+
+    void
+    _M_transfer(_List_node_base * const __first,
+		_List_node_base * const __last) _GLIBCXX_USE_NOEXCEPT;
+
+    void
+    _M_reverse() _GLIBCXX_USE_NOEXCEPT;
+
+    void
+    _M_hook(_List_node_base * const __position) _GLIBCXX_USE_NOEXCEPT;
+
+    void
+    _M_unhook() _GLIBCXX_USE_NOEXCEPT;
+  };
+
+  void
+  _List_node_base::
+  _M_transfer(_List_node_base * const __first,
+	      _List_node_base * const __last) _GLIBCXX_USE_NOEXCEPT
+  {
+    if (this != __last)
+    {
+      // Remove [first, last) from its old position.
+      __last->_M_prev->_M_next  = this;
+      __first->_M_prev->_M_next = __last;
+      this->_M_prev->_M_next    = __first;
+
+      // Splice [first, last) into its new position.
+      _List_node_base* const __tmp = this->_M_prev;
+      this->_M_prev                = __last->_M_prev;
+      __last->_M_prev              = __first->_M_prev;
+      __first->_M_prev             = __tmp;
+    }
+  }
+
+  void
+  _List_node_base::_M_reverse() _GLIBCXX_USE_NOEXCEPT
+  {
+    _List_node_base* __tmp = this;
+    do
+    {
+      std::swap(__tmp->_M_next, __tmp->_M_prev);
+
+      // Old next node is now prev.
+      __tmp = __tmp->_M_prev;
+    }
+    while (__tmp != this);
+  }
+
+  void
+  _List_node_base::
+  _M_hook(_List_node_base* const __position) _GLIBCXX_USE_NOEXCEPT
+  {
+    this->_M_next = __position;
+    this->_M_prev = __position->_M_prev;
+    __position->_M_prev->_M_next = this;
+    __position->_M_prev = this;
+  }
+
+  void
+  _List_node_base::_M_unhook() _GLIBCXX_USE_NOEXCEPT
+  {
+    _List_node_base* const __next_node = this->_M_next;
+    _List_node_base* const __prev_node = this->_M_prev;
+    __prev_node->_M_next = __next_node;
+    __next_node->_M_prev = __prev_node;
+  }
+
+_GLIBCXX_END_NAMESPACE_COMPAT
+
+} // namespace std
+
+#endif
diff --git a/libstdc++-v3/src/c++98/list-aux.cc b/libstdc++-v3/src/c++98/list-aux.cc
new file mode 100644
index 0000000..7e074a7
--- /dev/null
+++ b/libstdc++-v3/src/c++98/list-aux.cc
@@ -0,0 +1,146 @@
+// Compatibility symbols for previous versions, list bits -*- C++ -*-
+
+// Copyright (C) 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
+// 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.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#include <bits/move.h>
+
+#ifndef _GLIBCXX_BEGIN_NAMESPACE_COMPAT
+# define _GLIBCXX_BEGIN_NAMESPACE_COMPAT
+#endif
+
+#ifndef _GLIBCXX_END_NAMESPACE_COMPAT
+# define _GLIBCXX_END_NAMESPACE_COMPAT
+#endif
+
+namespace std _GLIBCXX_VISIBILITY(default)
+{
+_GLIBCXX_BEGIN_NAMESPACE_COMPAT
+
+  struct _List_node_base
+  {
+    _List_node_base* _M_next;
+    _List_node_base* _M_prev;
+
+    static void
+    swap(_List_node_base& __x, _List_node_base& __y) throw ();
+
+    void
+    transfer(_List_node_base * const __first,
+	     _List_node_base * const __last) throw ();
+
+    void
+    reverse() throw ();
+
+    void
+    hook(_List_node_base * const __position) throw ();
+
+    void
+    unhook() throw ();
+  };
+
+  void
+  _List_node_base::swap(_List_node_base& __x, _List_node_base& __y) throw()
+  {
+    if ( __x._M_next != &__x )
+      {
+	if ( __y._M_next != &__y )
+	  {
+	    // Both __x and __y are not empty.
+	    std::swap(__x._M_next,__y._M_next);
+	    std::swap(__x._M_prev,__y._M_prev);
+	    __x._M_next->_M_prev = __x._M_prev->_M_next = &__x;
+	    __y._M_next->_M_prev = __y._M_prev->_M_next = &__y;
+	  }
+	else
+	  {
+	    // __x is not empty, __y is empty.
+	    __y._M_next = __x._M_next;
+	    __y._M_prev = __x._M_prev;
+	    __y._M_next->_M_prev = __y._M_prev->_M_next = &__y;
+	    __x._M_next = __x._M_prev = &__x;
+	  }
+      }
+    else if ( __y._M_next != &__y )
+      {
+	// __x is empty, __y is not empty.
+	__x._M_next = __y._M_next;
+	__x._M_prev = __y._M_prev;
+	__x._M_next->_M_prev = __x._M_prev->_M_next = &__x;
+	__y._M_next = __y._M_prev = &__y;
+      }
+  }
+
+  void
+  _List_node_base::transfer(_List_node_base * const __first,
+			    _List_node_base * const __last) throw ()
+  {
+    if (this != __last)
+    {
+      // Remove [first, last) from its old position.
+      __last->_M_prev->_M_next  = this;
+      __first->_M_prev->_M_next = __last;
+      this->_M_prev->_M_next    = __first;
+
+      // Splice [first, last) into its new position.
+      _List_node_base* const __tmp = this->_M_prev;
+      this->_M_prev                = __last->_M_prev;
+      __last->_M_prev              = __first->_M_prev;
+      __first->_M_prev             = __tmp;
+    }
+  }
+
+  void
+  _List_node_base::reverse() throw ()
+  {
+    _List_node_base* __tmp = this;
+    do
+    {
+      std::swap(__tmp->_M_next, __tmp->_M_prev);
+
+      // Old next node is now prev.
+      __tmp = __tmp->_M_prev;
+    }
+    while (__tmp != this);
+  }
+
+  void
+  _List_node_base::hook(_List_node_base* const __position) throw ()
+  {
+    this->_M_next = __position;
+    this->_M_prev = __position->_M_prev;
+    __position->_M_prev->_M_next = this;
+    __position->_M_prev = this;
+  }
+
+  void
+  _List_node_base::unhook() throw ()
+  {
+    _List_node_base* const __next_node = this->_M_next;
+    _List_node_base* const __prev_node = this->_M_prev;
+    __prev_node->_M_next = __next_node;
+    __next_node->_M_prev = __prev_node;
+  }
+
+_GLIBCXX_END_NAMESPACE_COMPAT
+
+} // namespace std
diff --git a/libstdc++-v3/src/c++98/list_associated-2.cc b/libstdc++-v3/src/c++98/list_associated-2.cc
new file mode 100644
index 0000000..fd92a25
--- /dev/null
+++ b/libstdc++-v3/src/c++98/list_associated-2.cc
@@ -0,0 +1,28 @@
+// Default definitions when using namespace associations, list -*- C++ -*-
+
+// 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
+// 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.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __cxx1998 {
+#define _GLIBCXX_END_NAMESPACE_COMPAT }
+
+#include "list-aux-2.cc"
diff --git a/libstdc++-v3/src/c++98/list_associated.cc b/libstdc++-v3/src/c++98/list_associated.cc
new file mode 100644
index 0000000..b2dd9e0
--- /dev/null
+++ b/libstdc++-v3/src/c++98/list_associated.cc
@@ -0,0 +1,29 @@
+
+// Default definitions when using namespace associations, list -*- C++ -*-
+
+// Copyright (C) 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
+// 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.
+
+// Under Section 7 of GPL version 3, you are granted additional
+// permissions described in the GCC Runtime Library Exception, version
+// 3.1, as published by the Free Software Foundation.
+
+// You should have received a copy of the GNU General Public License and
+// a copy of the GCC Runtime Library Exception along with this program;
+// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
+// <http://www.gnu.org/licenses/>.
+
+#define _GLIBCXX_BEGIN_NAMESPACE_COMPAT namespace __cxx1998 {
+#define _GLIBCXX_END_NAMESPACE_COMPAT }
+
+#include "list-aux.cc"
