re PR libstdc++/52241 (Performance degradation of 447.dealII on corei7 at spec2006_ba...
authorPaolo Carlini <paolo.carlini@oracle.com>
Mon, 20 Feb 2012 21:08:48 +0000 (21:08 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 20 Feb 2012 21:08:48 +0000 (21:08 +0000)
2012-02-20  Paolo Carlini  <paolo.carlini@oracle.com>

PR libstdc++/52241
* src/c++98/tree.cc (local_Rb_tree_increment,
local_Rb_tree_decrement): Add.
(_Rb_tree_increment(const _Rb_tree_node_base*),
_Rb_tree_decrement(const _Rb_tree_node_base*)): Use the latter.
(_Rb_tree_increment(_Rb_tree_node_base*),
_Rb_tree_decrement(_Rb_tree_node_base*)): New.

From-SVN: r184404

libstdc++-v3/ChangeLog
libstdc++-v3/src/c++98/tree.cc

index b301599de06f134ad493e797ca256be638f53ac8..01679dc3c5cce8c2adf5c059289fa2a9d98744c9 100644 (file)
@@ -1,3 +1,13 @@
+2012-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR libstdc++/52241
+       * src/c++98/tree.cc (local_Rb_tree_increment,
+       local_Rb_tree_decrement): Add.
+       (_Rb_tree_increment(const _Rb_tree_node_base*),
+       _Rb_tree_decrement(const _Rb_tree_node_base*)): Use the latter.
+       (_Rb_tree_increment(_Rb_tree_node_base*),
+       _Rb_tree_decrement(_Rb_tree_node_base*)): New.
+
 2012-02-20  Paolo Carlini  <paolo.carlini@oracle.com>
 
        PR libstdc++/52309
index 0a7f6f9e48599ba2413cf550296e92f0394e3631..731ce367a927bdba927d829fffc94e527fe622c1 100644 (file)
@@ -1,6 +1,6 @@
 // RB tree utilities implementation -*- C++ -*-
 
-// Copyright (C) 2003, 2005, 2009 Free Software Foundation, Inc.
+// Copyright (C) 2003, 2005, 2009, 2012 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -56,8 +56,8 @@ namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
-  _Rb_tree_node_base*
-  _Rb_tree_increment(_Rb_tree_node_base* __x) throw ()
+  static _Rb_tree_node_base*
+  local_Rb_tree_increment(_Rb_tree_node_base* __x) throw ()
   {
     if (__x->_M_right != 0) 
       {
@@ -79,14 +79,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     return __x;
   }
 
+  _Rb_tree_node_base*
+  _Rb_tree_increment(_Rb_tree_node_base* __x) throw ()
+  {
+    return local_Rb_tree_increment(__x);
+  }
+
   const _Rb_tree_node_base*
   _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ()
   {
-    return _Rb_tree_increment(const_cast<_Rb_tree_node_base*>(__x));
+    return local_Rb_tree_increment(const_cast<_Rb_tree_node_base*>(__x));
   }
 
-  _Rb_tree_node_base*
-  _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ()
+  static _Rb_tree_node_base*
+  local_Rb_tree_decrement(_Rb_tree_node_base* __x) throw ()
   {
     if (__x->_M_color == _S_red 
         && __x->_M_parent->_M_parent == __x)
@@ -111,10 +117,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     return __x;
   }
 
+  _Rb_tree_node_base*
+  _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ()
+  {
+    return local_Rb_tree_decrement(__x);
+  }
+
   const _Rb_tree_node_base*
   _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ()
   {
-    return _Rb_tree_decrement(const_cast<_Rb_tree_node_base*>(__x));
+    return local_Rb_tree_decrement(const_cast<_Rb_tree_node_base*>(__x));
   }
 
   static void