summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-16 13:01:17 +0000
committerhubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4>2009-04-16 13:01:17 +0000
commit02672eb4683a59d582ec902ab9300765dd1902bf (patch)
tree3957557c749781c39055c0aabf9408728f5b8ef7
parent39932bd229b90bbd1991a2663534b0facd237634 (diff)
downloadgcc-02672eb4683a59d582ec902ab9300765dd1902bf.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146184 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libstdc++-v3/ChangeLog13
-rw-r--r--libstdc++-v3/include/bits/stl_tree.h14
-rw-r--r--libstdc++-v3/src/tree.cc64
3 files changed, 62 insertions, 29 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index b794ad9958b..cf43d2ba8f0 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,16 @@
+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>
* include/bits/forward_list.h: Remove default std::allocator<_Tp>
diff --git a/libstdc++-v3/include/bits/stl_tree.h b/libstdc++-v3/include/bits/stl_tree.h
index 2e567360039..a1274e7a11e 100644
--- a/libstdc++-v3/include/bits/stl_tree.h
+++ b/libstdc++-v3/include/bits/stl_tree.h
@@ -138,16 +138,16 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
};
_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*
- _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_decrement(_Rb_tree_node_base* __x);
+ _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ();
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>
struct _Rb_tree_iterator
@@ -310,11 +310,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
_Rb_tree_insert_and_rebalance(const bool __insert_left,
_Rb_tree_node_base* __x,
_Rb_tree_node_base* __p,
- _Rb_tree_node_base& __header);
+ _Rb_tree_node_base& __header) throw ();
_Rb_tree_node_base*
_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,
@@ -1450,7 +1450,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
unsigned int
_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,
typename _Compare, typename _Alloc>
diff --git a/libstdc++-v3/src/tree.cc b/libstdc++-v3/src/tree.cc
index c8ba9359024..b5f229f4da5 100644
--- a/libstdc++-v3/src/tree.cc
+++ b/libstdc++-v3/src/tree.cc
@@ -55,7 +55,7 @@
_GLIBCXX_BEGIN_NAMESPACE(std)
_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)
{
@@ -78,13 +78,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
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));
}
_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
&& __x->_M_parent->_M_parent == __x)
@@ -110,14 +110,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
}
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));
}
- void
- _Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
- _Rb_tree_node_base*& __root)
+ static void
+ local_Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
+ _Rb_tree_node_base*& __root)
{
_Rb_tree_node_base* const __y = __x->_M_right;
@@ -136,9 +136,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__x->_M_parent = __y;
}
+ /* Static keyword was missing on _Rb_tree_rotate_left.
+ 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)
+ _Rb_tree_rotate_left(_Rb_tree_node_base* const __x,
+ _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;
@@ -157,11 +167,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
__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
_Rb_tree_insert_and_rebalance(const bool __insert_left,
_Rb_tree_node_base* __x,
_Rb_tree_node_base* __p,
- _Rb_tree_node_base& __header)
+ _Rb_tree_node_base& __header) throw ()
{
_Rb_tree_node_base *& __root = __header._M_parent;
@@ -215,11 +235,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
if (__x == __x->_M_parent->_M_right)
{
__x = __x->_M_parent;
- _Rb_tree_rotate_left(__x, __root);
+ local_Rb_tree_rotate_left(__x, __root);
}
__x->_M_parent->_M_color = _S_black;
__xpp->_M_color = _S_red;
- _Rb_tree_rotate_right(__xpp, __root);
+ local_Rb_tree_rotate_right(__xpp, __root);
}
}
else
@@ -237,11 +257,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
if (__x == __x->_M_parent->_M_left)
{
__x = __x->_M_parent;
- _Rb_tree_rotate_right(__x, __root);
+ local_Rb_tree_rotate_right(__x, __root);
}
__x->_M_parent->_M_color = _S_black;
__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)
_Rb_tree_node_base*
_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 *& __leftmost = __header._M_left;
@@ -337,7 +357,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
__w->_M_color = _S_black;
__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;
}
if ((__w->_M_left == 0 ||
@@ -356,14 +376,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
__w->_M_left->_M_color = _S_black;
__w->_M_color = _S_red;
- _Rb_tree_rotate_right(__w, __root);
+ local_Rb_tree_rotate_right(__w, __root);
__w = __x_parent->_M_right;
}
__w->_M_color = __x_parent->_M_color;
__x_parent->_M_color = _S_black;
if (__w->_M_right)
__w->_M_right->_M_color = _S_black;
- _Rb_tree_rotate_left(__x_parent, __root);
+ local_Rb_tree_rotate_left(__x_parent, __root);
break;
}
}
@@ -375,7 +395,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
__w->_M_color = _S_black;
__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;
}
if ((__w->_M_right == 0 ||
@@ -393,14 +413,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
{
__w->_M_right->_M_color = _S_black;
__w->_M_color = _S_red;
- _Rb_tree_rotate_left(__w, __root);
+ local_Rb_tree_rotate_left(__w, __root);
__w = __x_parent->_M_left;
}
__w->_M_color = __x_parent->_M_color;
__x_parent->_M_color = _S_black;
if (__w->_M_left)
__w->_M_left->_M_color = _S_black;
- _Rb_tree_rotate_right(__x_parent, __root);
+ local_Rb_tree_rotate_right(__x_parent, __root);
break;
}
}
@@ -411,7 +431,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
unsigned int
_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)
return 0;