diff -Nrcpad gcc-4.3.1/gcc/cp/ChangeLog gcc-4.3.2/gcc/cp/ChangeLog
*** gcc-4.3.1/gcc/cp/ChangeLog	Fri Jun  6 14:28:48 2008
--- gcc-4.3.2/gcc/cp/ChangeLog	Wed Aug 27 18:02:45 2008
***************
*** 1,3 ****
--- 1,96 ----
+ 2008-08-27  Release Manager
+ 
+ 	* GCC 4.3.2 released.
+ 
+ 2008-08-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/37156
+ 	* error.c (cp_print_error_function): Deal with recursive BLOCK trees.
+ 
+ 2008-08-07  Simon Baldwin  <simonb@google.com>
+ 
+ 	Backport from mainline:
+ 	2008-08-04  Simon Baldwin  <simonb@google.com>
+ 
+ 	PR c++/36999
+ 	* parser.c (cp_parser_elaborated_type_specifier): Warn only when
+ 	the declaration's id is followed by a semicolon.
+ 
+ 2008-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/36405
+ 	* rtti.c (get_tinfo_decl_dynamic, get_typeid): Call
+ 	complete_type_or_else even for UNKNOWN_TYPE to get diagnostics.
+ 
+ 2008-07-30  Dodji Seketeli  <dseketel@redhat.com>
+ 
+ 	PR c++/36767
+ 	* decl2.c (fix_temporary_vars_context_r): New function.
+ 	 (one_static_initialization_or_destruction): Make sure temporary
+ 	 variables part of the initialiser have their DECL_CONTEXT()
+ 	 properly set.
+ 
+ 2008-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/36852
+ 	* tree.c (cplus_array_hash, build_cplus_array_type_1): Hash on
+ 	TYPE_UID instead of pointers.
+ 
+ 2008-07-18  Dodji Seketeli  <dseketel@redhat.com>
+ 
+ 	PR c++/36407
+ 	* call.c (convert_like_real): Don't take the error code path
+ 	when a rvalue or base conversion has the bad_p field set.
+ 
+ 2008-07-07  Simon Martin  <simartin@users.sourceforge.net>
+ 
+ 	PR c++/34963
+ 	* decl.c (grokdeclarator): Reset storage_class and staticp for friend
+ 	functions declared with a storage class qualifier.
+ 
+ 2008-06-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/36662
+ 	* decl2.c (is_late_template_attribute): If the first attribute
+ 	argument is IDENTIFIER_NODE, don't consider it when checking
+ 	if arguments are value or type dependent.
+ 
+ 2008-06-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/36364
+ 	* repo.c (repo_emit_p): Put const static data members initialized
+ 	by const expr into *.rpo file, just return 2 if IDENTIFIER_REPO_CHOSEN
+ 	for it is 0.
+ 
+ 2008-06-15  Simon Martin  <simartin@users.sourceforge.net>
+ 
+ 	PR c++/35320
+ 	* decl2.c (grokbitfield): Receive the list of attributes, pass it to
+ 	grokdeclarator and apply it to the created declaration.
+ 	* cp-tree.h (grokbitfield): Update prototype.
+ 	* parser.c (cp_parser_member_declaration): Don't apply the attributes
+ 	since they are now applied in grokbitfield. Adjusted the call to
+ 	grokbitfield.
+ 	(cp_parser_objc_class_ivars): Likewise.
+ 
+ 2008-06-15  Simon Martin  <simartin@users.sourceforge.net>
+ 
+ 	PR c++/35317
+ 	* class.c (type_requires_array_cookie): Do not consider delete[]
+ 	operators with an ellipsis as second argument.
+ 
+ 2008-06-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/36408
+ 	* semantics.c (stmt_expr_value_expr): Don't crash on empty
+ 	STATEMENT_LIST.
+ 
+ 2008-06-07  Danny Smith  <dannysmith@users.sourceforge.net>
+ 
+ 	PR target/35921
+ 	* optimize.c (maybe_clone_body): Copy DECL_DLLIMPORT_P flag
+ 	to clone.
+ 
  2008-06-06  Release Manager
  
  	* GCC 4.3.1 released.
***************
*** 1816,1822 ****
  
  2007-09-05  Jan Hubicka  <jh@suse.cz>
  
! 	* cp/sematics.c (expand_body): Remove unnecesary import_export_decl
  	call, DECL_EXTERNAL checks and current_function_decl saving.
  
  2007-09-05  Paolo Carlini  <pcarlini@suse.de>
--- 1909,1915 ----
  
  2007-09-05  Jan Hubicka  <jh@suse.cz>
  
! 	* sematics.c (expand_body): Remove unnecesary import_export_decl
  	call, DECL_EXTERNAL checks and current_function_decl saving.
  
  2007-09-05  Paolo Carlini  <pcarlini@suse.de>
***************
*** 2243,2249 ****
  
  	* cp-objcp-common.c (cxx_get_alias_set): Change return type to
  	alias_set_type.
! 	* cp/cp-tree.h (cxx_get_alias_set): Update declaration.
  
  2007-08-10  Ollie Wild  <aaw@google.com>
  
--- 2336,2342 ----
  
  	* cp-objcp-common.c (cxx_get_alias_set): Change return type to
  	alias_set_type.
! 	* cp-tree.h (cxx_get_alias_set): Update declaration.
  
  2007-08-10  Ollie Wild  <aaw@google.com>
  
***************
*** 2916,2922 ****
  
  2007-05-11  Silvius Rus  <rus@google.com>
  
! 	* cp/typeck.c (build_indirect_ref): Add call to
  	strict_aliasing_warning.
  	(build_reinterpret_cast_1): Condition call to
  	strict_aliasing_warning. 
--- 3009,3015 ----
  
  2007-05-11  Silvius Rus  <rus@google.com>
  
! 	* typeck.c (build_indirect_ref): Add call to
  	strict_aliasing_warning.
  	(build_reinterpret_cast_1): Condition call to
  	strict_aliasing_warning. 
***************
*** 3006,3012 ****
  
  2007-04-23  Jan Hubicka  <jh@suse.cz>
  
! 	* cp/decl2.c (finish_objects): Do not call target constructor/destructor
  	bits dirrectly.
  
  2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
--- 3099,3105 ----
  
  2007-04-23  Jan Hubicka  <jh@suse.cz>
  
! 	* decl2.c (finish_objects): Do not call target constructor/destructor
  	bits dirrectly.
  
  2007-04-21  Andrew Pinski  <andrew_pinski@playstation.sony.com>
***************
*** 3028,3034 ****
  2007-04-16  Seongbae Park <seongbae.park@gmail.com>
  
  	PR c++/29365
! 	* cp/decl2.c (constrain_class_visibility):
  	Do not warn about the use of anonymous namespace in the main input file.
  
  2007-04-15  Mark Mitchell  <mark@codesourcery.com>
--- 3121,3127 ----
  2007-04-16  Seongbae Park <seongbae.park@gmail.com>
  
  	PR c++/29365
! 	* decl2.c (constrain_class_visibility):
  	Do not warn about the use of anonymous namespace in the main input file.
  
  2007-04-15  Mark Mitchell  <mark@codesourcery.com>
***************
*** 3047,3053 ****
  
  2007-04-11  Jan Hubicka  <jh@suse.cz>
  
! 	* cp/class.c (convert_to_base_statically): Fold produced tree; verify
  	that we are not processing template_decl.
  
  2007-04-09  Mark Mitchell  <mark@codesourcery.com>
--- 3140,3146 ----
  
  2007-04-11  Jan Hubicka  <jh@suse.cz>
  
! 	* class.c (convert_to_base_statically): Fold produced tree; verify
  	that we are not processing template_decl.
  
  2007-04-09  Mark Mitchell  <mark@codesourcery.com>
***************
*** 3302,3308 ****
  
  2007-03-14  Dirk Mueller  <dmueller@suse.de>
  
! 	* cp/semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
  	(finish_do_body): Warn about empty body in do/while statement.
  
  2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
--- 3395,3401 ----
  
  2007-03-14  Dirk Mueller  <dmueller@suse.de>
  
! 	* semantics.c (c_finish_if_stmt): Call empty_if_body_warning.
  	(finish_do_body): Warn about empty body in do/while statement.
  
  2007-03-14  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
***************
*** 3317,3323 ****
  	
  2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
  
! 	* cp/repo.c (init_repo): Initialize random_seed saved options.
  	(finish_repo): Adjust.
  
  2007-03-13  Mark Mitchell  <mark@codesourcery.com>
--- 3410,3416 ----
  	
  2007-03-13  Alexandre Oliva  <aoliva@redhat.com>
  
! 	* repo.c (init_repo): Initialize random_seed saved options.
  	(finish_repo): Adjust.
  
  2007-03-13  Mark Mitchell  <mark@codesourcery.com>
***************
*** 3571,3579 ****
  
  2007-03-09  Dirk Mueller  <dmueller@suse.de>
  
! 	* cp/call.c (build_new_op): Call warn_logical_operator.
  
! 2007-03-08  Volker Reichelt  <reichelt@netcologne.de>
  
  	PR c++/30852
  	* semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
--- 3664,3672 ----
  
  2007-03-09  Dirk Mueller  <dmueller@suse.de>
  
! 	* call.c (build_new_op): Call warn_logical_operator.
  
! 2007-03-08  Volker Reichelt  <v.reichelt@netcologne.de>
  
  	PR c++/30852
  	* semantics.c (finish_offsetof): Handle COMPOUND_EXPR.
***************
*** 3587,3593 ****
  	* decl.c (grokdeclarator): Disable warnings for anonymous
  	bitfields.
  
! 2007-03-05  Volker Reichelt  <reichelt@netcologne.de>
  
  	* typeck2.c (readonly_error): Always emit a hard error.
  	Remove last argument.
--- 3680,3686 ----
  	* decl.c (grokdeclarator): Disable warnings for anonymous
  	bitfields.
  
! 2007-03-05  Volker Reichelt  <v.reichelt@netcologne.de>
  
  	* typeck2.c (readonly_error): Always emit a hard error.
  	Remove last argument.
diff -Nrcpad gcc-4.3.1/gcc/cp/call.c gcc-4.3.2/gcc/cp/call.c
*** gcc-4.3.1/gcc/cp/call.c	Tue May 27 06:02:18 2008
--- gcc-4.3.2/gcc/cp/call.c	Fri Jul 18 20:15:22 2008
*************** convert_like_real (conversion *convs, tr
*** 4354,4360 ****
    if (convs->bad_p
        && convs->kind != ck_user
        && convs->kind != ck_ambig
!       && convs->kind != ck_ref_bind)
      {
        conversion *t = convs;
        for (; t; t = convs->u.next)
--- 4354,4362 ----
    if (convs->bad_p
        && convs->kind != ck_user
        && convs->kind != ck_ambig
!       && convs->kind != ck_ref_bind
!       && convs->kind != ck_rvalue
!       && convs->kind != ck_base)
      {
        conversion *t = convs;
        for (; t; t = convs->u.next)
diff -Nrcpad gcc-4.3.1/gcc/cp/class.c gcc-4.3.2/gcc/cp/class.c
*** gcc-4.3.1/gcc/cp/class.c	Tue Apr  8 17:49:56 2008
--- gcc-4.3.2/gcc/cp/class.c	Sun Jun 15 11:57:33 2008
*************** type_requires_array_cookie (tree type)
*** 4123,4128 ****
--- 4123,4132 ----
        second_parm = TREE_CHAIN (TYPE_ARG_TYPES (TREE_TYPE (fn)));
        if (second_parm == void_list_node)
  	return false;
+       /* Do not consider this function if its second argument is an
+ 	 ellipsis.  */
+       if (!second_parm)
+ 	continue;
        /* Otherwise, if we have a two-argument function and the second
  	 argument is `size_t', it will be the usual deallocation
  	 function -- unless there is one-argument function, too.  */
diff -Nrcpad gcc-4.3.1/gcc/cp/cp-tree.h gcc-4.3.2/gcc/cp/cp-tree.h
*** gcc-4.3.1/gcc/cp/cp-tree.h	Wed May 21 19:58:27 2008
--- gcc-4.3.2/gcc/cp/cp-tree.h	Sun Jun 15 12:05:37 2008
*************** extern void check_member_template		(tree
*** 4284,4290 ****
  extern tree grokfield (const cp_declarator *, cp_decl_specifier_seq *,
  		       tree, bool, tree, tree);
  extern tree grokbitfield (const cp_declarator *, cp_decl_specifier_seq *,
! 			  tree);
  extern tree cp_reconstruct_complex_type		(tree, tree);
  extern void cplus_decl_attributes		(tree *, tree, int);
  extern void finish_anon_union			(tree);
--- 4284,4290 ----
  extern tree grokfield (const cp_declarator *, cp_decl_specifier_seq *,
  		       tree, bool, tree, tree);
  extern tree grokbitfield (const cp_declarator *, cp_decl_specifier_seq *,
! 			  tree, tree);
  extern tree cp_reconstruct_complex_type		(tree, tree);
  extern void cplus_decl_attributes		(tree *, tree, int);
  extern void finish_anon_union			(tree);
diff -Nrcpad gcc-4.3.1/gcc/cp/decl.c gcc-4.3.2/gcc/cp/decl.c
*** gcc-4.3.1/gcc/cp/decl.c	Wed May 21 19:58:27 2008
--- gcc-4.3.2/gcc/cp/decl.c	Mon Jul  7 20:42:03 2008
*************** grokdeclarator (const cp_declarator *dec
*** 7995,8001 ****
      }
  
    if (storage_class && friendp)
!     error ("storage class specifiers invalid in friend function declarations");
  
    if (!id_declarator)
      unqualified_id = NULL_TREE;
--- 7995,8005 ----
      }
  
    if (storage_class && friendp)
!     {
!       error ("storage class specifiers invalid in friend function declarations");
!       storage_class = sc_none;
!       staticp = 0;
!     }
  
    if (!id_declarator)
      unqualified_id = NULL_TREE;
diff -Nrcpad gcc-4.3.1/gcc/cp/decl2.c gcc-4.3.2/gcc/cp/decl2.c
*** gcc-4.3.1/gcc/cp/decl2.c	Thu Apr 24 16:31:59 2008
--- gcc-4.3.2/gcc/cp/decl2.c	Wed Jul 30 13:18:31 2008
***************
*** 1,6 ****
  /* Process declarations and variables for C++ compiler.
     Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
!    1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007  Free Software Foundation, Inc.
     Hacked by Michael Tiemann (tiemann@cygnus.com)
  
  This file is part of GCC.
--- 1,7 ----
  /* Process declarations and variables for C++ compiler.
     Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
!    1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
!    Free Software Foundation, Inc.
     Hacked by Michael Tiemann (tiemann@cygnus.com)
  
  This file is part of GCC.
*************** grokfield (const cp_declarator *declarat
*** 914,922 ****
  
  tree
  grokbitfield (const cp_declarator *declarator,
! 	      cp_decl_specifier_seq *declspecs, tree width)
  {
!   tree value = grokdeclarator (declarator, declspecs, BITFIELD, 0, NULL);
  
    if (value == error_mark_node) 
      return NULL_TREE; /* friends went bad.  */
--- 915,924 ----
  
  tree
  grokbitfield (const cp_declarator *declarator,
! 	      cp_decl_specifier_seq *declspecs, tree width,
! 	      tree attrlist)
  {
!   tree value = grokdeclarator (declarator, declspecs, BITFIELD, 0, &attrlist);
  
    if (value == error_mark_node) 
      return NULL_TREE; /* friends went bad.  */
*************** grokbitfield (const cp_declarator *decla
*** 972,977 ****
--- 974,983 ----
      }
  
    DECL_IN_AGGR_P (value) = 1;
+ 
+   if (attrlist)
+     cplus_decl_attributes (&value, attrlist, /*flags=*/0);
+ 
    return value;
  }
  
*************** is_late_template_attribute (tree attr, t
*** 1000,1005 ****
--- 1006,1019 ----
    for (arg = args; arg; arg = TREE_CHAIN (arg))
      {
        tree t = TREE_VALUE (arg);
+ 
+       /* If the first attribute argument is an identifier, only consider
+ 	 second and following arguments.  Attributes like mode, format,
+ 	 cleanup and several target specific attributes aren't late
+ 	 just because they have an IDENTIFIER_NODE as first argument.  */
+       if (arg == args && TREE_CODE (t) == IDENTIFIER_NODE)
+ 	continue;
+ 
        if (value_dependent_expression_p (t)
  	  || type_dependent_expression_p (t))
  	return true;
*************** get_priority_info (int priority)
*** 2769,2774 ****
--- 2783,2820 ----
  						    || DECL_ONE_ONLY (decl) \
  						    || DECL_WEAK (decl)))
  
+ /* Called from one_static_initialization_or_destruction(),
+    via walk_tree.
+    Walks the initializer list of a global variable and looks for
+    temporary variables (DECL_NAME() == NULL and DECL_ARTIFICIAL != 0)
+    and that have their DECL_CONTEXT() == NULL.
+    For each such temporary variable, set their DECL_CONTEXT() to
+    the current function. This is necessary because otherwise
+    some optimizers (enabled by -O2 -fprofile-arcs) might crash
+    when trying to refer to a temporary variable that does not have
+    it's DECL_CONTECT() properly set.  */
+ static tree 
+ fix_temporary_vars_context_r (tree *node,
+ 			      int  *unused ATTRIBUTE_UNUSED,
+ 			      void *unused1 ATTRIBUTE_UNUSED)
+ {
+   gcc_assert (current_function_decl);
+ 
+   if (TREE_CODE (*node) == BIND_EXPR)
+     {
+       tree var;
+ 
+       for (var = BIND_EXPR_VARS (*node); var; var = TREE_CHAIN (var))
+ 	if (TREE_CODE (var) == VAR_DECL
+ 	  && !DECL_NAME (var)
+ 	  && DECL_ARTIFICIAL (var)
+ 	  && !DECL_CONTEXT (var))
+ 	  DECL_CONTEXT (var) = current_function_decl;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
  /* Set up to handle the initialization or destruction of DECL.  If
     INITP is nonzero, we are initializing the variable.  Otherwise, we
     are destroying it.  */
*************** one_static_initialization_or_destruction
*** 2791,2796 ****
--- 2837,2855 ----
       information.  */
    input_location = DECL_SOURCE_LOCATION (decl);
  
+   /* Make sure temporary variables in the initialiser all have
+      their DECL_CONTEXT() set to a value different from NULL_TREE.
+      This can happen when global variables initialisers are built.
+      In that case, the DECL_CONTEXT() of the global variables _AND_ of all 
+      the temporary variables that might have been generated in the
+      accompagning initialisers is NULL_TREE, meaning the variables have been
+      declared in the global namespace.
+      What we want to do here is to fix that and make sure the DECL_CONTEXT()
+      of the temporaries are set to the current function decl.  */
+   cp_walk_tree_without_duplicates (&init,
+ 				   fix_temporary_vars_context_r,
+ 				   NULL);
+ 
    /* Because of:
  
         [class.access.spec]
diff -Nrcpad gcc-4.3.1/gcc/cp/error.c gcc-4.3.2/gcc/cp/error.c
*** gcc-4.3.1/gcc/cp/error.c	Wed Mar 26 13:07:24 2008
--- gcc-4.3.2/gcc/cp/error.c	Tue Aug 19 11:50:11 2008
*************** cp_print_error_function (diagnostic_cont
*** 2421,2427 ****
  	  if (abstract_origin)
  	    {
  	      ao = BLOCK_ABSTRACT_ORIGIN (abstract_origin);
! 	      while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao))
  		ao = BLOCK_ABSTRACT_ORIGIN (ao);
  	      gcc_assert (TREE_CODE (ao) == FUNCTION_DECL);
  	      fndecl = ao;
--- 2421,2429 ----
  	  if (abstract_origin)
  	    {
  	      ao = BLOCK_ABSTRACT_ORIGIN (abstract_origin);
! 	      while (TREE_CODE (ao) == BLOCK
! 		     && BLOCK_ABSTRACT_ORIGIN (ao)
! 		     && BLOCK_ABSTRACT_ORIGIN (ao) != ao)
  		ao = BLOCK_ABSTRACT_ORIGIN (ao);
  	      gcc_assert (TREE_CODE (ao) == FUNCTION_DECL);
  	      fndecl = ao;
diff -Nrcpad gcc-4.3.1/gcc/cp/optimize.c gcc-4.3.2/gcc/cp/optimize.c
*** gcc-4.3.1/gcc/cp/optimize.c	Thu Aug  2 10:36:13 2007
--- gcc-4.3.2/gcc/cp/optimize.c	Sat Jun  7 00:39:43 2008
*************** maybe_clone_body (tree fn)
*** 115,120 ****
--- 115,121 ----
        TREE_PUBLIC (clone) = TREE_PUBLIC (fn);
        DECL_VISIBILITY (clone) = DECL_VISIBILITY (fn);
        DECL_VISIBILITY_SPECIFIED (clone) = DECL_VISIBILITY_SPECIFIED (fn);
+       DECL_DLLIMPORT_P (clone) = DECL_DLLIMPORT_P (fn);
  
        /* Adjust the parameter names and locations.  */
        parm = DECL_ARGUMENTS (fn);
diff -Nrcpad gcc-4.3.1/gcc/cp/parser.c gcc-4.3.2/gcc/cp/parser.c
*** gcc-4.3.1/gcc/cp/parser.c	Sun May 11 19:56:39 2008
--- gcc-4.3.2/gcc/cp/parser.c	Thu Aug  7 12:27:48 2008
*************** cp_parser_elaborated_type_specifier (cp_
*** 11221,11227 ****
               caught elsewhere in parsing.  Those that are pointless arrive
               here.  */
  
!           if (cp_parser_declares_only_class_p (parser)
                && !is_friend && !processing_explicit_instantiation)
              warning (0, "declaration %qD does not declare anything", decl);
  
--- 11221,11227 ----
               caught elsewhere in parsing.  Those that are pointless arrive
               here.  */
  
!           if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON)
                && !is_friend && !processing_explicit_instantiation)
              warning (0, "declaration %qD does not declare anything", decl);
  
*************** cp_parser_member_declaration (cp_parser*
*** 15046,15054 ****
  							 sfk_none)
  				   : NULL,
  				   &decl_specifiers,
! 				   width);
! 	      /* Apply the attributes.  */
! 	      cplus_decl_attributes (&decl, attributes, /*flags=*/0);
  	    }
  	  else
  	    {
--- 15046,15053 ----
  							 sfk_none)
  				   : NULL,
  				   &decl_specifiers,
! 				   width,
! 				   attributes);
  	    }
  	  else
  	    {
*************** cp_parser_objc_class_ivars (cp_parser* p
*** 18961,18971 ****
  	  attributes = chainon (prefix_attributes, attributes);
  
  	  if (width)
- 	    {
  	      /* Create the bitfield declaration.  */
! 	      decl = grokbitfield (declarator, &declspecs, width);
! 	      cplus_decl_attributes (&decl, attributes, /*flags=*/0);
! 	    }
  	  else
  	    decl = grokfield (declarator, &declspecs,
  			      NULL_TREE, /*init_const_expr_p=*/false,
--- 18960,18969 ----
  	  attributes = chainon (prefix_attributes, attributes);
  
  	  if (width)
  	      /* Create the bitfield declaration.  */
! 	      decl = grokbitfield (declarator, &declspecs,
! 				   width,
! 				   attributes);
  	  else
  	    decl = grokfield (declarator, &declspecs,
  			      NULL_TREE, /*init_const_expr_p=*/false,
diff -Nrcpad gcc-4.3.1/gcc/cp/repo.c gcc-4.3.2/gcc/cp/repo.c
*** gcc-4.3.1/gcc/cp/repo.c	Sun Dec  9 21:26:29 2007
--- gcc-4.3.2/gcc/cp/repo.c	Fri Jun 27 22:35:14 2008
*************** finish_repo (void)
*** 280,285 ****
--- 280,286 ----
  int
  repo_emit_p (tree decl)
  {
+   int ret = 0;
    gcc_assert (TREE_PUBLIC (decl));
    gcc_assert (TREE_CODE (decl) == FUNCTION_DECL
  	      || TREE_CODE (decl) == VAR_DECL);
*************** repo_emit_p (tree decl)
*** 306,315 ****
  	return 2;
        /* Const static data members initialized by constant expressions must
  	 be processed where needed so that their definitions are
! 	 available.  */
        if (DECL_INTEGRAL_CONSTANT_VAR_P (decl)
  	  && DECL_CLASS_SCOPE_P (decl))
! 	return 2;
      }
    else if (!DECL_TEMPLATE_INSTANTIATION (decl))
      return 2;
--- 307,318 ----
  	return 2;
        /* Const static data members initialized by constant expressions must
  	 be processed where needed so that their definitions are
! 	 available.  Still record them into *.rpo files, so if they
! 	 weren't actually emitted and collect2 requests them, they can
! 	 be provided.  */
        if (DECL_INTEGRAL_CONSTANT_VAR_P (decl)
  	  && DECL_CLASS_SCOPE_P (decl))
! 	ret = 2;
      }
    else if (!DECL_TEMPLATE_INSTANTIATION (decl))
      return 2;
*************** repo_emit_p (tree decl)
*** 343,349 ****
        pending_repo = tree_cons (NULL_TREE, decl, pending_repo);
      }
  
!   return IDENTIFIER_REPO_CHOSEN (DECL_ASSEMBLER_NAME (decl));
  }
  
  /* Returns true iff the prelinker has explicitly marked CLASS_TYPE for
--- 346,352 ----
        pending_repo = tree_cons (NULL_TREE, decl, pending_repo);
      }
  
!   return IDENTIFIER_REPO_CHOSEN (DECL_ASSEMBLER_NAME (decl)) ? 1 : ret;
  }
  
  /* Returns true iff the prelinker has explicitly marked CLASS_TYPE for
diff -Nrcpad gcc-4.3.1/gcc/cp/rtti.c gcc-4.3.2/gcc/cp/rtti.c
*** gcc-4.3.1/gcc/cp/rtti.c	Wed Feb 27 09:26:24 2008
--- gcc-4.3.2/gcc/cp/rtti.c	Thu Jul 31 19:02:33 2008
*************** get_tinfo_decl_dynamic (tree exp)
*** 250,256 ****
    /* Peel off cv qualifiers.  */
    type = TYPE_MAIN_VARIANT (type);
  
!   if (CLASS_TYPE_P (type))
      type = complete_type_or_else (type, exp);
  
    if (!type)
--- 250,257 ----
    /* Peel off cv qualifiers.  */
    type = TYPE_MAIN_VARIANT (type);
  
!   /* For UNKNOWN_TYPEs call complete_type_or_else to get diagnostics.  */
!   if (CLASS_TYPE_P (type) || TREE_CODE (type) == UNKNOWN_TYPE)
      type = complete_type_or_else (type, exp);
  
    if (!type)
*************** get_typeid (tree type)
*** 457,463 ****
       that is the operand of typeid are always ignored.  */
    type = TYPE_MAIN_VARIANT (type);
  
!   if (CLASS_TYPE_P (type))
      type = complete_type_or_else (type, NULL_TREE);
  
    if (!type)
--- 458,465 ----
       that is the operand of typeid are always ignored.  */
    type = TYPE_MAIN_VARIANT (type);
  
!   /* For UNKNOWN_TYPEs call complete_type_or_else to get diagnostics.  */
!   if (CLASS_TYPE_P (type) || TREE_CODE (type) == UNKNOWN_TYPE)
      type = complete_type_or_else (type, NULL_TREE);
  
    if (!type)
diff -Nrcpad gcc-4.3.1/gcc/cp/semantics.c gcc-4.3.2/gcc/cp/semantics.c
*** gcc-4.3.1/gcc/cp/semantics.c	Fri May 23 12:16:41 2008
--- gcc-4.3.2/gcc/cp/semantics.c	Wed Jun 11 06:47:36 2008
*************** stmt_expr_value_expr (tree stmt_expr)
*** 1775,1781 ****
    if (TREE_CODE (t) == BIND_EXPR)
      t = BIND_EXPR_BODY (t);
  
!   if (TREE_CODE (t) == STATEMENT_LIST)
      t = STATEMENT_LIST_TAIL (t)->stmt;
  
    if (TREE_CODE (t) == EXPR_STMT)
--- 1775,1781 ----
    if (TREE_CODE (t) == BIND_EXPR)
      t = BIND_EXPR_BODY (t);
  
!   if (TREE_CODE (t) == STATEMENT_LIST && STATEMENT_LIST_TAIL (t))
      t = STATEMENT_LIST_TAIL (t)->stmt;
  
    if (TREE_CODE (t) == EXPR_STMT)
diff -Nrcpad gcc-4.3.1/gcc/cp/tree.c gcc-4.3.2/gcc/cp/tree.c
*** gcc-4.3.1/gcc/cp/tree.c	Mon Apr 21 18:02:26 2008
--- gcc-4.3.2/gcc/cp/tree.c	Tue Jul 29 16:40:15 2008
*************** cplus_array_hash (const void* k)
*** 504,512 ****
    hashval_t hash;
    const_tree const t = (const_tree) k;
  
!   hash = (htab_hash_pointer (TREE_TYPE (t))
! 	  ^ htab_hash_pointer (TYPE_DOMAIN (t)));
! 
    return hash;
  }
  
