Commit 1cf1c842 by Jan Hubicka Committed by Jan Hubicka

tree.cc (_Rb_tree_increment, [...]): Mark nothrow; update uses of…

tree.cc (_Rb_tree_increment, [...]): Mark nothrow; update uses of _Rb_tree_rotate_left, _Rb_tree_rotate_right.

	* tree.cc (_Rb_tree_increment, _Rb_tree_decrement,
	_Rb_tree_rebalance_for_erase, _Rb_tree_black_count): Mark nothrow;
	update uses of _Rb_tree_rotate_left, _Rb_tree_rotate_right.
	(_Rb_tree_rotate_left, _Rb_tree_rotate_right): Make wrapper and break
	out body to ...
	(local_Rb_tree_rotate_left, local_Rb_tree_rotate_right): New static
	functions.
	* stl_tree.h (_Rb_tree_increment, _Rb_tree_decrement,
	_Rb_tree_insert_and_rebalance, _Rb_tree_rebalance_for_erase,
	_Rb_tree_black_count): Mark nothrow.

From-SVN: r146184
parent 41fd0f9b
2009-04-16 Jan Hubicka <jh@suse.cz>
* tree.cc (_Rb_tree_increment, _Rb_tree_decrement,
_Rb_tree_rebalance_for_erase, _Rb_tree_black_count): Mark nothrow;
update uses of _Rb_tree_rotate_left, _Rb_tree_rotate_right.
(_Rb_tree_rotate_left, _Rb_tree_rotate_right): Make wrapper and break
out body to ...
(local_Rb_tree_rotate_left, local_Rb_tree_rotate_right): New static
functions.
* stl_tree.h (_Rb_tree_increment, _Rb_tree_decrement,
_Rb_tree_insert_and_rebalance, _Rb_tree_rebalance_for_erase,
_Rb_tree_black_count): Mark nothrow.
2009-04-16 Paolo Carlini <paolo.carlini@oracle.com> 2009-04-16 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/forward_list.h: Remove default std::allocator<_Tp> * include/bits/forward_list.h: Remove default std::allocator<_Tp>
......
...@@ -138,16 +138,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -138,16 +138,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}; };
_Rb_tree_node_base* _Rb_tree_node_base*
_Rb_tree_increment(_Rb_tree_node_base* __x); _Rb_tree_increment(_Rb_tree_node_base* __x) throw ();
const _Rb_tree_node_base* const _Rb_tree_node_base*
_Rb_tree_increment(const _Rb_tree_node_base* __x); _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ();
_Rb_tree_node_base* _Rb_tree_node_base*
_Rb_tree_decrement(_Rb_tree_node_base* __x); _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ();
const _Rb_tree_node_base* const _Rb_tree_node_base*
_Rb_tree_decrement(const _Rb_tree_node_base* __x); _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ();
template<typename _Tp> template<typename _Tp>
struct _Rb_tree_iterator struct _Rb_tree_iterator
...@@ -310,11 +310,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -310,11 +310,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree_insert_and_rebalance(const bool __insert_left, _Rb_tree_insert_and_rebalance(const bool __insert_left,
_Rb_tree_node_base* __x, _Rb_tree_node_base* __x,
_Rb_tree_node_base* __p, _Rb_tree_node_base* __p,
_Rb_tree_node_base& __header); _Rb_tree_node_base& __header) throw ();
_Rb_tree_node_base* _Rb_tree_node_base*
_Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
_Rb_tree_node_base& __header); _Rb_tree_node_base& __header) throw ();
template<typename _Key, typename _Val, typename _KeyOfValue, template<typename _Key, typename _Val, typename _KeyOfValue,
...@@ -1450,7 +1450,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -1450,7 +1450,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
unsigned int unsigned int
_Rb_tree_black_count(const _Rb_tree_node_base* __node, _Rb_tree_black_count(const _Rb_tree_node_base* __node,
const _Rb_tree_node_base* __root); const _Rb_tree_node_base* __root) throw ();
template<typename _Key, typename _Val, typename _KeyOfValue, template<typename _Key, typename _Val, typename _KeyOfValue,
typename _Compare, typename _Alloc> typename _Compare, typename _Alloc>
......
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
_GLIBCXX_BEGIN_NAMESPACE(std) _GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree_node_base* _Rb_tree_node_base*
_Rb_tree_increment(_Rb_tree_node_base* __x) _Rb_tree_increment(_Rb_tree_node_base* __x) throw ()
{ {
if (__x->_M_right != 0) if (__x->_M_right != 0)
{ {
...@@ -78,13 +78,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -78,13 +78,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
} }
const _Rb_tree_node_base* const _Rb_tree_node_base*
_Rb_tree_increment(const _Rb_tree_node_base* __x) _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ()
{ {
return _Rb_tree_increment(const_cast<_Rb_tree_node_base*>(__x)); return _Rb_tree_increment(const_cast<_Rb_tree_node_base*>(__x));
} }
_Rb_tree_node_base* _Rb_tree_node_base*
_Rb_tree_decrement(_Rb_tree_node_base* __x) _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ()
{ {
if (__x->_M_color == _S_red if (__x->_M_color == _S_red
&& __x->_M_parent->_M_parent == __x) && __x->_M_parent->_M_parent == __x)
...@@ -110,14 +110,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -110,14 +110,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
} }
const _Rb_tree_node_base* const _Rb_tree_node_base*
_Rb_tree_decrement(const _Rb_tree_node_base* __x) _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ()
{ {
return _Rb_tree_decrement(const_cast<_Rb_tree_node_base*>(__x)); return _Rb_tree_decrement(const_cast<_Rb_tree_node_base*>(__x));
} }
void static void
_Rb_tree_rotate_left(_Rb_tree_node_base* const __x, local_Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
_Rb_tree_node_base*& __root) _Rb_tree_node_base*& __root)
{ {
_Rb_tree_node_base* const __y = __x->_M_right; _Rb_tree_node_base* const __y = __x->_M_right;
...@@ -136,9 +136,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -136,9 +136,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__x->_M_parent = __y; __x->_M_parent = __y;
} }
/* Static keyword was missing on _Rb_tree_rotate_left.
Export the symbol for backward compatibility until
next ABI change. */
void void
_Rb_tree_rotate_right(_Rb_tree_node_base* const __x, _Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
_Rb_tree_node_base*& __root) _Rb_tree_node_base*& __root)
{
local_Rb_tree_rotate_left (__x, __root);
}
static void
local_Rb_tree_rotate_right(_Rb_tree_node_base* const __x,
_Rb_tree_node_base*& __root)
{ {
_Rb_tree_node_base* const __y = __x->_M_left; _Rb_tree_node_base* const __y = __x->_M_left;
...@@ -157,11 +167,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -157,11 +167,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__x->_M_parent = __y; __x->_M_parent = __y;
} }
/* Static keyword was missing on _Rb_tree_rotate_right
Export the symbol for backward compatibility until
next ABI change. */
void
_Rb_tree_rotate_right(_Rb_tree_node_base* const __x,
_Rb_tree_node_base*& __root)
{
local_Rb_tree_rotate_right (__x, __root);
}
void void
_Rb_tree_insert_and_rebalance(const bool __insert_left, _Rb_tree_insert_and_rebalance(const bool __insert_left,
_Rb_tree_node_base* __x, _Rb_tree_node_base* __x,
_Rb_tree_node_base* __p, _Rb_tree_node_base* __p,
_Rb_tree_node_base& __header) _Rb_tree_node_base& __header) throw ()
{ {
_Rb_tree_node_base *& __root = __header._M_parent; _Rb_tree_node_base *& __root = __header._M_parent;
...@@ -215,11 +235,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -215,11 +235,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
if (__x == __x->_M_parent->_M_right) if (__x == __x->_M_parent->_M_right)
{ {
__x = __x->_M_parent; __x = __x->_M_parent;
_Rb_tree_rotate_left(__x, __root); local_Rb_tree_rotate_left(__x, __root);
} }
__x->_M_parent->_M_color = _S_black; __x->_M_parent->_M_color = _S_black;
__xpp->_M_color = _S_red; __xpp->_M_color = _S_red;
_Rb_tree_rotate_right(__xpp, __root); local_Rb_tree_rotate_right(__xpp, __root);
} }
} }
else else
...@@ -237,11 +257,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -237,11 +257,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
if (__x == __x->_M_parent->_M_left) if (__x == __x->_M_parent->_M_left)
{ {
__x = __x->_M_parent; __x = __x->_M_parent;
_Rb_tree_rotate_right(__x, __root); local_Rb_tree_rotate_right(__x, __root);
} }
__x->_M_parent->_M_color = _S_black; __x->_M_parent->_M_color = _S_black;
__xpp->_M_color = _S_red; __xpp->_M_color = _S_red;
_Rb_tree_rotate_left(__xpp, __root); local_Rb_tree_rotate_left(__xpp, __root);
} }
} }
} }
...@@ -250,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -250,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree_node_base* _Rb_tree_node_base*
_Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
_Rb_tree_node_base& __header) _Rb_tree_node_base& __header) throw ()
{ {
_Rb_tree_node_base *& __root = __header._M_parent; _Rb_tree_node_base *& __root = __header._M_parent;
_Rb_tree_node_base *& __leftmost = __header._M_left; _Rb_tree_node_base *& __leftmost = __header._M_left;
...@@ -337,7 +357,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -337,7 +357,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ {
__w->_M_color = _S_black; __w->_M_color = _S_black;
__x_parent->_M_color = _S_red; __x_parent->_M_color = _S_red;
_Rb_tree_rotate_left(__x_parent, __root); local_Rb_tree_rotate_left(__x_parent, __root);
__w = __x_parent->_M_right; __w = __x_parent->_M_right;
} }
if ((__w->_M_left == 0 || if ((__w->_M_left == 0 ||
...@@ -356,14 +376,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -356,14 +376,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ {
__w->_M_left->_M_color = _S_black; __w->_M_left->_M_color = _S_black;
__w->_M_color = _S_red; __w->_M_color = _S_red;
_Rb_tree_rotate_right(__w, __root); local_Rb_tree_rotate_right(__w, __root);
__w = __x_parent->_M_right; __w = __x_parent->_M_right;
} }
__w->_M_color = __x_parent->_M_color; __w->_M_color = __x_parent->_M_color;
__x_parent->_M_color = _S_black; __x_parent->_M_color = _S_black;
if (__w->_M_right) if (__w->_M_right)
__w->_M_right->_M_color = _S_black; __w->_M_right->_M_color = _S_black;
_Rb_tree_rotate_left(__x_parent, __root); local_Rb_tree_rotate_left(__x_parent, __root);
break; break;
} }
} }
...@@ -375,7 +395,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -375,7 +395,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ {
__w->_M_color = _S_black; __w->_M_color = _S_black;
__x_parent->_M_color = _S_red; __x_parent->_M_color = _S_red;
_Rb_tree_rotate_right(__x_parent, __root); local_Rb_tree_rotate_right(__x_parent, __root);
__w = __x_parent->_M_left; __w = __x_parent->_M_left;
} }
if ((__w->_M_right == 0 || if ((__w->_M_right == 0 ||
...@@ -393,14 +413,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -393,14 +413,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{ {
__w->_M_right->_M_color = _S_black; __w->_M_right->_M_color = _S_black;
__w->_M_color = _S_red; __w->_M_color = _S_red;
_Rb_tree_rotate_left(__w, __root); local_Rb_tree_rotate_left(__w, __root);
__w = __x_parent->_M_left; __w = __x_parent->_M_left;
} }
__w->_M_color = __x_parent->_M_color; __w->_M_color = __x_parent->_M_color;
__x_parent->_M_color = _S_black; __x_parent->_M_color = _S_black;
if (__w->_M_left) if (__w->_M_left)
__w->_M_left->_M_color = _S_black; __w->_M_left->_M_color = _S_black;
_Rb_tree_rotate_right(__x_parent, __root); local_Rb_tree_rotate_right(__x_parent, __root);
break; break;
} }
} }
...@@ -411,7 +431,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ...@@ -411,7 +431,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
unsigned int unsigned int
_Rb_tree_black_count(const _Rb_tree_node_base* __node, _Rb_tree_black_count(const _Rb_tree_node_base* __node,
const _Rb_tree_node_base* __root) const _Rb_tree_node_base* __root) throw ()
{ {
if (__node == 0) if (__node == 0)
return 0; return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment