From: Gawain Bolton Date: Sat, 5 Jul 2003 15:47:09 +0000 (+0000) Subject: stl_tree.h: _Rb_tree_rebalance(): Add local variable for grandparent and use const X-Git-Tag: releases/gcc-3.4.0~5127 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f92c5313e17a9b084d8bb80f272d3b9996156d1f;p=thirdparty%2Fgcc.git stl_tree.h: _Rb_tree_rebalance(): Add local variable for grandparent and use const 2003-07-05 Gawain Bolton * include/bits/stl_tree.h: _Rb_tree_rebalance(): Add local variable for grandparent and use const From-SVN: r68977 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c647903f77b5..4ab9076ac77e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2003-07-05 Gawain Bolton + + * include/bits/stl_tree.h: _Rb_tree_rebalance(): Add local + variable for grandparent and use const + 2003-07-05 David Billinghurst * testsuite/27_io/basic_filebuf/close/char/4879.cc: xfail on cygwin diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h index 2172c98f6a42..eb124de11e1b 100644 --- a/libstdc++-v3/include/bits/stl_tree.h +++ b/libstdc++-v3/include/bits/stl_tree.h @@ -265,9 +265,9 @@ namespace std { return __x._M_node != __y._M_node; } inline void - _Rb_tree_rotate_left(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root) + _Rb_tree_rotate_left(_Rb_tree_node_base* const __x, _Rb_tree_node_base*& __root) { - _Rb_tree_node_base* __y = __x->_M_right; + _Rb_tree_node_base* const __y = __x->_M_right; __x->_M_right = __y->_M_left; if (__y->_M_left !=0) __y->_M_left->_M_parent = __x; @@ -284,9 +284,9 @@ namespace std } inline void - _Rb_tree_rotate_right(_Rb_tree_node_base* __x, _Rb_tree_node_base*& __root) + _Rb_tree_rotate_right(_Rb_tree_node_base* const __x, _Rb_tree_node_base*& __root) { - _Rb_tree_node_base* __y = __x->_M_left; + _Rb_tree_node_base* const __y = __x->_M_left; __x->_M_left = __y->_M_right; if (__y->_M_right != 0) __y->_M_right->_M_parent = __x; @@ -309,15 +309,17 @@ namespace std while (__x != __root && __x->_M_parent->_M_color == _S_red) { - if (__x->_M_parent == __x->_M_parent->_M_parent->_M_left) + _Rb_tree_node_base* const __xpp = __x->_M_parent->_M_parent; + + if (__x->_M_parent == __xpp->_M_left) { - _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_right; + _Rb_tree_node_base* const __y = __xpp->_M_right; if (__y && __y->_M_color == _S_red) { __x->_M_parent->_M_color = _S_black; __y->_M_color = _S_black; - __x->_M_parent->_M_parent->_M_color = _S_red; - __x = __x->_M_parent->_M_parent; + __xpp->_M_color = _S_red; + __x = __xpp; } else { @@ -327,19 +329,19 @@ namespace std _Rb_tree_rotate_left(__x, __root); } __x->_M_parent->_M_color = _S_black; - __x->_M_parent->_M_parent->_M_color = _S_red; - _Rb_tree_rotate_right(__x->_M_parent->_M_parent, __root); + __xpp->_M_color = _S_red; + _Rb_tree_rotate_right(__xpp, __root); } } else { - _Rb_tree_node_base* __y = __x->_M_parent->_M_parent->_M_left; + _Rb_tree_node_base* const __y = __xpp->_M_left; if (__y && __y->_M_color == _S_red) { __x->_M_parent->_M_color = _S_black; __y->_M_color = _S_black; - __x->_M_parent->_M_parent->_M_color = _S_red; - __x = __x->_M_parent->_M_parent; + __xpp->_M_color = _S_red; + __x = __xpp; } else { @@ -349,8 +351,8 @@ namespace std _Rb_tree_rotate_right(__x, __root); } __x->_M_parent->_M_color = _S_black; - __x->_M_parent->_M_parent->_M_color = _S_red; - _Rb_tree_rotate_left(__x->_M_parent->_M_parent, __root); + __xpp->_M_color = _S_red; + _Rb_tree_rotate_left(__xpp, __root); } } } @@ -358,10 +360,10 @@ namespace std } inline _Rb_tree_node_base* - _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* __z, - _Rb_tree_node_base*& __root, - _Rb_tree_node_base*& __leftmost, - _Rb_tree_node_base*& __rightmost) + _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, + _Rb_tree_node_base*& __root, + _Rb_tree_node_base*& __leftmost, + _Rb_tree_node_base*& __rightmost) { _Rb_tree_node_base* __y = __z; _Rb_tree_node_base* __x = 0;