--- 504,512 ----
    hashval_t hash;
    const_tree const t = (const_tree) k;
  
!   hash = TYPE_UID (TREE_TYPE (t));
!   if (TYPE_DOMAIN (t))
!     hash ^= TYPE_UID (TYPE_DOMAIN (t));
    return hash;
  }
  
*************** build_cplus_array_type_1 (tree elt_type,
*** 553,560 ****
  	cplus_array_htab = htab_create_ggc (61, &cplus_array_hash,
  					    &cplus_array_compare, NULL);
        
!       hash = (htab_hash_pointer (elt_type)
! 	      ^ htab_hash_pointer (index_type));
        cai.type = elt_type;
        cai.domain = index_type;
  
--- 553,561 ----
  	cplus_array_htab = htab_create_ggc (61, &cplus_array_hash,
  					    &cplus_array_compare, NULL);
        
!       hash = TYPE_UID (elt_type);
!       if (index_type)
! 	hash ^= TYPE_UID (index_type);
        cai.type = elt_type;
        cai.domain = index_type;
  
diff -Nrcpad gcc-4.3.1/libstdc++-v3/ChangeLog gcc-4.3.2/libstdc++-v3/ChangeLog
*** gcc-4.3.1/libstdc++-v3/ChangeLog	Fri Jun  6 14:26:44 2008
--- gcc-4.3.2/libstdc++-v3/ChangeLog	Wed Aug 27 18:03:00 2008
***************
*** 1,3 ****
--- 1,90 ----
+ 2008-08-27  Release Manager
+ 
+ 	* GCC 4.3.2 released.
+ 
+ 2008-08-12  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	PR libstdc++/37100
+ 	* include/bits/stl_pair.h: Fix documentation URL in comment.
+ 
+ 2008-08-12  Johannes Singler  <singler@ira.uka.de>
+ 
+         * include/paralle/losertree.h
+         (LoserTreePointerBase<>::~LoserTreePointerBase):
+         Replace delete by appropriate delete[].
+ 
+ 2008-07-15  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	PR libstdc++/36832
+ 	* include/ext/rope (_Destroy_const): Add.
+ 	(rope<>::copy): Call it.
+ 	* testsuite/ext/rope/36832.cc: New.
+ 
+ 2008-07-10  Johannes Singler  <singler@ira.uka.de>
+ 
+         * include/parallel/balanced_quicksort.h:
+         (qsb_divide) Replace "*end" by "*(end - 1)" in assertion.
+ 
+ 2008-07-09  Andreas Beckmann  <gcc@abeckmann.de>
+ 
+ 	PR libstdc++/36552
+ 	* include/ext/pb_ds/detail/left_child_next_sibling_heap_/
+ 	null_metadata.hpp: Remove self-include.
+ 
+ 2008-07-09  Johannes Singler  <singler@ira.uka.de>
+ 
+ 	PR libstdc++/36729
+         * include/parallel/random_shuffle.h:
+         (sequential_random_shuffle) Copy data back.
+         * testsuite/25_algorithms/random_shuffle/1.cc:
+         New. Generic random_shuffle functionality test.
+ 
+ 2008-07-07  Bernd Schmidt  <bernd.schmidt@analog.com>
+ 
+ 	* configure.ac: Don't check AC_LIBTOOL_DLOPEN if using newlib.
+ 	* configure: Regenerate.
+ 
+ 2008-07-04  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	PR libstdc++/36616
+ 	* testsuite/22_locale/time_put/put/char/4.cc: Just use es_ES instead.
+ 	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+ 
+ 2008-06-30  Alfred E. Heggestad  <aeh@db.org>
+ 
+ 	* include/backward/backward_warning.h: Fix typo.
+ 
+ 2008-06-26  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	* include/parallel/base.h (plus, multiplies): Use __typeof__,
+ 	not typeof.
+ 
+ 2008-06-24  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	* include/bits/stl_algo.h (remove_if): Cast __pred result to bool.
+ 
+ 2008-06-24  Paolo Carlini  <paolo.carlini@oracle.com>
+ 
+ 	PR libstdc++/36616
+ 	* testsuite/22_locale/money_put/put/char/9780-3.cc: Fix expected
+ 	results for recent glibcs (2.8 and later).
+ 	* testsuite/22_locale/time_put/put/wchar_t/4.cc: Likewise.
+ 	* testsuite/22_locale/time_put/put/char/4.cc: Likewise.
+ 
+ 2008-06-24  Paolo Carlini  <paolo.carlini@oracle.com>
+ 	    Chalathip Thumkanon  <chalathip@gmail.com>
+ 
+ 	PR libstdc++/36612
+ 	* include/ext/pb_ds/exception.hpp (__throw_container_error,
+ 	__throw_insert_error, __throw_join_error, __throw_resize_error):
+ 	Mark inline.
+ 
+ 2008-06-15  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+ 
+ 	* include/Makefile.am: Remove trailing white space, fix typo.
+ 	(parallel_headers): Remove duplicate file, sort entries.
+ 	* include/Makefile.in: Regenerate.
+ 
  2008-06-06  Release Manager
  
  	* GCC 4.3.1 released.
diff -Nrcpad gcc-4.3.1/libstdc++-v3/configure gcc-4.3.2/libstdc++-v3/configure
*** gcc-4.3.1/libstdc++-v3/configure	Fri Apr 25 16:52:57 2008
--- gcc-4.3.2/libstdc++-v3/configure	Mon Jul  7 19:49:54 2008
*************** echo "$as_me: OS config directory is $os
*** 4125,4134 ****
  
  
  
! enable_dlopen=yes
  
  
  
  
  
  macro_version='2.1a'
--- 4125,4136 ----
  
  
  
! if test "x${with_newlib}" != "xyes"; then
!   enable_dlopen=yes
  
  
  
+ fi
  
  
  macro_version='2.1a'
*************** if test "${lt_cv_nm_interface+set}" = se
*** 4645,4657 ****
  else
    lt_cv_nm_interface="BSD nm"
    echo "int some_variable = 0;" > conftest.$ac_ext
!   (eval echo "\"\$as_me:4648: $ac_compile\"" >&5)
    (eval "$ac_compile" 2>conftest.err)
    cat conftest.err >&5
!   (eval echo "\"\$as_me:4651: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
    (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
    cat conftest.err >&5
!   (eval echo "\"\$as_me:4654: output\"" >&5)
    cat conftest.out >&5
    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
      lt_cv_nm_interface="MS dumpbin"
--- 4647,4659 ----
  else
    lt_cv_nm_interface="BSD nm"
    echo "int some_variable = 0;" > conftest.$ac_ext
!   (eval echo "\"\$as_me:4650: $ac_compile\"" >&5)
    (eval "$ac_compile" 2>conftest.err)
    cat conftest.err >&5
!   (eval echo "\"\$as_me:4653: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
    (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
    cat conftest.err >&5
!   (eval echo "\"\$as_me:4656: output\"" >&5)
    cat conftest.out >&5
    if $GREP 'External.*some_variable' conftest.out > /dev/null; then
      lt_cv_nm_interface="MS dumpbin"
*************** ia64-*-hpux*)
*** 5695,5701 ****
    ;;
  *-*-irix6*)
    # Find out which ABI we are using.
!   echo '#line 5698 "configure"' > conftest.$ac_ext
    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
    (eval $ac_compile) 2>&5
    ac_status=$?
--- 5697,5703 ----
    ;;
  *-*-irix6*)
    # Find out which ABI we are using.
!   echo '#line 5700 "configure"' > conftest.$ac_ext
    if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
    (eval $ac_compile) 2>&5
    ac_status=$?
*************** else
*** 7157,7167 ****
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:7160: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>conftest.err)
     ac_status=$?
     cat conftest.err >&5
!    echo "$as_me:7164: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
--- 7159,7169 ----
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:7162: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>conftest.err)
     ac_status=$?
     cat conftest.err >&5
