diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2012-02-20 21:08:48 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2012-02-20 21:08:48 +0000 |
commit | d6f90f03e09a55424ed8c784cfed92b83dc2a345 (patch) | |
tree | 80430dd0b825a4c46e9bdefba291ea5c5988b4b7 /libstdc++-v3 | |
parent | 63b08143d6c6f74ce8ed3f5a83adc070cddc8e6b (diff) | |
download | gcc-d6f90f03e09a55424ed8c784cfed92b83dc2a345.zip gcc-d6f90f03e09a55424ed8c784cfed92b83dc2a345.tar.gz gcc-d6f90f03e09a55424ed8c784cfed92b83dc2a345.tar.bz2 |
re PR libstdc++/52241 (Performance degradation of 447.dealII on corei7 at spec2006_base32.)
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
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 10 | ||||
-rw-r--r-- | libstdc++-v3/src/c++98/tree.cc | 26 |
2 files changed, 29 insertions, 7 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b301599..01679dc 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,15 @@ 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 * include/bits/hashtable_policy.h (_Equality_base<, true,>:: _M_equal(const _Hashtable&)): Compare values with operator==. diff --git a/libstdc++-v3/src/c++98/tree.cc b/libstdc++-v3/src/c++98/tree.cc index 0a7f6f9..731ce36 100644 --- a/libstdc++-v3/src/c++98/tree.cc +++ b/libstdc++-v3/src/c++98/tree.cc @@ -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 |