!    echo "$as_me:7166: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
*************** else
*** 7479,7489 ****
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:7482: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>conftest.err)
     ac_status=$?
     cat conftest.err >&5
!    echo "$as_me:7486: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
--- 7481,7491 ----
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:7484: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>conftest.err)
     ac_status=$?
     cat conftest.err >&5
!    echo "$as_me:7488: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
*************** else
*** 7584,7594 ****
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:7587: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
!    echo "$as_me:7591: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
--- 7586,7596 ----
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:7589: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
!    echo "$as_me:7593: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
*************** else
*** 7639,7649 ****
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:7642: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
!    echo "$as_me:7646: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
--- 7641,7651 ----
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:7644: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
!    echo "$as_me:7648: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
*************** else
*** 10491,10497 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 10494 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 10493,10499 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 10496 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 10591,10597 ****
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 10594 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
--- 10593,10599 ----
    lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
    lt_status=$lt_dlunknown
    cat > conftest.$ac_ext <<_LT_EOF
! #line 10596 "configure"
  #include "confdefs.h"
  
  #if HAVE_DLFCN_H
*************** else
*** 12629,12639 ****
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:12632: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>conftest.err)
     ac_status=$?
     cat conftest.err >&5
!    echo "$as_me:12636: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
--- 12631,12641 ----
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:12634: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>conftest.err)
     ac_status=$?
     cat conftest.err >&5
!    echo "$as_me:12638: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s "$ac_outfile"; then
       # The compiler can only warn and ignore the option if not recognized
       # So say no if there are warnings other than the usual output.
*************** else
*** 12728,12738 ****
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:12731: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
!    echo "$as_me:12735: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
--- 12730,12740 ----
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:12733: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
!    echo "$as_me:12737: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
*************** else
*** 12780,12790 ****
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:12783: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
!    echo "$as_me:12787: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
--- 12782,12792 ----
     -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
     -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
     -e 's:$: $lt_compiler_flag:'`
!    (eval echo "\"\$as_me:12785: $lt_compile\"" >&5)
     (eval "$lt_compile" 2>out/conftest.err)
     ac_status=$?
     cat out/conftest.err >&5
!    echo "$as_me:12789: \$? = $ac_status" >&5
     if (exit $ac_status) && test -s out/conftest2.$ac_objext
     then
       # The compiler can only warn and ignore the option if not recognized
*************** fi;
*** 13829,13835 ****
      #
      # Fake what AC_TRY_COMPILE does.  XXX Look at redoing this new-style.
      cat > conftest.$ac_ext << EOF
! #line 13832 "configure"
  struct S { ~S(); };
  void bar();
  void foo()
--- 13831,13837 ----
      #
      # Fake what AC_TRY_COMPILE does.  XXX Look at redoing this new-style.
      cat > conftest.$ac_ext << EOF
! #line 13834 "configure"
  struct S { ~S(); };
  void bar();
  void foo()
*************** ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
*** 17014,17020 ****
  
    # Fake what AC_TRY_COMPILE does.  XXX Look at redoing this new-style.
      cat > conftest.$ac_ext << EOF
! #line 17017 "configure"
  int main()
  {
    // NB: _Atomic_word not necessarily int.
--- 17016,17022 ----
  
    # Fake what AC_TRY_COMPILE does.  XXX Look at redoing this new-style.
      cat > conftest.$ac_ext << EOF
! #line 17019 "configure"
  int main()
  {
    // NB: _Atomic_word not necessarily int.
diff -Nrcpad gcc-4.3.1/libstdc++-v3/configure.ac gcc-4.3.2/libstdc++-v3/configure.ac
*** gcc-4.3.1/libstdc++-v3/configure.ac	Fri Apr 25 16:52:57 2008
--- gcc-4.3.2/libstdc++-v3/configure.ac	Mon Jul  7 19:49:54 2008
*************** AH_TEMPLATE(VERSION, [Version number of 
*** 82,88 ****
  # up critical shell variables.
  GLIBCXX_CONFIGURE
  
! AC_LIBTOOL_DLOPEN
  AM_PROG_LIBTOOL
  AC_SUBST(enable_shared)
  AC_SUBST(enable_static)
--- 82,90 ----
  # up critical shell variables.
  GLIBCXX_CONFIGURE
  
! if test "x${with_newlib}" != "xyes"; then
!   AC_LIBTOOL_DLOPEN
! fi
  AM_PROG_LIBTOOL
  AC_SUBST(enable_shared)
  AC_SUBST(enable_static)
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/Makefile.am gcc-4.3.2/libstdc++-v3/include/Makefile.am
*** gcc-4.3.1/libstdc++-v3/include/Makefile.am	Mon Apr 28 21:38:19 2008
--- gcc-4.3.2/libstdc++-v3/include/Makefile.am	Sun Jun 15 12:50:59 2008
*************** backward_headers = \
*** 151,157 ****
  	${backward_srcdir}/hash_set \
  	${backward_srcdir}/hash_fun.h \
  	${backward_srcdir}/hashtable.h \
! 	${backward_srcdir}/strstream 
  
  pb_srcdir = ${glibcxx_srcdir}/include/ext/pb_ds
  pb_builddir = ./ext/pb_ds
--- 151,157 ----
  	${backward_srcdir}/hash_set \
  	${backward_srcdir}/hash_fun.h \
  	${backward_srcdir}/hashtable.h \
! 	${backward_srcdir}/strstream
  
  pb_srcdir = ${glibcxx_srcdir}/include/ext/pb_ds
  pb_builddir = ./ext/pb_ds
*************** pb_subdirs = \
*** 183,189 ****
  	${pb_builddir}/detail/list_update_policy
  
  # The ability for make and the underlying host to deal with this
! # unweildy list as one entire entity is not a sure thing, and may
  # cause build errors. Thus, split one list into many smaller
  # mini-lists, with the maximum size per mini-list of no more than 42.
  
--- 183,189 ----
  	${pb_builddir}/detail/list_update_policy
  
  # The ability for make and the underlying host to deal with this
! # unwieldy list as one entire entity is not a sure thing, and may
  # cause build errors. Thus, split one list into many smaller
  # mini-lists, with the maximum size per mini-list of no more than 42.
  
*************** pb_headers1 = \
*** 228,234 ****
  	${pb_srcdir}/detail/binomial_heap_/debug_fn_imps.hpp \
  	${pb_srcdir}/detail/bin_search_tree_/bin_search_tree_.hpp \
  	${pb_srcdir}/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp \
! 	${pb_srcdir}/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp 
  
  pb_headers2 = \
  	${pb_srcdir}/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp \
--- 228,234 ----
  	${pb_srcdir}/detail/binomial_heap_/debug_fn_imps.hpp \
  	${pb_srcdir}/detail/bin_search_tree_/bin_search_tree_.hpp \
  	${pb_srcdir}/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp \
! 	${pb_srcdir}/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
  
  pb_headers2 = \
  	${pb_srcdir}/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp \
*************** pb_headers2 = \
*** 270,276 ****
  	${pb_srcdir}/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp \
  	${pb_srcdir}/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp \
  	${pb_srcdir}/detail/cc_hash_table_map_/size_fn_imps.hpp \
! 	${pb_srcdir}/detail/cc_hash_table_map_/standard_policies.hpp 
  
  pb_headers3 = \
  	${pb_srcdir}/detail/cc_hash_table_map_/trace_fn_imps.hpp \
--- 270,276 ----
  	${pb_srcdir}/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp \
  	${pb_srcdir}/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp \
  	${pb_srcdir}/detail/cc_hash_table_map_/size_fn_imps.hpp \
! 	${pb_srcdir}/detail/cc_hash_table_map_/standard_policies.hpp
  
  pb_headers3 = \
  	${pb_srcdir}/detail/cc_hash_table_map_/trace_fn_imps.hpp \
*************** pb_headers3 = \
*** 311,317 ****
  	${pb_srcdir}/detail/hash_fn/probe_fn_base.hpp \
  	${pb_srcdir}/detail/hash_fn/quadratic_probe_fn_imp.hpp \
  	${pb_srcdir}/detail/hash_fn/ranged_hash_fn.hpp \
! 	${pb_srcdir}/detail/hash_fn/ranged_probe_fn.hpp 
  
  pb_headers4 = \
  	${pb_srcdir}/detail/hash_fn/sample_probe_fn.hpp \
--- 311,317 ----
  	${pb_srcdir}/detail/hash_fn/probe_fn_base.hpp \
  	${pb_srcdir}/detail/hash_fn/quadratic_probe_fn_imp.hpp \
  	${pb_srcdir}/detail/hash_fn/ranged_hash_fn.hpp \
! 	${pb_srcdir}/detail/hash_fn/ranged_probe_fn.hpp
  
  pb_headers4 = \
  	${pb_srcdir}/detail/hash_fn/sample_probe_fn.hpp \
*************** pb_headers4 = \
*** 354,360 ****
  	${pb_srcdir}/detail/ov_tree_map_/insert_fn_imps.hpp \
  	${pb_srcdir}/detail/ov_tree_map_/iterators_fn_imps.hpp \
  	${pb_srcdir}/detail/ov_tree_map_/node_iterators.hpp \
! 	${pb_srcdir}/detail/ov_tree_map_/ov_tree_map_.hpp 
  
  pb_headers5 = \
  	${pb_srcdir}/detail/ov_tree_map_/policy_access_fn_imps.hpp \
--- 354,360 ----
  	${pb_srcdir}/detail/ov_tree_map_/insert_fn_imps.hpp \
  	${pb_srcdir}/detail/ov_tree_map_/iterators_fn_imps.hpp \
  	${pb_srcdir}/detail/ov_tree_map_/node_iterators.hpp \
! 	${pb_srcdir}/detail/ov_tree_map_/ov_tree_map_.hpp
  
  pb_headers5 = \
  	${pb_srcdir}/detail/ov_tree_map_/policy_access_fn_imps.hpp \
*************** pb_headers5 = \
*** 396,402 ****
  	${pb_srcdir}/detail/pat_trie_/update_fn_imps.hpp \
  	${pb_srcdir}/detail/priority_queue_base_dispatch.hpp \
  	${pb_srcdir}/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp \
! 	${pb_srcdir}/detail/rb_tree_map_/debug_fn_imps.hpp 
  
  pb_headers6 = \
  	${pb_srcdir}/detail/rb_tree_map_/erase_fn_imps.hpp \
--- 396,402 ----
  	${pb_srcdir}/detail/pat_trie_/update_fn_imps.hpp \
  	${pb_srcdir}/detail/priority_queue_base_dispatch.hpp \
  	${pb_srcdir}/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp \
! 	${pb_srcdir}/detail/rb_tree_map_/debug_fn_imps.hpp
  
  pb_headers6 = \
  	${pb_srcdir}/detail/rb_tree_map_/erase_fn_imps.hpp \
*************** pb_headers6 = \
*** 438,444 ****
  	${pb_srcdir}/detail/standard_policies.hpp \
  	${pb_srcdir}/detail/thin_heap_/constructors_destructor_fn_imps.hpp \
  	${pb_srcdir}/detail/thin_heap_/debug_fn_imps.hpp \
! 	${pb_srcdir}/detail/thin_heap_/erase_fn_imps.hpp 
  
  pb_headers7 = \
  	${pb_srcdir}/detail/thin_heap_/find_fn_imps.hpp \
--- 438,444 ----
  	${pb_srcdir}/detail/standard_policies.hpp \
  	${pb_srcdir}/detail/thin_heap_/constructors_destructor_fn_imps.hpp \
  	${pb_srcdir}/detail/thin_heap_/debug_fn_imps.hpp \
! 	${pb_srcdir}/detail/thin_heap_/erase_fn_imps.hpp
  
  pb_headers7 = \
  	${pb_srcdir}/detail/thin_heap_/find_fn_imps.hpp \
*************** pb_headers7 = \
*** 464,474 ****
  	${pb_srcdir}/detail/unordered_iterator/const_iterator.hpp \
  	${pb_srcdir}/detail/unordered_iterator/const_point_iterator.hpp \
  	${pb_srcdir}/detail/unordered_iterator/iterator.hpp \
! 	${pb_srcdir}/detail/unordered_iterator/point_iterator.hpp 
  
  
  ext_srcdir = ${glibcxx_srcdir}/include/ext
! ext_builddir = ./ext 
  ext_headers = \
  	${ext_srcdir}/algorithm \
  	${ext_srcdir}/atomicity.h \
--- 464,474 ----
  	${pb_srcdir}/detail/unordered_iterator/const_iterator.hpp \
  	${pb_srcdir}/detail/unordered_iterator/const_point_iterator.hpp \
  	${pb_srcdir}/detail/unordered_iterator/iterator.hpp \
! 	${pb_srcdir}/detail/unordered_iterator/point_iterator.hpp
  
  
  ext_srcdir = ${glibcxx_srcdir}/include/ext
! ext_builddir = ./ext
  ext_headers = \
  	${ext_srcdir}/algorithm \
  	${ext_srcdir}/atomicity.h \
*************** c_compatibility_srcdir = ${glibcxx_srcdi
*** 634,647 ****
  c_compatibility_builddir = .
  
  if GLIBCXX_C_HEADERS_C_STD
! c_compatibility_headers = 
  endif
  
  if GLIBCXX_C_HEADERS_C_GLOBAL
  c_compatibility_headers = \
  	${c_compatibility_srcdir}/complex.h \
  	${c_compatibility_srcdir}/fenv.h \
! 	${c_compatibility_srcdir}/tgmath.h 
  endif
  
  if GLIBCXX_C_HEADERS_C
--- 634,647 ----
  c_compatibility_builddir = .
  
  if GLIBCXX_C_HEADERS_C_STD
! c_compatibility_headers =
  endif
  
  if GLIBCXX_C_HEADERS_C_GLOBAL
  c_compatibility_headers = \
  	${c_compatibility_srcdir}/complex.h \
  	${c_compatibility_srcdir}/fenv.h \
! 	${c_compatibility_srcdir}/tgmath.h
  endif
  
  if GLIBCXX_C_HEADERS_C
*************** debug_headers = \
*** 703,711 ****
  parallel_srcdir = ${glibcxx_srcdir}/include/parallel
  parallel_builddir = ./parallel
  parallel_headers = \
-         ${parallel_srcdir}/algorithm \
-         ${parallel_srcdir}/algobase.h \
          ${parallel_srcdir}/algo.h \
          ${parallel_srcdir}/algorithm \
          ${parallel_srcdir}/algorithmfwd.h \
          ${parallel_srcdir}/balanced_quicksort.h \
--- 703,710 ----
  parallel_srcdir = ${glibcxx_srcdir}/include/parallel
  parallel_builddir = ./parallel
  parallel_headers = \
          ${parallel_srcdir}/algo.h \
+         ${parallel_srcdir}/algobase.h \
          ${parallel_srcdir}/algorithm \
          ${parallel_srcdir}/algorithmfwd.h \
          ${parallel_srcdir}/balanced_quicksort.h \
*************** parallel_headers = \
*** 731,738 ****
          ${parallel_srcdir}/numericfwd.h \
          ${parallel_srcdir}/omp_loop.h \
          ${parallel_srcdir}/omp_loop_static.h \
-         ${parallel_srcdir}/parallel.h \
          ${parallel_srcdir}/par_loop.h \
          ${parallel_srcdir}/partial_sum.h \
          ${parallel_srcdir}/partition.h \
          ${parallel_srcdir}/queue.h \
--- 730,737 ----
          ${parallel_srcdir}/numericfwd.h \
          ${parallel_srcdir}/omp_loop.h \
          ${parallel_srcdir}/omp_loop_static.h \
          ${parallel_srcdir}/par_loop.h \
+         ${parallel_srcdir}/parallel.h \
          ${parallel_srcdir}/partial_sum.h \
          ${parallel_srcdir}/partition.h \
          ${parallel_srcdir}/queue.h \
*************** parallel_headers = \
*** 746,752 ****
          ${parallel_srcdir}/tags.h \
          ${parallel_srcdir}/types.h \
          ${parallel_srcdir}/unique_copy.h \
!         ${parallel_srcdir}/workstealing.h 
  
  
  # Some of the different "C" header models need extra files.
--- 745,751 ----
          ${parallel_srcdir}/tags.h \
          ${parallel_srcdir}/types.h \
          ${parallel_srcdir}/unique_copy.h \
!         ${parallel_srcdir}/workstealing.h
  
  
  # Some of the different "C" header models need extra files.
*************** host_headers = \
*** 777,783 ****
  	${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h \
  	${glibcxx_srcdir}/include/precompiled/stdc++.h \
  	${glibcxx_srcdir}/include/precompiled/stdtr1c++.h \
! 	${glibcxx_srcdir}/include/precompiled/extc++.h 
  
  # Non-installed host_header files.
  COMPATIBILITY_H = config/abi/compatibility.h
--- 776,782 ----
  	${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h \
  	${glibcxx_srcdir}/include/precompiled/stdc++.h \
  	${glibcxx_srcdir}/include/precompiled/stdtr1c++.h \
! 	${glibcxx_srcdir}/include/precompiled/extc++.h
  
  # Non-installed host_header files.
  COMPATIBILITY_H = config/abi/compatibility.h
*************** host_headers_extra = \
*** 793,799 ****
  	${host_builddir}/c++io.h \
  	${host_builddir}/c++locale.h \
  	${host_builddir}/messages_members.h \
! 	${host_builddir}/time_members.h 
  
  thread_host_headers = \
  	${host_builddir}/gthr.h \
--- 792,798 ----
  	${host_builddir}/c++io.h \
  	${host_builddir}/c++locale.h \
  	${host_builddir}/messages_members.h \
! 	${host_builddir}/time_members.h
  
  thread_host_headers = \
  	${host_builddir}/gthr.h \
*************** stamp-ext: ${ext_headers}
*** 900,906 ****
  stamp-pb:
  	@if [ ! -d "${pb_builddir}" ]; then \
  	    mkdir -p ${pb_subdirs} ;\
! 	fi 
  	@if [ ! -f stamp-pb ]; then \
  	    cd ${pb_builddir} && for h in ${pb_headers1}; do \
  		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
--- 899,905 ----
  stamp-pb:
  	@if [ ! -d "${pb_builddir}" ]; then \
  	    mkdir -p ${pb_subdirs} ;\
! 	fi
  	@if [ ! -f stamp-pb ]; then \
  	    cd ${pb_builddir} && for h in ${pb_headers1}; do \
  		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
*************** ${pch3_output}: ${pch3_source} ${pch2_ou
*** 1102,1108 ****
  # the rest are taken from the original source tree.
  
  if GLIBCXX_HOSTED
! install-data-local: install-headers 
  else
  install-data-local: install-freestanding-headers
  endif
--- 1101,1107 ----
  # the rest are taken from the original source tree.
  
  if GLIBCXX_HOSTED
! install-data-local: install-headers
  else
  install-data-local: install-freestanding-headers
  endif
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/Makefile.in gcc-4.3.2/libstdc++-v3/include/Makefile.in
*** gcc-4.3.1/libstdc++-v3/include/Makefile.in	Mon Apr 28 21:38:19 2008
--- gcc-4.3.2/libstdc++-v3/include/Makefile.in	Sun Jun 15 12:50:59 2008
*************** backward_headers = \
*** 401,407 ****
  	${backward_srcdir}/hash_set \
  	${backward_srcdir}/hash_fun.h \
  	${backward_srcdir}/hashtable.h \
! 	${backward_srcdir}/strstream 
  
  pb_srcdir = ${glibcxx_srcdir}/include/ext/pb_ds
  pb_builddir = ./ext/pb_ds
--- 401,407 ----
  	${backward_srcdir}/hash_set \
  	${backward_srcdir}/hash_fun.h \
  	${backward_srcdir}/hashtable.h \
! 	${backward_srcdir}/strstream
  
  pb_srcdir = ${glibcxx_srcdir}/include/ext/pb_ds
  pb_builddir = ./ext/pb_ds
*************** pb_subdirs = \
*** 433,439 ****
  
  
  # The ability for make and the underlying host to deal with this
! # unweildy list as one entire entity is not a sure thing, and may
  # cause build errors. Thus, split one list into many smaller
  # mini-lists, with the maximum size per mini-list of no more than 42.
  pb_headers1 = \
--- 433,439 ----
  
  
  # The ability for make and the underlying host to deal with this
! # unwieldy list as one entire entity is not a sure thing, and may
  # cause build errors. Thus, split one list into many smaller
  # mini-lists, with the maximum size per mini-list of no more than 42.
  pb_headers1 = \
*************** pb_headers1 = \
*** 477,483 ****
  	${pb_srcdir}/detail/binomial_heap_/debug_fn_imps.hpp \
  	${pb_srcdir}/detail/bin_search_tree_/bin_search_tree_.hpp \
  	${pb_srcdir}/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp \
! 	${pb_srcdir}/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp 
  
  pb_headers2 = \
  	${pb_srcdir}/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp \
--- 477,483 ----
  	${pb_srcdir}/detail/binomial_heap_/debug_fn_imps.hpp \
  	${pb_srcdir}/detail/bin_search_tree_/bin_search_tree_.hpp \
  	${pb_srcdir}/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp \
! 	${pb_srcdir}/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
  
  pb_headers2 = \
  	${pb_srcdir}/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp \
*************** pb_headers2 = \
*** 519,525 ****
  	${pb_srcdir}/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp \
  	${pb_srcdir}/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp \
  	${pb_srcdir}/detail/cc_hash_table_map_/size_fn_imps.hpp \
! 	${pb_srcdir}/detail/cc_hash_table_map_/standard_policies.hpp 
  
  pb_headers3 = \
  	${pb_srcdir}/detail/cc_hash_table_map_/trace_fn_imps.hpp \
--- 519,525 ----
  	${pb_srcdir}/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp \
  	${pb_srcdir}/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp \
  	${pb_srcdir}/detail/cc_hash_table_map_/size_fn_imps.hpp \
! 	${pb_srcdir}/detail/cc_hash_table_map_/standard_policies.hpp
  
  pb_headers3 = \
  	${pb_srcdir}/detail/cc_hash_table_map_/trace_fn_imps.hpp \
*************** pb_headers3 = \
*** 560,566 ****
  	${pb_srcdir}/detail/hash_fn/probe_fn_base.hpp \
  	${pb_srcdir}/detail/hash_fn/quadratic_probe_fn_imp.hpp \
  	${pb_srcdir}/detail/hash_fn/ranged_hash_fn.hpp \
! 	${pb_srcdir}/detail/hash_fn/ranged_probe_fn.hpp 
  
  pb_headers4 = \
  	${pb_srcdir}/detail/hash_fn/sample_probe_fn.hpp \
--- 560,566 ----
  	${pb_srcdir}/detail/hash_fn/probe_fn_base.hpp \
  	${pb_srcdir}/detail/hash_fn/quadratic_probe_fn_imp.hpp \
  	${pb_srcdir}/detail/hash_fn/ranged_hash_fn.hpp \
! 	${pb_srcdir}/detail/hash_fn/ranged_probe_fn.hpp
  
  pb_headers4 = \
  	${pb_srcdir}/detail/hash_fn/sample_probe_fn.hpp \
*************** pb_headers4 = \
*** 603,609 ****
  	${pb_srcdir}/detail/ov_tree_map_/insert_fn_imps.hpp \
  	${pb_srcdir}/detail/ov_tree_map_/iterators_fn_imps.hpp \
  	${pb_srcdir}/detail/ov_tree_map_/node_iterators.hpp \
! 	${pb_srcdir}/detail/ov_tree_map_/ov_tree_map_.hpp 
  
  pb_headers5 = \
  	${pb_srcdir}/detail/ov_tree_map_/policy_access_fn_imps.hpp \
--- 603,609 ----
  	${pb_srcdir}/detail/ov_tree_map_/insert_fn_imps.hpp \
  	${pb_srcdir}/detail/ov_tree_map_/iterators_fn_imps.hpp \
  	${pb_srcdir}/detail/ov_tree_map_/node_iterators.hpp \
! 	${pb_srcdir}/detail/ov_tree_map_/ov_tree_map_.hpp
  
  pb_headers5 = \
  	${pb_srcdir}/detail/ov_tree_map_/policy_access_fn_imps.hpp \
*************** pb_headers5 = \
*** 645,651 ****
  	${pb_srcdir}/detail/pat_trie_/update_fn_imps.hpp \
  	${pb_srcdir}/detail/priority_queue_base_dispatch.hpp \
  	${pb_srcdir}/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp \
! 	${pb_srcdir}/detail/rb_tree_map_/debug_fn_imps.hpp 
  
  pb_headers6 = \
  	${pb_srcdir}/detail/rb_tree_map_/erase_fn_imps.hpp \
--- 645,651 ----
  	${pb_srcdir}/detail/pat_trie_/update_fn_imps.hpp \
  	${pb_srcdir}/detail/priority_queue_base_dispatch.hpp \
  	${pb_srcdir}/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp \
! 	${pb_srcdir}/detail/rb_tree_map_/debug_fn_imps.hpp
  
  pb_headers6 = \
  	${pb_srcdir}/detail/rb_tree_map_/erase_fn_imps.hpp \
*************** pb_headers6 = \
*** 687,693 ****
  	${pb_srcdir}/detail/standard_policies.hpp \
  	${pb_srcdir}/detail/thin_heap_/constructors_destructor_fn_imps.hpp \
  	${pb_srcdir}/detail/thin_heap_/debug_fn_imps.hpp \
! 	${pb_srcdir}/detail/thin_heap_/erase_fn_imps.hpp 
  
  pb_headers7 = \
  	${pb_srcdir}/detail/thin_heap_/find_fn_imps.hpp \
--- 687,693 ----
  	${pb_srcdir}/detail/standard_policies.hpp \
  	${pb_srcdir}/detail/thin_heap_/constructors_destructor_fn_imps.hpp \
  	${pb_srcdir}/detail/thin_heap_/debug_fn_imps.hpp \
! 	${pb_srcdir}/detail/thin_heap_/erase_fn_imps.hpp
  
  pb_headers7 = \
  	${pb_srcdir}/detail/thin_heap_/find_fn_imps.hpp \
*************** pb_headers7 = \
*** 713,722 ****
  	${pb_srcdir}/detail/unordered_iterator/const_iterator.hpp \
  	${pb_srcdir}/detail/unordered_iterator/const_point_iterator.hpp \
  	${pb_srcdir}/detail/unordered_iterator/iterator.hpp \
! 	${pb_srcdir}/detail/unordered_iterator/point_iterator.hpp 
  
  ext_srcdir = ${glibcxx_srcdir}/include/ext
! ext_builddir = ./ext 
  ext_headers = \
  	${ext_srcdir}/algorithm \
  	${ext_srcdir}/atomicity.h \
--- 713,722 ----
  	${pb_srcdir}/detail/unordered_iterator/const_iterator.hpp \
  	${pb_srcdir}/detail/unordered_iterator/const_point_iterator.hpp \
  	${pb_srcdir}/detail/unordered_iterator/iterator.hpp \
! 	${pb_srcdir}/detail/unordered_iterator/point_iterator.hpp
  
  ext_srcdir = ${glibcxx_srcdir}/include/ext
! ext_builddir = ./ext
  ext_headers = \
  	${ext_srcdir}/algorithm \
  	${ext_srcdir}/atomicity.h \
*************** c_compatibility_builddir = .
*** 883,889 ****
  @GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@c_compatibility_headers = \
  @GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/complex.h \
  @GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/fenv.h \
! @GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/tgmath.h 
  
  @GLIBCXX_C_HEADERS_C_STD_TRUE@c_compatibility_headers = 
  @GLIBCXX_C_HEADERS_C_TRUE@c_compatibility_headers = \
--- 883,889 ----
  @GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@c_compatibility_headers = \
  @GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/complex.h \
  @GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/fenv.h \
! @GLIBCXX_C_HEADERS_C_GLOBAL_TRUE@	${c_compatibility_srcdir}/tgmath.h
  
  @GLIBCXX_C_HEADERS_C_STD_TRUE@c_compatibility_headers = 
  @GLIBCXX_C_HEADERS_C_TRUE@c_compatibility_headers = \
*************** debug_headers = \
*** 945,953 ****
  parallel_srcdir = ${glibcxx_srcdir}/include/parallel
  parallel_builddir = ./parallel
  parallel_headers = \
-         ${parallel_srcdir}/algorithm \
-         ${parallel_srcdir}/algobase.h \
          ${parallel_srcdir}/algo.h \
          ${parallel_srcdir}/algorithm \
          ${parallel_srcdir}/algorithmfwd.h \
          ${parallel_srcdir}/balanced_quicksort.h \
--- 945,952 ----
  parallel_srcdir = ${glibcxx_srcdir}/include/parallel
  parallel_builddir = ./parallel
  parallel_headers = \
          ${parallel_srcdir}/algo.h \
+         ${parallel_srcdir}/algobase.h \
          ${parallel_srcdir}/algorithm \
          ${parallel_srcdir}/algorithmfwd.h \
          ${parallel_srcdir}/balanced_quicksort.h \
*************** parallel_headers = \
*** 973,980 ****
          ${parallel_srcdir}/numericfwd.h \
          ${parallel_srcdir}/omp_loop.h \
          ${parallel_srcdir}/omp_loop_static.h \
-         ${parallel_srcdir}/parallel.h \
          ${parallel_srcdir}/par_loop.h \
          ${parallel_srcdir}/partial_sum.h \
          ${parallel_srcdir}/partition.h \
          ${parallel_srcdir}/queue.h \
--- 972,979 ----
          ${parallel_srcdir}/numericfwd.h \
          ${parallel_srcdir}/omp_loop.h \
          ${parallel_srcdir}/omp_loop_static.h \
          ${parallel_srcdir}/par_loop.h \
+         ${parallel_srcdir}/parallel.h \
          ${parallel_srcdir}/partial_sum.h \
          ${parallel_srcdir}/partition.h \
          ${parallel_srcdir}/queue.h \
*************** parallel_headers = \
*** 988,994 ****
          ${parallel_srcdir}/tags.h \
          ${parallel_srcdir}/types.h \
          ${parallel_srcdir}/unique_copy.h \
!         ${parallel_srcdir}/workstealing.h 
  
  @GLIBCXX_C_HEADERS_EXTRA_FALSE@c_base_headers_extra = 
  
--- 987,993 ----
          ${parallel_srcdir}/tags.h \
          ${parallel_srcdir}/types.h \
          ${parallel_srcdir}/unique_copy.h \
!         ${parallel_srcdir}/workstealing.h
  
  @GLIBCXX_C_HEADERS_EXTRA_FALSE@c_base_headers_extra = 
  
*************** host_headers = \
*** 1011,1017 ****
  	${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h \
  	${glibcxx_srcdir}/include/precompiled/stdc++.h \
  	${glibcxx_srcdir}/include/precompiled/stdtr1c++.h \
! 	${glibcxx_srcdir}/include/precompiled/extc++.h 
  
  
  # Non-installed host_header files.
--- 1010,1016 ----
  	${glibcxx_srcdir}/$(CPU_DEFINES_SRCDIR)/cpu_defines.h \
  	${glibcxx_srcdir}/include/precompiled/stdc++.h \
  	${glibcxx_srcdir}/include/precompiled/stdtr1c++.h \
! 	${glibcxx_srcdir}/include/precompiled/extc++.h
  
  
  # Non-installed host_header files.
*************** host_headers_extra = \
*** 1029,1035 ****
  	${host_builddir}/c++io.h \
  	${host_builddir}/c++locale.h \
  	${host_builddir}/messages_members.h \
! 	${host_builddir}/time_members.h 
  
  thread_host_headers = \
  	${host_builddir}/gthr.h \
--- 1028,1034 ----
  	${host_builddir}/c++io.h \
  	${host_builddir}/c++locale.h \
  	${host_builddir}/messages_members.h \
! 	${host_builddir}/time_members.h
  
  thread_host_headers = \
  	${host_builddir}/gthr.h \
*************** stamp-ext: ${ext_headers}
*** 1300,1306 ****
  stamp-pb:
  	@if [ ! -d "${pb_builddir}" ]; then \
  	    mkdir -p ${pb_subdirs} ;\
! 	fi 
  	@if [ ! -f stamp-pb ]; then \
  	    cd ${pb_builddir} && for h in ${pb_headers1}; do \
  		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
--- 1299,1305 ----
  stamp-pb:
  	@if [ ! -d "${pb_builddir}" ]; then \
  	    mkdir -p ${pb_subdirs} ;\
! 	fi
  	@if [ ! -f stamp-pb ]; then \
  	    cd ${pb_builddir} && for h in ${pb_headers1}; do \
  		build_name=`echo $$h | sed -e "s|${pb_srcdir}|.|g"` ;\
*************** ${pch3_output}: ${pch3_source} ${pch2_ou
*** 1492,1498 ****
  # host_headers_extra are taken out of the build tree staging area;
  # the rest are taken from the original source tree.
  
! @GLIBCXX_HOSTED_TRUE@install-data-local: install-headers 
  @GLIBCXX_HOSTED_FALSE@install-data-local: install-freestanding-headers
  
  # This is a subset of the full install-headers rule.  We only need <cstddef>,
--- 1491,1497 ----
  # host_headers_extra are taken out of the build tree staging area;
  # the rest are taken from the original source tree.
  
! @GLIBCXX_HOSTED_TRUE@install-data-local: install-headers
  @GLIBCXX_HOSTED_FALSE@install-data-local: install-freestanding-headers
  
  # This is a subset of the full install-headers rule.  We only need <cstddef>,
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/backward/backward_warning.h gcc-4.3.2/libstdc++-v3/include/backward/backward_warning.h
*** gcc-4.3.1/libstdc++-v3/include/backward/backward_warning.h	Tue Dec 11 21:48:16 2007
--- gcc-4.3.2/libstdc++-v3/include/backward/backward_warning.h	Mon Jun 30 10:49:10 2008
***************
*** 1,4 ****
! // Copyright (C) 2001, 2007 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
--- 1,5 ----
! // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
! // 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
***************
*** 46,53 ****
    <sstream>, basic_stringstream		<strstream>, strstream
    <unordered_set>, unordered_set     	<ext/hash_set>, hash_set
    <unordered_set>, unordered_multiset	<ext/hash_set>, hash_multiset
!   <unordered_map>, unordered_map	<ext/hash_set>, hash_map
!   <unordered_map>, unordered_multimap	<ext/hash_set>, hash_multimap
    <functional>, bind			<functional>, binder1st
    <functional>, bind			<functional>, binder2nd
    <functional>, bind			<functional>, bind1st
--- 47,54 ----
    <sstream>, basic_stringstream		<strstream>, strstream
    <unordered_set>, unordered_set     	<ext/hash_set>, hash_set
    <unordered_set>, unordered_multiset	<ext/hash_set>, hash_multiset
!   <unordered_map>, unordered_map	<ext/hash_map>, hash_map
!   <unordered_map>, unordered_multimap	<ext/hash_map>, hash_multimap
    <functional>, bind			<functional>, binder1st
    <functional>, bind			<functional>, binder2nd
    <functional>, bind			<functional>, bind1st
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/bits/stl_algo.h gcc-4.3.2/libstdc++-v3/include/bits/stl_algo.h
*** gcc-4.3.1/libstdc++-v3/include/bits/stl_algo.h	Thu Jan 31 18:44:55 2008
--- gcc-4.3.2/libstdc++-v3/include/bits/stl_algo.h	Tue Jun 24 17:32:28 2008
*************** _GLIBCXX_BEGIN_NAMESPACE(std)
*** 712,718 ****
     *  @return   An iterator designating the end of the resulting sequence.
     *
     *  Copies each element in the range @p [first,last) for which
!    *  @p pred returns true to the range beginning at @p result.
     *
     *  remove_copy_if() is stable, so the relative order of elements that are
     *  copied is unchanged.
--- 712,718 ----
     *  @return   An iterator designating the end of the resulting sequence.
     *
     *  Copies each element in the range @p [first,last) for which
!    *  @p pred returns false to the range beginning at @p result.
     *
     *  remove_copy_if() is stable, so the relative order of elements that are
     *  copied is unchanged.
*************** _GLIBCXX_BEGIN_NAMESPACE(std)
*** 816,822 ****
        _ForwardIterator __result = __first;
        ++__first;
        for(; __first != __last; ++__first)
!         if(!__pred(*__first))
            {
              *__result = _GLIBCXX_MOVE(*__first);
              ++__result;
--- 816,822 ----
        _ForwardIterator __result = __first;
        ++__first;
        for(; __first != __last; ++__first)
!         if(!bool(__pred(*__first)))
            {
              *__result = _GLIBCXX_MOVE(*__first);
              ++__result;
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/bits/stl_pair.h gcc-4.3.2/libstdc++-v3/include/bits/stl_pair.h
*** gcc-4.3.1/libstdc++-v3/include/bits/stl_pair.h	Sun Nov 11 15:56:09 2007
--- gcc-4.3.2/libstdc++-v3/include/bits/stl_pair.h	Tue Aug 12 23:15:23 2008
*************** _GLIBCXX_BEGIN_NAMESPACE(std)
*** 151,157 ****
      operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      { return __x.first == __y.first && __x.second == __y.second; }
  
!   /// <http://gcc.gnu.org/onlinedocs/libstdc++/20_util/howto.html#pairlt>
    template<class _T1, class _T2>
      inline bool
      operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
--- 151,157 ----
      operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
      { return __x.first == __y.first && __x.second == __y.second; }
  
!   /// <http://gcc.gnu.org/onlinedocs/libstdc++/manual/utilities.html>
    template<class _T1, class _T2>
      inline bool
      operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp gcc-4.3.2/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp
*** gcc-4.3.1/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp	Wed Sep 12 23:06:27 2007
--- gcc-4.3.2/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp	Thu Jul 10 00:38:13 2008
***************
*** 1,6 ****
  // -*- C++ -*-
  
! // Copyright (C) 2005, 2006 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
--- 1,6 ----
  // -*- C++ -*-
  
! // Copyright (C) 2005, 2006, 2008 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
***************
*** 47,54 ****
  #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NULL_METADATA_HPP
  #define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NULL_METADATA_HPP
  
- #include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
- 
  namespace __gnu_pbds
  {
    namespace detail
--- 47,52 ----
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/ext/pb_ds/exception.hpp gcc-4.3.2/libstdc++-v3/include/ext/pb_ds/exception.hpp
*** gcc-4.3.1/libstdc++-v3/include/ext/pb_ds/exception.hpp	Wed Sep 12 23:06:27 2007
--- gcc-4.3.2/libstdc++-v3/include/ext/pb_ds/exception.hpp	Tue Jun 24 12:04:24 2008
***************
*** 1,6 ****
  // -*- C++ -*-
  
! // Copyright (C) 2005, 2006, 2007 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
--- 1,6 ----
  // -*- C++ -*-
  
! // Copyright (C) 2005, 2006, 2007, 2008 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
*************** namespace __gnu_pbds
*** 72,106 ****
    struct resize_error : public container_error { };
  
  #if __EXCEPTIONS
!   void
    __throw_container_error(void)
    { throw container_error(); }
  
!   void
    __throw_insert_error(void)
    { throw insert_error(); }
  
!   void
    __throw_join_error(void)
    { throw join_error(); }
  
!   void
    __throw_resize_error(void)
    { throw resize_error(); }
  #else
!   void
    __throw_container_error(void)
    { std::abort(); }
  
!   void
    __throw_insert_error(void)
    { std::abort(); }
  
!   void
    __throw_join_error(void)
    { std::abort(); }
  
!   void
    __throw_resize_error(void)
    { std::abort(); }
  #endif
--- 72,106 ----
    struct resize_error : public container_error { };
  
  #if __EXCEPTIONS
!   inline void
    __throw_container_error(void)
    { throw container_error(); }
  
!   inline void
    __throw_insert_error(void)
    { throw insert_error(); }
  
!   inline void
    __throw_join_error(void)
    { throw join_error(); }
  
!   inline void
    __throw_resize_error(void)
    { throw resize_error(); }
  #else
!   inline void
    __throw_container_error(void)
    { std::abort(); }
  
!   inline void
    __throw_insert_error(void)
    { std::abort(); }
  
!   inline void
    __throw_join_error(void)
    { std::abort(); }
  
!   inline void
    __throw_resize_error(void)
    { std::abort(); }
  #endif
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/ext/rope gcc-4.3.2/libstdc++-v3/include/ext/rope
*** gcc-4.3.1/libstdc++-v3/include/ext/rope	Thu Jan 31 18:44:55 2008
--- gcc-4.3.2/libstdc++-v3/include/ext/rope	Tue Jul 15 10:14:51 2008
***************
*** 1,6 ****
  // SGI's rope class -*- C++ -*-
  
! // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007
  // Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
--- 1,6 ----
  // SGI's rope class -*- C++ -*-
  
! // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
  // Free Software Foundation, Inc.
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
*************** _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
*** 80,85 ****
--- 80,101 ----
    using std::allocator;
    using std::_Destroy;
  
+   // See libstdc++/36832.
+   template<typename _ForwardIterator, typename _Allocator>
+     void
+     _Destroy_const(_ForwardIterator __first,
+ 		   _ForwardIterator __last, _Allocator __alloc)
+     {
+       for (; __first != __last; ++__first)
+ 	__alloc.destroy(&*__first);
+     }
+ 
+   template<typename _ForwardIterator, typename _Tp>
+     inline void
+     _Destroy_const(_ForwardIterator __first,
+ 		   _ForwardIterator __last, allocator<_Tp>)
+     { _Destroy(__first, __last); }
+ 
    // The _S_eos function is used for those functions that
    // convert to/from C-like strings to detect the end of the string.
    
*************** protected:
*** 1941,1951 ****
  	this->_M_tree_ptr = _S_balance(this->_M_tree_ptr);
  	_S_unref(__old);
        }
!       
        void
        copy(_CharT* __buffer) const
        {
! 	_Destroy(__buffer, __buffer + size(), _M_get_allocator());
  	_S_flatten(this->_M_tree_ptr, __buffer);
        }
  
--- 1957,1967 ----
  	this->_M_tree_ptr = _S_balance(this->_M_tree_ptr);
  	_S_unref(__old);
        }
! 
        void
        copy(_CharT* __buffer) const
        {
! 	_Destroy_const(__buffer, __buffer + size(), _M_get_allocator());
  	_S_flatten(this->_M_tree_ptr, __buffer);
        }
  
*************** protected:
*** 1959,1966 ****
        {
  	size_t __size = size();
  	size_t __len = (__pos + __n > __size? __size - __pos : __n);
! 	
! 	_Destroy(__buffer, __buffer + __len, _M_get_allocator());
  	_S_flatten(this->_M_tree_ptr, __pos, __len, __buffer);
  	return __len;
        }
--- 1975,1982 ----
        {
  	size_t __size = size();
  	size_t __len = (__pos + __n > __size? __size - __pos : __n);
! 
! 	_Destroy_const(__buffer, __buffer + __len, _M_get_allocator());
  	_S_flatten(this->_M_tree_ptr, __pos, __len, __buffer);
  	return __len;
        }
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/parallel/balanced_quicksort.h gcc-4.3.2/libstdc++-v3/include/parallel/balanced_quicksort.h
*** gcc-4.3.1/libstdc++-v3/include/parallel/balanced_quicksort.h	Mon Feb 18 00:00:00 2008
--- gcc-4.3.2/libstdc++-v3/include/parallel/balanced_quicksort.h	Thu Jul 10 08:23:42 2008
*************** template<typename RandomAccessIterator, 
*** 122,132 ****
  
      _GLIBCXX_PARALLEL_ASSERT(
             (!comp(*pivot_pos, *begin) && !comp(*(begin + n / 2), *pivot_pos))
!         || (!comp(*pivot_pos, *begin) && !comp(*end, *pivot_pos))
          || (!comp(*pivot_pos, *(begin + n / 2)) && !comp(*begin, *pivot_pos))
!         || (!comp(*pivot_pos, *(begin + n / 2)) && !comp(*end, *pivot_pos))
!         || (!comp(*pivot_pos, *end) && !comp(*begin, *pivot_pos))
!         || (!comp(*pivot_pos, *end) && !comp(*(begin + n / 2), *pivot_pos)));
  #endif
  
      // Swap pivot value to end.
--- 122,132 ----
  
      _GLIBCXX_PARALLEL_ASSERT(
             (!comp(*pivot_pos, *begin) && !comp(*(begin + n / 2), *pivot_pos))
!         || (!comp(*pivot_pos, *begin) && !comp(*(end - 1), *pivot_pos))
          || (!comp(*pivot_pos, *(begin + n / 2)) && !comp(*begin, *pivot_pos))
!         || (!comp(*pivot_pos, *(begin + n / 2)) && !comp(*(end - 1), *pivot_pos))
!         || (!comp(*pivot_pos, *(end - 1)) && !comp(*begin, *pivot_pos))
!         || (!comp(*pivot_pos, *(end - 1)) && !comp(*(begin + n / 2), *pivot_pos)));
  #endif
  
      // Swap pivot value to end.
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/parallel/base.h gcc-4.3.2/libstdc++-v3/include/parallel/base.h
*** gcc-4.3.1/libstdc++-v3/include/parallel/base.h	Wed Mar 26 23:21:44 2008
--- gcc-4.3.2/libstdc++-v3/include/parallel/base.h	Thu Jun 26 10:45:43 2008
*************** struct less<_Tp, _Tp> : public std::bina
*** 287,294 ****
  template<typename _Tp1, typename _Tp2>
    struct plus : public std::binary_function<_Tp1, _Tp2, _Tp1>
    {
!     typedef typeof(*static_cast<_Tp1*>(NULL)
!                     + *static_cast<_Tp2*>(NULL)) result;
  
      result
      operator()(const _Tp1& __x, const _Tp2& __y) const
--- 287,294 ----
  template<typename _Tp1, typename _Tp2>
    struct plus : public std::binary_function<_Tp1, _Tp2, _Tp1>
    {
!     typedef __typeof__(*static_cast<_Tp1*>(NULL)
! 		       + *static_cast<_Tp2*>(NULL)) result;
  
      result
      operator()(const _Tp1& __x, const _Tp2& __y) const
*************** template<typename _Tp1, typename _Tp2>
*** 299,306 ****
  template<typename _Tp>
    struct plus<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, _Tp>
    {
!     typedef typeof(*static_cast<_Tp*>(NULL)
!                     + *static_cast<_Tp*>(NULL)) result;
  
      result
      operator()(const _Tp& __x, const _Tp& __y) const
--- 299,306 ----
  template<typename _Tp>
    struct plus<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, _Tp>
    {
!     typedef __typeof__(*static_cast<_Tp*>(NULL)
! 		       + *static_cast<_Tp*>(NULL)) result;
  
      result
      operator()(const _Tp& __x, const _Tp& __y) const
*************** template<typename _Tp>
*** 312,319 ****
  template<typename _Tp1, typename _Tp2>
    struct multiplies : public std::binary_function<_Tp1, _Tp2, _Tp1>
    {
!     typedef typeof(*static_cast<_Tp1*>(NULL)
!                     * *static_cast<_Tp2*>(NULL)) result;
  
      result
      operator()(const _Tp1& __x, const _Tp2& __y) const
--- 312,319 ----
  template<typename _Tp1, typename _Tp2>
    struct multiplies : public std::binary_function<_Tp1, _Tp2, _Tp1>
    {
!     typedef __typeof__(*static_cast<_Tp1*>(NULL)
! 		       * *static_cast<_Tp2*>(NULL)) result;
  
      result
      operator()(const _Tp1& __x, const _Tp2& __y) const
*************** template<typename _Tp1, typename _Tp2>
*** 324,331 ****
  template<typename _Tp>
    struct multiplies<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, _Tp>
    {
!     typedef typeof(*static_cast<_Tp*>(NULL)
!                     * *static_cast<_Tp*>(NULL)) result;
  
      result
      operator()(const _Tp& __x, const _Tp& __y) const
--- 324,331 ----
  template<typename _Tp>
    struct multiplies<_Tp, _Tp> : public std::binary_function<_Tp, _Tp, _Tp>
    {
!     typedef __typeof__(*static_cast<_Tp*>(NULL)
! 		       * *static_cast<_Tp*>(NULL)) result;
  
      result
      operator()(const _Tp& __x, const _Tp& __y) const
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/parallel/losertree.h gcc-4.3.2/libstdc++-v3/include/parallel/losertree.h
*** gcc-4.3.1/libstdc++-v3/include/parallel/losertree.h	Tue May  6 08:56:35 2008
--- gcc-4.3.2/libstdc++-v3/include/parallel/losertree.h	Tue Aug 12 17:24:47 2008
*************** public:
*** 376,382 ****
    }
  
    ~LoserTreePointerBase()
!   { ::operator delete(losers); }
  
    int get_min_source()
    { return losers[0].source; }
--- 376,382 ----
    }
  
    ~LoserTreePointerBase()
!   { ::operator delete[](losers); }
  
    int get_min_source()
    { return losers[0].source; }
diff -Nrcpad gcc-4.3.1/libstdc++-v3/include/parallel/random_shuffle.h gcc-4.3.2/libstdc++-v3/include/parallel/random_shuffle.h
*** gcc-4.3.1/libstdc++-v3/include/parallel/random_shuffle.h	Thu Jun  5 15:45:10 2008
--- gcc-4.3.2/libstdc++-v3/include/parallel/random_shuffle.h	Wed Jul  9 15:33:14 2008
*************** template<typename RandomAccessIterator, 
*** 491,496 ****
--- 491,499 ----
                                        rng);
            }
  
+         // Copy elements back.
+         std::copy(target, target + n, begin);
+ 
          delete[] dist0;
          delete[] dist1;
          delete[] oracles;
diff -Nrcpad gcc-4.3.1/libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc gcc-4.3.2/libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc
*** gcc-4.3.1/libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc	Wed Aug 17 02:28:44 2005
--- gcc-4.3.2/libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc	Tue Jun 24 16:31:22 2008
***************
*** 1,6 ****
  // { dg-require-namedlocale "" }
  
! // Copyright (C) 2004, 2005 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
--- 1,6 ----
  // { dg-require-namedlocale "" }
  
! // Copyright (C) 2004, 2005, 2006, 2007, 2008 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
*************** int main()
*** 38,45 ****
    long double ld = -1234567890;
    mp.put(oss.rdbuf(), true, oss, ' ', ld); // -EUR  12.345.678,90
    string res = oss.str();
!   
    VERIFY( res == "-EUR  12.345.678,90" );
  
    return 0;
  }
--- 38,49 ----
    long double ld = -1234567890;
    mp.put(oss.rdbuf(), true, oss, ' ', ld); // -EUR  12.345.678,90
    string res = oss.str();
! 
! #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 7)
!   VERIFY( res == "-12.345.678,90 EUR " );
! #else
    VERIFY( res == "-EUR  12.345.678,90" );
+ #endif
  
    return 0;
  }
diff -Nrcpad gcc-4.3.1/libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc gcc-4.3.2/libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc
*** gcc-4.3.1/libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc	Fri Jan  6 02:11:55 2006
--- gcc-4.3.2/libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc	Fri Jul  4 15:40:52 2008
***************
*** 2,8 ****
  
  // 2001-09-17 Benjamin Kosnik  <bkoz@redhat.com>
  
! // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 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
--- 2,9 ----
  
  // 2001-09-17 Benjamin Kosnik  <bkoz@redhat.com>
  
! // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
! // Free Software Foundation
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
*************** void test04()
*** 38,59 ****
  
    // basic construction and sanity check
    locale loc_c = locale::classic();
!   locale loc_fr = locale("fr_FR@euro");
!   VERIFY( loc_fr != loc_c );
  
    // create an ostream-derived object, cache the time_put facet
    const string empty;
    ostringstream oss;
!   oss.imbue(loc_fr);
    const time_put<char>& tim_put = use_facet<time_put<char> >(oss.getloc()); 
    iterator_type os_it04 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'a');
    string result4 = oss.str();
!   VERIFY( result4 == "dim" );
  
!   oss.str(empty); // "%d.%m.%Y"
    iterator_type os_it27 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x');
!   string result27 = oss.str(); // "04.04.1971"
!   VERIFY( result27 == "04.04.1971" );
  
    oss.str(empty); // "%T"
    iterator_type os_it28 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X');
--- 39,60 ----
  
    // basic construction and sanity check
    locale loc_c = locale::classic();
!   locale loc_es = locale("es_ES");
!   VERIFY( loc_es != loc_c );
  
    // create an ostream-derived object, cache the time_put facet
    const string empty;
    ostringstream oss;
!   oss.imbue(loc_es);
    const time_put<char>& tim_put = use_facet<time_put<char> >(oss.getloc()); 
    iterator_type os_it04 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'a');
    string result4 = oss.str();
!   VERIFY( result4 == "dom" );
  
!   oss.str(empty); // "%d/%m/%y"
    iterator_type os_it27 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x');
!   string result27 = oss.str(); // "04/04/71"
!   VERIFY( result27 == "04/04/71" );
  
    oss.str(empty); // "%T"
    iterator_type os_it28 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X');
*************** void test04()
*** 62,69 ****
  
    oss.str(empty);
    iterator_type os_it37 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x', 'E');
!   string result37 = oss.str(); // "04.04.1971"
!   VERIFY( result37 == "04.04.1971" );
  
    oss.str(empty);
    iterator_type os_it38 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X', 'E');
--- 63,70 ----
  
    oss.str(empty);
    iterator_type os_it37 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'x', 'E');
!   string result37 = oss.str(); // "04/04/71"
!   VERIFY( result37 == "04/04/71" );
  
    oss.str(empty);
    iterator_type os_it38 = tim_put.put(oss.rdbuf(), oss, '*', &time1, 'X', 'E');
diff -Nrcpad gcc-4.3.1/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc gcc-4.3.2/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc
*** gcc-4.3.1/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc	Fri Jan  6 02:11:55 2006
--- gcc-4.3.2/libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc	Fri Jul  4 15:40:52 2008
***************
*** 2,8 ****
  
  // 2001-09-17 Benjamin Kosnik  <bkoz@redhat.com>
  
! // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 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
--- 2,9 ----
  
  // 2001-09-17 Benjamin Kosnik  <bkoz@redhat.com>
  
! // Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
! // Free Software Foundation
  //
  // This file is part of the GNU ISO C++ Library.  This library is free
  // software; you can redistribute it and/or modify it under the
*************** void test04()
*** 38,59 ****
  
    // basic construction and sanity check
    locale loc_c = locale::classic();
!   locale loc_fr = locale("fr_FR@euro");
!   VERIFY( loc_fr != loc_c );
  
    // create an ostream-derived object, cache the time_put facet
    const wstring empty;
    wostringstream oss;
!   oss.imbue(loc_fr);
    const time_put<wchar_t>& tim_put = use_facet<time_put<wchar_t> >(oss.getloc()); 
    iterator_type os_it04 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'a');
    wstring result4 = oss.str();
!   VERIFY( result4 == L"dim" );
  
!   oss.str(empty); // "%d.%m.%Y"
    iterator_type os_it27 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'x');
!   wstring result27 = oss.str(); // "04.04.1971"
!   VERIFY( result27 == L"04.04.1971" );
  
    oss.str(empty); // "%T"
    iterator_type os_it28 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'X');
--- 39,60 ----
  
    // basic construction and sanity check
    locale loc_c = locale::classic();
!   locale loc_es = locale("es_ES");
!   VERIFY( loc_es != loc_c );
  
    // create an ostream-derived object, cache the time_put facet
    const wstring empty;
    wostringstream oss;
!   oss.imbue(loc_es);
    const time_put<wchar_t>& tim_put = use_facet<time_put<wchar_t> >(oss.getloc()); 
    iterator_type os_it04 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'a');
    wstring result4 = oss.str();
!   VERIFY( result4 == L"dom" );
  
!   oss.str(empty); // "%d/%m/%y"
    iterator_type os_it27 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'x');
!   wstring result27 = oss.str(); // "04/04/71"
!   VERIFY( result27 == L"04/04/71" );
  
    oss.str(empty); // "%T"
    iterator_type os_it28 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'X');
*************** void test04()
*** 62,69 ****
  
    oss.str(empty);
    iterator_type os_it37 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'x', 'E');
!   wstring result37 = oss.str(); // "04.04.1971"
!   VERIFY( result37 == L"04.04.1971" );
  
    oss.str(empty);
    iterator_type os_it38 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'X', 'E');
--- 63,70 ----
  
    oss.str(empty);
    iterator_type os_it37 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'x', 'E');
!   wstring result37 = oss.str(); // "04/04/71"
!   VERIFY( result37 == L"04/04/71" );
  
    oss.str(empty);
    iterator_type os_it38 = tim_put.put(oss.rdbuf(), oss, L'*', &time1, 'X', 'E');
diff -Nrcpad gcc-4.3.1/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc gcc-4.3.2/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
*** gcc-4.3.1/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc	Thu Jan  1 00:00:00 1970
--- gcc-4.3.2/libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc	Wed Jul  9 15:33:14 2008
***************
*** 0 ****
--- 1,75 ----
+ // Copyright (C) 2001 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 2, 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 COPYING.  If not, write to the Free
+ // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ // USA.
+ 
+ // 25.2.11 random_shuffle()
+ 
+ #include <algorithm>
+ #include <testsuite_hooks.h>
+ 
+ bool test __attribute__((unused)) = true;
+ 
+ const int N = 200000;
+ int A[N], s1[N];
+ 
+ #if _GLIBCXX_PARALLEL
+ #define TAG , __gnu_parallel::sequential_tag()
+ #else
+ #define TAG
+ #endif
+ 
+ void fill_ascending()
+ {
+   for (int i = 0; i < N; ++i)
+     A[i] = i;
+ }
+ 
+ void
+ test01()
+ {
+   fill_ascending();
+ #if _GLIBCXX_PARALLEL
+   for (int num_threads = 1; num_threads <= 2; ++num_threads)
+   {
+     omp_set_num_threads(num_threads);
+ #endif
+     std::copy(A, A + N, s1);
+     VERIFY(std::equal(s1, s1 + N, A TAG));
+ 
+     std::random_shuffle(s1, s1 + N);
+     // the chance that random_shuffle leaves the order as is by coincidence
+     // is negligible, so we expect it to be permuted
+     VERIFY(!std::equal(s1, s1 + N, A TAG));
+ 
+     std::sort(s1, s1 + N TAG);
+     VERIFY(std::equal(s1, s1 + N, A TAG));
+ #if _GLIBCXX_PARALLEL
+   }
+ #endif
+ }
+ 
+ int
+ main()
+ {
+ #if _GLIBCXX_PARALLEL
+   __gnu_parallel::_Settings gpms = __gnu_parallel::_Settings::get();
+   gpms.algorithm_strategy = __gnu_parallel::force_parallel;
+   __gnu_parallel::_Settings::set(gpms);
+ #endif
+   test01();
+   return 0;
+ }
diff -Nrcpad gcc-4.3.1/libstdc++-v3/testsuite/ext/rope/36832.cc gcc-4.3.2/libstdc++-v3/testsuite/ext/rope/36832.cc
*** gcc-4.3.1/libstdc++-v3/testsuite/ext/rope/36832.cc	Thu Jan  1 00:00:00 1970
--- gcc-4.3.2/libstdc++-v3/testsuite/ext/rope/36832.cc	Tue Jul 15 10:14:51 2008
***************
*** 0 ****
--- 1,36 ----
+ // Copyright (C) 2008 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 2, 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 COPYING.  If not, write to the Free
+ // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ // USA.
+ 
+ // rope (SGI extension)
+ 
+ #include <ext/rope>
+ 
+ // libstdc++/36832
+ void test01()
+ {
+  __gnu_cxx::crope myRope;
+  myRope = "1234567890";
+  char buffer[100]; 
+  myRope.copy(1, 1, buffer);
+ }
+ 
+ int main()
+ {
+   test01();
+   return 0;
+ }