aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8.1/gcc/testsuite/g++.dg/tm
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.8.1/gcc/testsuite/g++.dg/tm')
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/20100429.C15
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/20100727.C796
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/alias.C20
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/asm-1.c22
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-2.C22
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-3.C33
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-4.C48
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/cgraph_edge.C33
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/fatomic-1.C10
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-1.C22
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-2.C41
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-3.C43
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-1.C38
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-2.C20
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-3.C40
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-4.C35
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-5.C21
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/opt-1.C9
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-2.C30
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-3.C69
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-4.C69
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940.C30
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46269.C29
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46270.C27
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46300.C8
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46567.C2676
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46646.C890
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46653.C18
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46714.C14
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46941.C37
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47340.C11
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47530-2.C39
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47530.C80
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47554.C27
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47573.C25
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47746.C27
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47747.C21
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51212.C19
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51411-2.C49
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51411.C7
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51516.C21
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51928.C16
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr56419.C13
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/template-1.C36
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/template-2.C22
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/tm.exp43
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/vector-1.C15
-rw-r--r--gcc-4.8.1/gcc/testsuite/g++.dg/tm/wrap-2.C16
48 files changed, 0 insertions, 5652 deletions
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/20100429.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/20100429.C
deleted file mode 100644
index 087ce32b2..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/20100429.C
+++ /dev/null
@@ -1,15 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-int foo(int a);
-int foo(float a);
-int
-bar(int a)
-{
- int r;
- __transaction_atomic
- {
- r = foo(a); // { dg-error "unsafe function call 'int foo\\(int\\)'" }
- }
- return r;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/20100727.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/20100727.C
deleted file mode 100644
index bda2df060..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/20100727.C
+++ /dev/null
@@ -1,796 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-typedef long int ptrdiff_t;
-typedef long unsigned int size_t;
-namespace std __attribute__ ((__visibility__ ("default")))
-{
- using::ptrdiff_t;
- using::size_t;
-}
-
-namespace std __attribute__ ((__visibility__ ("default")))
-{
- struct input_iterator_tag
- {
- };
- struct output_iterator_tag
- {
- };
- struct forward_iterator_tag:public input_iterator_tag
- {
- };
- struct bidirectional_iterator_tag:public forward_iterator_tag
- {
- };
- struct random_access_iterator_tag:public bidirectional_iterator_tag
- {
- };
- template < typename _Category, typename _Tp, typename _Distance =
- ptrdiff_t, typename _Pointer = _Tp *, typename _Reference =
- _Tp & >struct iterator
- {
- typedef _Category iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
- };
- template < typename _Iterator > struct iterator_traits
- {
- typedef typename _Iterator::iterator_category iterator_category;
- typedef typename _Iterator::value_type value_type;
- typedef typename _Iterator::difference_type difference_type;
- typedef typename _Iterator::pointer pointer;
- typedef typename _Iterator::reference reference;
- };
- template < typename _Tp > struct iterator_traits <_Tp * >
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp *pointer;
- typedef _Tp & reference;
- };
- template < typename _Tp > struct iterator_traits <const _Tp *>
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- typedef const _Tp *pointer;
- typedef const _Tp & reference;
- };
- template < typename _Iter > inline typename iterator_traits <
- _Iter >::iterator_category __iterator_category (const _Iter &)
- {
- return typename iterator_traits < _Iter >::iterator_category ();
- }
-}
-
-namespace std __attribute__ ((__visibility__ ("default")))
-{
-template < typename _Iterator > class reverse_iterator:public iterator < typename iterator_traits < _Iterator >::iterator_category,
- typename iterator_traits < _Iterator >::value_type,
- typename iterator_traits < _Iterator >::difference_type,
- typename iterator_traits < _Iterator >::pointer,
- typename iterator_traits < _Iterator >::reference >
- {
- protected:_Iterator current;
- typedef iterator_traits < _Iterator > __traits_type;
- public:typedef _Iterator iterator_type;
- typedef typename __traits_type::difference_type difference_type;
- typedef typename __traits_type::pointer pointer;
- typedef typename __traits_type::reference reference;
- reverse_iterator ():current ()
- {
- } explicit reverse_iterator (iterator_type __x):current (__x)
- {
- } reverse_iterator (const reverse_iterator & __x):current (__x.current)
- {
- } template < typename _Iter > reverse_iterator (const reverse_iterator <
- _Iter >
- &__x):current (__x.
- base ())
- {
- } iterator_type base () const
- {
- return current;
- }
- reference operator* () const
- {
- _Iterator __tmp = current;
- return *--__tmp;
- }
- pointer operator-> () const
- {
- return &(operator* ());
- }
- reverse_iterator & operator++ ()
- {
- --current;
- return *this;
- }
- reverse_iterator operator++ (int)
- {
- reverse_iterator __tmp = *this;
- --current;
- return __tmp;
- }
- reverse_iterator & operator-- ()
- {
- ++current;
- return *this;
- }
- reverse_iterator operator-- (int)
- {
- reverse_iterator __tmp = *this;
- ++current;
- return __tmp;
- }
- reverse_iterator operator+ (difference_type __n) const
- {
- return reverse_iterator (current - __n);
- }
- reverse_iterator & operator+= (difference_type __n)
- {
- current -= __n;
- return *this;
- }
- reverse_iterator operator- (difference_type __n) const
- {
- return reverse_iterator (current + __n);
- }
- reverse_iterator & operator-= (difference_type __n)
- {
- current += __n;
- return *this;
- }
- reference operator[] (difference_type __n) const
- {
- return *(*this + __n);
- }
- };
- template < typename _Iterator >
- inline bool operator== (const reverse_iterator < _Iterator > &__x,
- const reverse_iterator < _Iterator > &__y)
- {
- return __x.base () == __y.base ();
- }
- template < typename _Iterator >
- inline bool operator< (const reverse_iterator < _Iterator > &__x,
- const reverse_iterator < _Iterator > &__y)
- {
- return __y.base () < __x.base ();
- }
- template < typename _Iterator >
- inline bool operator!= (const reverse_iterator < _Iterator > &__x,
- const reverse_iterator < _Iterator > &__y)
- {
- return !(__x == __y);
- }
- template < typename _Iterator >
- inline bool operator> (const reverse_iterator < _Iterator > &__x,
- const reverse_iterator < _Iterator > &__y)
- {
- return __y < __x;
- }
- template < typename _Iterator >
- inline bool operator<= (const reverse_iterator < _Iterator > &__x,
- const reverse_iterator < _Iterator > &__y)
- {
- return !(__y < __x);
- }
- template < typename _Iterator >
- inline bool operator>= (const reverse_iterator < _Iterator > &__x,
- const reverse_iterator < _Iterator > &__y)
- {
- return !(__x < __y);
- }
- template < typename _Iterator > inline typename reverse_iterator <
- _Iterator >::difference_type operator- (const reverse_iterator <
- _Iterator > &__x,
- const reverse_iterator <
- _Iterator > &__y)
- {
- return __y.base () - __x.base ();
- }
- template < typename _Iterator > inline reverse_iterator < _Iterator >
- operator+ (typename reverse_iterator < _Iterator >::difference_type __n,
- const reverse_iterator < _Iterator > &__x)
- {
- return reverse_iterator < _Iterator > (__x.base () - __n);
- }
- template < typename _IteratorL,
- typename _IteratorR > inline bool operator== (const reverse_iterator <
- _IteratorL > &__x,
- const reverse_iterator <
- _IteratorR > &__y)
- {
- return __x.base () == __y.base ();
- }
- template < typename _IteratorL,
- typename _IteratorR > inline bool operator< (const reverse_iterator <
- _IteratorL > &__x,
- const reverse_iterator <
- _IteratorR > &__y)
- {
- return __y.base () < __x.base ();
- }
- template < typename _IteratorL,
- typename _IteratorR > inline bool operator!= (const reverse_iterator <
- _IteratorL > &__x,
- const reverse_iterator <
- _IteratorR > &__y)
- {
- return !(__x == __y);
- }
- template < typename _IteratorL,
- typename _IteratorR > inline bool operator> (const reverse_iterator <
- _IteratorL > &__x,
- const reverse_iterator <
- _IteratorR > &__y)
- {
- return __y < __x;
- }
- template < typename _IteratorL,
- typename _IteratorR > inline bool operator<= (const reverse_iterator <
- _IteratorL > &__x,
- const reverse_iterator <
- _IteratorR > &__y)
- {
- return !(__y < __x);
- }
- template < typename _IteratorL,
- typename _IteratorR > inline bool operator>= (const reverse_iterator <
- _IteratorL > &__x,
- const reverse_iterator <
- _IteratorR > &__y)
- {
- return !(__x < __y);
- }
- template < typename _IteratorL,
- typename _IteratorR > inline typename reverse_iterator <
- _IteratorL >::difference_type operator- (const reverse_iterator <
- _IteratorL > &__x,
- const reverse_iterator <
- _IteratorR > &__y)
- {
- return __y.base () - __x.base ();
- }
-template < typename _Container > class back_insert_iterator:public iterator < output_iterator_tag, void, void, void,
- void >
- {
- protected:_Container * container;
- public:typedef _Container container_type;
- explicit back_insert_iterator (_Container & __x):container (&__x)
- {
- } back_insert_iterator & operator= (typename _Container::
- const_reference __value)
- {
- container->push_back (__value);
- return *this;
- }
- back_insert_iterator & operator* ()
- {
- return *this;
- }
- back_insert_iterator & operator++ ()
- {
- return *this;
- }
- back_insert_iterator operator++ (int)
- {
- return *this;
- }
- };
- template < typename _Container > inline back_insert_iterator < _Container >
- back_inserter (_Container & __x)
- {
- return back_insert_iterator < _Container > (__x);
- }
-template < typename _Container > class front_insert_iterator:public iterator < output_iterator_tag, void, void, void,
- void >
- {
- protected:_Container * container;
- public:typedef _Container container_type;
- explicit front_insert_iterator (_Container & __x):container (&__x)
- {
- } front_insert_iterator & operator= (typename _Container::
- const_reference __value)
- {
- container->push_front (__value);
- return *this;
- }
- front_insert_iterator & operator* ()
- {
- return *this;
- }
- front_insert_iterator & operator++ ()
- {
- return *this;
- }
- front_insert_iterator operator++ (int)
- {
- return *this;
- }
- };
- template < typename _Container > inline front_insert_iterator < _Container >
- front_inserter (_Container & __x)
- {
- return front_insert_iterator < _Container > (__x);
- }
-template < typename _Container > class insert_iterator:public iterator < output_iterator_tag, void, void, void,
- void >
- {
- protected:_Container * container;
- typename _Container::iterator iter;
- public:typedef _Container container_type;
- insert_iterator (_Container & __x,
- typename _Container::iterator __i):container (&__x),
- iter (__i)
- {
- } insert_iterator & operator= (typename _Container::
- const_reference __value)
- {
- iter = container->insert (iter, __value);
- ++iter;
- return *this;
- }
- insert_iterator & operator* ()
- {
- return *this;
- }
- insert_iterator & operator++ ()
- {
- return *this;
- }
- insert_iterator & operator++ (int)
- {
- return *this;
- }
- };
- template < typename _Container,
- typename _Iterator > inline insert_iterator < _Container >
- inserter (_Container & __x, _Iterator __i)
- {
- return insert_iterator < _Container > (__x,
- typename _Container::
- iterator (__i));
- }
-}
-
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
-{
- using std::size_t;
- using std::ptrdiff_t;
- template < typename _Tp > class new_allocator
- {
- public:typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp *pointer;
- typedef const _Tp *const_pointer;
- typedef _Tp & reference;
- typedef const _Tp & const_reference;
- typedef _Tp value_type;
- template < typename _Tp1 > struct rebind
- {
- typedef new_allocator < _Tp1 > other;
- };
- new_allocator ()throw ()
- {
- } new_allocator (const new_allocator &) throw ()
- {
- } template < typename _Tp1 > new_allocator (const new_allocator < _Tp1 >
- &) throw ()
- {
- } ~new_allocator ()throw ()
- {
- } pointer address (reference __x) const
- {
- return &__x;
- }
- const_pointer address (const_reference __x) const
- {
- return &__x;
- }
- pointer allocate (size_type __n, const void * = 0)
- {
- return static_cast < _Tp * >(::operator new (__n * sizeof (_Tp)));
- }
- void deallocate (pointer __p, size_type)
- {
- ::operator delete (__p);
- } size_type max_size () const throw ()
- {
- return size_t (-1) / sizeof (_Tp);
- }
- void construct (pointer __p, const _Tp & __val)
- {
- ::new ((void *) __p) _Tp (__val);
- } void destroy (pointer __p)
- {
- __p->~_Tp ();
- }};
- template < typename _Tp > inline bool operator== (const new_allocator <
- _Tp > &,
- const new_allocator <
- _Tp > &)
- {
- return true;
- }
- template < typename _Tp > inline bool operator!= (const new_allocator <
- _Tp > &,
- const new_allocator <
- _Tp > &)
- {
- return false;
- }
-}
-
-namespace std __attribute__ ((__visibility__ ("default")))
-{
- template < typename _Tp > class allocator;
- template <> class allocator < void >
- {
- public:typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void *pointer;
- typedef const void *const_pointer;
- typedef void value_type;
- template < typename _Tp1 > struct rebind
- {
- typedef allocator < _Tp1 > other;
- };
- };
-template < typename _Tp > class allocator:public __gnu_cxx::new_allocator <
- _Tp >
- {
- public:typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp *pointer;
- typedef const _Tp *const_pointer;
- typedef _Tp & reference;
- typedef const _Tp & const_reference;
- typedef _Tp value_type;
- template < typename _Tp1 > struct rebind
- {
- typedef allocator < _Tp1 > other;
- };
- allocator ()throw ()
- {
- } allocator (const allocator & __a) throw ():__gnu_cxx::new_allocator <
- _Tp > (__a)
- {
- } template < typename _Tp1 > allocator (const allocator < _Tp1 >
- &) throw ()
- {
- } ~allocator ()throw ()
- {
- }};
- template < typename _T1,
- typename _T2 > inline bool operator== (const allocator < _T1 > &,
- const allocator < _T2 > &)
- {
- return true;
- }
- template < typename _Tp > inline bool operator== (const allocator < _Tp > &,
- const allocator < _Tp > &)
- {
- return true;
- }
- template < typename _T1,
- typename _T2 > inline bool operator!= (const allocator < _T1 > &,
- const allocator < _T2 > &)
- {
- return false;
- }
- template < typename _Tp > inline bool operator!= (const allocator < _Tp > &,
- const allocator < _Tp > &)
- {
- return false;
- }
- template < typename _Alloc, bool = __is_empty (_Alloc) > struct __alloc_swap
- {
- static void _S_do_it (_Alloc &, _Alloc &)
- {
- }};
- template < typename _Alloc > struct __alloc_swap <_Alloc, false >
- {
- static void _S_do_it (_Alloc & __one, _Alloc & __two)
- {
- if (__one != __two)
- swap (__one, __two);
- }
- };
- template < typename _Alloc, bool = __is_empty (_Alloc) > struct __alloc_neq
- {
- static bool _S_do_it (const _Alloc &, const _Alloc &)
- {
- return false;
- }
- };
- template < typename _Alloc > struct __alloc_neq <_Alloc, false >
- {
- static bool _S_do_it (const _Alloc & __one, const _Alloc & __two)
- {
- return __one != __two;
- }
- };
-}
-
-namespace std __attribute__ ((__visibility__ ("default")))
-{
- struct _List_node_base
- {
- _List_node_base *_M_next;
- _List_node_base *_M_prev;
- static void swap (_List_node_base & __x, _List_node_base & __y) throw ();
- void _M_transfer (_List_node_base * const __first,
- _List_node_base * const __last) throw ();
- void _M_reverse () throw ();
- void _M_hook (_List_node_base * const __position) throw ();
- void _M_unhook () throw ();
- };
- template < typename _Tp > struct _List_node:public _List_node_base
- {
- _Tp _M_data;
- };
- template < typename _Tp > struct _List_iterator
- {
- typedef _List_iterator < _Tp > _Self;
- typedef _List_node < _Tp > _Node;
- typedef ptrdiff_t difference_type;
- typedef std::bidirectional_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Tp *pointer;
- typedef _Tp & reference;
- _List_iterator ():_M_node ()
- {
- } explicit _List_iterator (_List_node_base * __x):_M_node (__x)
- {
- } reference operator* () const
- {
- return static_cast < _Node * >(_M_node)->_M_data;
- }
- pointer operator-> () const
- {
- return &static_cast < _Node * >(_M_node)->_M_data;
- }
- _Self & operator++ ()
- {
- _M_node = _M_node->_M_next;
- return *this;
- }
- _Self operator++ (int)
- {
- _Self __tmp = *this;
- _M_node = _M_node->_M_next;
- return __tmp;
- }
- _Self & operator-- ()
- {
- _M_node = _M_node->_M_prev;
- return *this;
- }
- _Self operator-- (int)
- {
- _Self __tmp = *this;
- _M_node = _M_node->_M_prev;
- return __tmp;
- }
- bool operator== (const _Self & __x) const
- {
- return _M_node == __x._M_node;
- }
- bool operator!= (const _Self & __x) const
- {
- return _M_node != __x._M_node;
- }
- _List_node_base *_M_node;
- };
- template < typename _Tp > struct _List_const_iterator
- {
- typedef _List_const_iterator < _Tp > _Self;
- typedef const _List_node < _Tp > _Node;
- typedef _List_iterator < _Tp > iterator;
- typedef ptrdiff_t difference_type;
- typedef std::bidirectional_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef const _Tp *pointer;
- typedef const _Tp & reference;
- _List_const_iterator ():_M_node ()
- {
- } explicit _List_const_iterator (const _List_node_base *
- __x):_M_node (__x)
- {
- } _List_const_iterator (const iterator & __x):_M_node (__x._M_node)
- {
- } reference operator* () const
- {
- return static_cast < _Node * >(_M_node)->_M_data;
- }
- pointer operator-> () const
- {
- return &static_cast < _Node * >(_M_node)->_M_data;
- }
- _Self & operator++ ()
- {
- _M_node = _M_node->_M_next;
- return *this;
- }
- _Self operator++ (int)
- {
- _Self __tmp = *this;
- _M_node = _M_node->_M_next;
- return __tmp;
- }
- _Self & operator-- ()
- {
- _M_node = _M_node->_M_prev;
- return *this;
- }
- _Self operator-- (int)
- {
- _Self __tmp = *this;
- _M_node = _M_node->_M_prev;
- return __tmp;
- }
- bool operator== (const _Self & __x) const
- {
- return _M_node == __x._M_node;
- }
- bool operator!= (const _Self & __x) const
- {
- return _M_node != __x._M_node;
- }
- const _List_node_base *_M_node;
- };
- template < typename _Tp, typename _Alloc > class _List_base
- {
- protected:typedef typename _Alloc::template rebind < _List_node < _Tp >
- >::other _Node_alloc_type;
- typedef typename _Alloc::template rebind < _Tp >::other _Tp_alloc_type;
- struct _List_impl:public _Node_alloc_type
- {
- _List_node_base _M_node;
- _List_impl ():_Node_alloc_type (), _M_node ()
- {
- } _List_impl (const _Node_alloc_type & __a):_Node_alloc_type (__a),
- _M_node ()
- {
- }};
- _List_impl _M_impl;
- _List_node < _Tp > *_M_get_node ()
- {
- return _M_impl._Node_alloc_type::allocate (1);
- }
- void _M_put_node (_List_node < _Tp > *__p)
- {
- _M_impl._Node_alloc_type::deallocate (__p, 1);
- } public:typedef _Alloc allocator_type;
- _Node_alloc_type & _M_get_Node_allocator ()
- {
- return *static_cast < _Node_alloc_type * >(&this->_M_impl);
- }
- const _Node_alloc_type & _M_get_Node_allocator () const
- {
- return *static_cast < const _Node_alloc_type *>(&this->_M_impl);
- } _Tp_alloc_type _M_get_Tp_allocator () const
- {
- return _Tp_alloc_type (_M_get_Node_allocator ());
- }
- allocator_type get_allocator () const
- {
- return allocator_type (_M_get_Node_allocator ());
- }
- _List_base ():_M_impl ()
- {
- _M_init ();
- }
- _List_base (const allocator_type & __a):_M_impl (__a)
- {
- _M_init ();
- } ~_List_base ()
- {
- _M_clear ();
- } void _M_clear ();
- void _M_init ()
- {
- this->_M_impl._M_node._M_next = &this->_M_impl._M_node;
- this->_M_impl._M_node._M_prev = &this->_M_impl._M_node;
- }};
-template < typename _Tp, typename _Alloc = std::allocator < _Tp > >class list:protected _List_base < _Tp,
- _Alloc
- >
- {
- typedef typename _Alloc::value_type _Alloc_value_type;
- typedef _List_base < _Tp, _Alloc > _Base;
- typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
- public:typedef _Tp value_type;
- typedef typename _Tp_alloc_type::pointer pointer;
- typedef typename _Tp_alloc_type::const_pointer const_pointer;
- typedef typename _Tp_alloc_type::reference reference;
- typedef typename _Tp_alloc_type::const_reference const_reference;
- typedef _List_iterator < _Tp > iterator;
- typedef _List_const_iterator < _Tp > const_iterator;
- typedef std::reverse_iterator < const_iterator > const_reverse_iterator;
- typedef std::reverse_iterator < iterator > reverse_iterator;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Alloc allocator_type;
- protected:typedef _List_node < _Tp > _Node;
- using _Base::_M_impl;
- using _Base::_M_put_node;
- using _Base::_M_get_node;
- using _Base::_M_get_Tp_allocator;
- using _Base::_M_get_Node_allocator;
- public:iterator begin ()
- {
- return iterator (this->_M_impl._M_node._M_next);
- }
- const_iterator begin () const
- {
- return const_iterator (this->_M_impl._M_node._M_next);
- }
- iterator end ()
- {
- return iterator (&this->_M_impl._M_node);
- }
- void remove (const _Tp & __value);
- template < typename _Predicate > void remove_if (_Predicate);
- void _M_erase (iterator __position)
- {
- __position._M_node->_M_unhook ();
- _Node *__n = static_cast < _Node * >(__position._M_node);
- _M_get_Tp_allocator ().destroy (&__n->_M_data);
- _M_put_node (__n);
- } void _M_check_equal_allocators (list & __x)
- {
- if (std::__alloc_neq <
- typename _Base::_Node_alloc_type >::
- _S_do_it (_M_get_Node_allocator (), __x._M_get_Node_allocator ()));
- }
- };
-}
-
-namespace std __attribute__ ((__visibility__ ("default")))
-{
- template < typename _Tp, typename _Alloc > void list < _Tp,
- _Alloc >::remove (const value_type & __value)
- {
- iterator __first = begin ();
- iterator __last = end ();
- iterator __extra = __last;
- while (__first != __last)
- {
- iterator __next = __first;
- ++__next;
- if (*__first == __value)
- {
- if (&*__first != &__value)
- _M_erase (__first);
- else
- __extra = __first;
- }
- __first = __next;
- }
- if (__extra != __last)
- _M_erase (__extra);
- }
-}
-
-class Unit
-{
-public:int dummy;
-};
-class Building
-{
-public:__attribute__ ((transaction_callable)) void removeUnitFromInside (Unit *
- unit);
- std::list < Unit * >unitsInside;
-};
-void
-Building::removeUnitFromInside (Unit * unit)
-{
- unitsInside.remove (unit);
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/alias.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/alias.C
deleted file mode 100644
index 4459c703b..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/alias.C
+++ /dev/null
@@ -1,20 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O0" }
-
-/* Test that we generate transactional clones for both the base and
- the complete dtor for class Itemset. */
-
-class Itemset {
-public:
- __attribute__((transaction_safe)) ~Itemset();
- __attribute__((transaction_safe)) void operator delete(void *);
-private:
-};
-
-__attribute__((transaction_safe))
-Itemset::~Itemset()
-{
-}
-
-// { dg-final { scan-assembler "_ZGTtN7ItemsetD1Ev" } }
-// { dg-final { scan-assembler "_ZGTtN7ItemsetD2Ev" } }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/asm-1.c b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/asm-1.c
deleted file mode 100644
index 3c8ebd2f6..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/asm-1.c
+++ /dev/null
@@ -1,22 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O1" }
-
-template<class T> class shared_ptr {
-public:
- shared_ptr() {
- __asm__ ("");
- }
-};
-template<typename _Tp> class deque {
-public:
- void push_back() {
- ::new _Tp();
- }
-};
-class Bar {
- __attribute__((transaction_callable)) void push();
- deque<shared_ptr<int> > events;
-};
-void Bar::push() {
- events.push_back();
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-2.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-2.C
deleted file mode 100644
index 6a418e559..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-2.C
+++ /dev/null
@@ -1,22 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -fdump-tree-optimized-asmname" }
-
-struct __attribute__((transaction_safe)) Tsafe
-{
- void f();
-};
-
-void Tsafe::f() { }
-
-struct __attribute__((transaction_callable)) Tcall
-{
- void f();
-};
-
-void Tcall::f() { }
-
-// { dg-final { scan-tree-dump-times "_ZN5Tsafe1fEv" 1 "optimized" } }
-// { dg-final { scan-tree-dump-times "_ZN5Tcall1fEv" 1 "optimized" } }
-// { dg-final { scan-tree-dump-times "_ZGTtN5Tsafe1fEv" 1 "optimized" } }
-// { dg-final { scan-tree-dump-times "_ZGTtN5Tcall1fEv" 1 "optimized" } }
-// { dg-final { cleanup-tree-dump "optimized" } }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-3.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-3.C
deleted file mode 100644
index a2c9718bc..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-3.C
+++ /dev/null
@@ -1,33 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -fdump-tree-optimized-asmname" }
-
-struct __attribute__((transaction_safe)) A
-{
-};
-
-struct B : public A
-{
- void f();
-};
-
-struct C
-{
-};
-
-struct D : public C
-{
-};
-
-struct E : public D, public A
-{
- void f();
-};
-
-void B::f() { }
-void E::f() { }
-
-// { dg-final { scan-tree-dump-times "_ZN1B1fEv" 1 "optimized" } }
-// { dg-final { scan-tree-dump-times "_ZGTtN1B1fEv" 1 "optimized" } }
-// { dg-final { scan-tree-dump-times "_ZN1E1fEv" 1 "optimized" } }
-// { dg-final { scan-tree-dump-times "_ZGTtN1E1fEv" 1 "optimized" } }
-// { dg-final { cleanup-tree-dump "optimized" } }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-4.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-4.C
deleted file mode 100644
index b589b9d41..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/attrib-4.C
+++ /dev/null
@@ -1,48 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-#define __ts __attribute__((transaction_safe))
-#define __tc __attribute__((transaction_callable))
-#define __tp __attribute__((transaction_pure))
-#define __tu __attribute__((transaction_unsafe))
-
-struct __ts A
-{
- virtual void f();
- virtual void g();
-};
-
-struct __tc B : public A
-{
- void f() __tc; // { dg-error ".transaction_callable. overriding .transaction_safe." }
- void g();
- virtual void h();
-};
-
-struct C : public B
-{
- void g() __tc; // { dg-error ".transaction_callable. overriding .transaction_safe." }
-};
-
-struct C2 : public B
-{
- void g() __ts;
- void h() __tu; // { dg-error ".transaction_unsafe. overriding .transaction_callable." }
-};
-
-struct D
-{
- virtual void f() __tp;
- virtual void g() __tp;
-};
-
-struct E : public D
-{
- void f() __ts; // { dg-error ".transaction_safe. overriding .transaction_pure." }
- void g();
-};
-
-struct F : public E
-{
- void g() __ts; // { dg-error ".transaction_safe. overriding .transaction_pure." }
-};
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/cgraph_edge.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/cgraph_edge.C
deleted file mode 100644
index d4c8f77fe..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/cgraph_edge.C
+++ /dev/null
@@ -1,33 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O3" }
-
-template<typename _InputIterator, typename _Distance> inline void advance(_InputIterator& __i, _Distance __n)
- {
- if (__n > 0)
- while (__n--)
- --__i;
- else
- --__i;
- }
-
-void _Rb_tree_increment ();
-
-template<typename _Tp> struct _Rb_tree_iterator
- {
- typedef _Rb_tree_iterator<_Tp> iterator;
-
- iterator& operator--()
- {
- _Rb_tree_increment();
- }
- };
-
-void update ()
- {
- _Rb_tree_iterator<int>::iterator it;
- __transaction_relaxed
- {
- advance (it, 0);
- }
- }
-
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/fatomic-1.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/fatomic-1.C
deleted file mode 100644
index dac850aac..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/fatomic-1.C
+++ /dev/null
@@ -1,10 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-struct S
-{
- int i, j, k;
- S();
-};
-
-S::S() __transaction_atomic : i(1), j(2), k(3) { }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-1.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-1.C
deleted file mode 100644
index 1f4e19e98..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-1.C
+++ /dev/null
@@ -1,22 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-class HashTree
-{
-public:
- __attribute__((transaction_safe))
- int add_element2();
-private:
- int Count;
-};
-
-
-__attribute__((transaction_safe))
-int HashTree::add_element2()
-{
- int tt;
- __transaction_atomic {
- tt = Count;
- }
- return tt;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-2.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-2.C
deleted file mode 100644
index c6d5d98ba..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-2.C
+++ /dev/null
@@ -1,41 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O" }
-
-typedef unsigned long int uint64_t;
-extern int *hash_indx;
-
-typedef struct
-{
- uint64_t exit_atomicsec_time;
-} ent_ex_times;
-class HashTree
-{
-public:
- __attribute__((transaction_safe))
- void *operator new(__SIZE_TYPE__);
- __attribute__((transaction_safe))
- int add_element();
-private:
- HashTree **Hash_table;
- int Count;
-};
-
-
-__attribute__((transaction_safe))
-int HashTree::add_element()
-{
- ent_ex_times enter_exit_times_inside;
- int val = hash_indx[5];
- int tt;
- if (Hash_table[val] == __null)
- {
- __transaction_atomic {
- Hash_table[val] = new HashTree;
- }
- }
- __transaction_atomic {
- tt = Count++;
- enter_exit_times_inside.exit_atomicsec_time = 5;
- }
- return tt;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-3.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-3.C
deleted file mode 100644
index 19718c34a..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/nested-3.C
+++ /dev/null
@@ -1,43 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O0" }
-
-// Same as nested-2.C but with no optimization.
-
-typedef unsigned long int uint64_t;
-extern int *hash_indx;
-
-typedef struct
-{
- uint64_t exit_atomicsec_time;
-} ent_ex_times;
-class HashTree
-{
-public:
- __attribute__((transaction_safe))
- void *operator new(__SIZE_TYPE__);
- __attribute__((transaction_safe))
- int add_element();
-private:
- HashTree **Hash_table;
- int Count;
-};
-
-
-__attribute__((transaction_safe))
-int HashTree::add_element()
-{
- ent_ex_times enter_exit_times_inside;
- int val = hash_indx[5];
- int tt;
- if (Hash_table[val] == __null)
- {
- __transaction_atomic {
- Hash_table[val] = new HashTree;
- }
- }
- __transaction_atomic {
- tt = Count++;
- enter_exit_times_inside.exit_atomicsec_time = 5;
- }
- return tt;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-1.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-1.C
deleted file mode 100644
index 9b1a8c65f..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-1.C
+++ /dev/null
@@ -1,38 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O -std=c++0x -fdump-tree-tmmark -fdump-tree-tmlower" }
-
-struct TrueFalse
-{
- static constexpr bool v() { return true; }
-};
-
-int global;
-
-template<typename T> int foo()
-{
- __transaction_atomic noexcept(T::v()) { global += 1; }
- return __transaction_atomic noexcept(T::v()) (global + 2);
-}
-
-int f1()
-{
- return foo<TrueFalse>();
-}
-
-int f2()
-{
- return __transaction_atomic noexcept(true) (global + 3)
- + __transaction_atomic noexcept(TrueFalse::v()) (global + 4);
-}
-
-int f3()
-{
- __transaction_atomic noexcept(true) { global += 5; }
- __transaction_atomic noexcept(TrueFalse::v()) { global += 6; }
- return global;
-}
-
-/* { dg-final { scan-tree-dump-times "eh_must_not_throw" 6 "tmlower" } } */
-/* { dg-final { scan-tree-dump-times "ITM_RU" 6 "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmlower" } } */
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-2.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-2.C
deleted file mode 100644
index f9cbbb612..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-2.C
+++ /dev/null
@@ -1,20 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -std=c++0x" }
-
-// All of these must fail, because they are not constant expressions.
-template<typename T> int foo(int x, T t)
-{
- __transaction_atomic noexcept(t) { x++; } /* { dg-error "not a constant" } */
- return __transaction_atomic noexcept(t) (x+1); /* { dg-error "not a constant" } */
-}
-
-int bar(int x)
-{
- __transaction_atomic noexcept(x == 23) { x++; } /* { dg-error "not a constant" } */
- return __transaction_atomic noexcept(x == 42) (x+1); /* { dg-error "not a constant" } */
-}
-
-int f(int x)
-{
- return foo<bool>(x, true);
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-3.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-3.C
deleted file mode 100644
index 958290ef6..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-3.C
+++ /dev/null
@@ -1,40 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O -std=c++0x -fdump-tree-tmmark -fdump-tree-tmlower" }
-
-// Same as noexcept-1.C but all noexcepts are false.
-
-struct TrueFalse
-{
- static constexpr bool v() { return false; }
-};
-
-int global;
-
-template<typename T> int foo()
-{
- __transaction_atomic noexcept(T::v()) { global += 1; }
- return __transaction_atomic noexcept(T::v()) (global + 2);
-}
-
-int f1()
-{
- return foo<TrueFalse>();
-}
-
-int f2()
-{
- return __transaction_atomic noexcept(false) (global + 3)
- + __transaction_atomic noexcept(TrueFalse::v()) (global + 4);
-}
-
-int f3()
-{
- __transaction_atomic noexcept(false) { global += 5; }
- __transaction_atomic noexcept(TrueFalse::v()) { global += 6; }
- return global;
-}
-
-/* { dg-final { scan-tree-dump-times "eh_must_not_throw" 0 "tmlower" } } */
-/* { dg-final { scan-tree-dump-times "ITM_RU" 6 "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmlower" } } */
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-4.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-4.C
deleted file mode 100644
index 1166a1598..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-4.C
+++ /dev/null
@@ -1,35 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O -std=c++0x -fdump-tree-tmmark -fdump-tree-tmlower" }
-
-// Similar to noexcept-1.C but without an explicit (true) for noexcept.
-
-struct TrueFalse
-{
- static constexpr bool v() { return true; }
-};
-
-int global;
-
-template<typename T> int foo()
-{
- __transaction_atomic noexcept { global += 1; }
- return __transaction_atomic noexcept (global + 2)
- + __transaction_atomic noexcept (global + 3);
-}
-
-int f1()
-{
- return foo<TrueFalse>();
-}
-
-int f3()
-{
- __transaction_atomic noexcept { global += 4; }
- return __transaction_atomic noexcept (global + 5)
- + __transaction_atomic noexcept (global + 6);
-}
-
-/* { dg-final { scan-tree-dump-times "eh_must_not_throw" 6 "tmlower" } } */
-/* { dg-final { scan-tree-dump-times "ITM_RU" 6 "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmlower" } } */
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-5.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-5.C
deleted file mode 100644
index 44ef6177e..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/noexcept-5.C
+++ /dev/null
@@ -1,21 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O -std=c++0x -fdump-tree-tmmark -fdump-tree-tmlower" }
-
-int global;
-
-void f2(int x)
-{
- __transaction_atomic
- {
- __transaction_atomic noexcept(true)
- {
- global += 1;
- if (x)
- throw 23;
- }
- }
-}
-/* { dg-final { scan-tree-dump-times "eh_must_not_throw" 1 "tmlower" } } */
-/* { dg-final { scan-tree-dump-times "ITM_RU" 1 "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmlower" } } */
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/opt-1.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/opt-1.C
deleted file mode 100644
index 8dd41a5bf..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/opt-1.C
+++ /dev/null
@@ -1,9 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O" }
-
-struct S
-{
- virtual void f() __attribute__((transaction_safe));
-};
-
-void f(S *s) { __transaction_atomic { s->f(); } }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-2.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-2.C
deleted file mode 100644
index ab10c34ba..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-2.C
+++ /dev/null
@@ -1,30 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O1" }
-
-__attribute__((transaction_pure))
-inline int atomic_exchange_and_add(int dv )
-{
- int r;
- __asm__ ("" : "=r"(r));
- return r;
-}
-
-class sp_counted_base
-{
-public:
- __attribute__((transaction_safe))
- void release()
- {
- if( atomic_exchange_and_add(-1 ) == 1 )
- {
- }
- }
-};
-
-sp_counted_base *base;
-
-void here(){
- __transaction_atomic {
- base->release();
- }
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-3.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-3.C
deleted file mode 100644
index c8caee6c8..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-3.C
+++ /dev/null
@@ -1,69 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O0" }
-
-__attribute__((transaction_safe))
-void* operator new (__SIZE_TYPE__);
-
-__attribute__((transaction_pure))
-inline int atomic_exchange_and_add( int * pw, int dv )
-{
- int r;
- __asm__ ("" : "=r"(r));
- return r;
-}
-
-class sp_counted_base
-{
-protected:
- int use_count_; // #shared
-public:
- __attribute__((transaction_safe))
- virtual void dispose() = 0; // nothrow
-
- __attribute__((transaction_safe))
- void release() // nothrow
- {
- if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )
- {
- dispose();
- }
- }
-};
-
-class sp_counted_base_x86 : public sp_counted_base
-{
-public:
- void dispose()
- {
- release();
- }
-};
-
-class shared_count
-{
-private:
- sp_counted_base * pi_;
-public:
- int j;
- __attribute__((transaction_safe))
- shared_count(): pi_(new sp_counted_base_x86()), j(0)
- {
- }
- __attribute__((transaction_safe))
- ~shared_count() // nothrow
- {
- if( pi_ != 0 ) pi_->release();
- }
-};
-
-volatile int i = 1;
-shared_count * c;
-int main()
-{
- if ( i == 0) {
- __transaction_atomic {
- shared_count sc;
- }
- }
- return 0;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-4.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-4.C
deleted file mode 100644
index d1cb8d55a..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940-4.C
+++ /dev/null
@@ -1,69 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O1" }
-
-__attribute__((transaction_safe))
-void* operator new (__SIZE_TYPE__);
-
-__attribute__((transaction_pure))
-inline int atomic_exchange_and_add( int * pw, int dv )
-{
- int r;
- __asm__ ("" : "=r"(r));
- return r;
-}
-
-class sp_counted_base
-{
-protected:
- int use_count_; // #shared
-public:
- __attribute__((transaction_safe))
- virtual void dispose() = 0; // nothrow
-
- __attribute__((transaction_safe))
- void release() // nothrow
- {
- if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )
- {
- dispose();
- }
- }
-};
-
-class sp_counted_base_x86 : public sp_counted_base
-{
-public:
- void dispose()
- {
- release();
- }
-};
-
-class shared_count
-{
-private:
- sp_counted_base * pi_;
-public:
- int j;
- __attribute__((transaction_safe))
- shared_count(): pi_(new sp_counted_base_x86()), j(0)
- {
- }
- __attribute__((transaction_safe))
- ~shared_count() // nothrow
- {
- if( pi_ != 0 ) pi_->release();
- }
-};
-
-volatile int i = 1;
-shared_count * c;
-int main()
-{
- if ( i == 0) {
- __transaction_atomic {
- shared_count sc;
- }
- }
- return 0;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940.C
deleted file mode 100644
index 3e9a2c3f8..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr45940.C
+++ /dev/null
@@ -1,30 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O0" }
-
-__attribute__((transaction_pure))
-inline int atomic_exchange_and_add(int dv )
-{
- int r;
- __asm__ ("" : "=r"(r));
- return r;
-}
-
-class sp_counted_base
-{
-public:
- __attribute__((transaction_safe))
- void release()
- {
- if( atomic_exchange_and_add(-1 ) == 1 )
- {
- }
- }
-};
-
-sp_counted_base *base;
-
-void here(){
- __transaction_atomic {
- base->release();
- }
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46269.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46269.C
deleted file mode 100644
index b4b13af5b..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46269.C
+++ /dev/null
@@ -1,29 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-static inline void atomic_exchange_and_add()
-{
- __asm__ ("");
-}
-
-template<class T> class shared_ptr
-{
-public:
- shared_ptr( T * p )
- {
- atomic_exchange_and_add();
- }
-};
-
-class BuildingCompletedEvent
-{
- public:
- __attribute__((transaction_callable)) void updateBuildingSite(void);
- __attribute__((transaction_pure)) BuildingCompletedEvent();
-};
-
-void BuildingCompletedEvent::updateBuildingSite(void)
-{
- shared_ptr<BuildingCompletedEvent> event(new BuildingCompletedEvent());
-}
-
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46270.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46270.C
deleted file mode 100644
index 291e620a3..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46270.C
+++ /dev/null
@@ -1,27 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-#include <list>
-class Game
-{
-public:
- struct BuildProject
- {
- int posX;
- };
- std::list<BuildProject> buildProjects;
-};
-
-static Game game;
-static std::list<std::list<Game::BuildProject>::iterator> erasableBuildProjects;
-
-static void *buildProjectSyncStepConcurrently(int id, int localTeam)
-{
- __transaction_relaxed {
- std::list<std::list<Game::BuildProject>::iterator>::iterator it
- = erasableBuildProjects.begin();
- game.buildProjects.erase( (std::list<Game::BuildProject>
- ::iterator) *it);
- }
- return 0;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46300.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46300.C
deleted file mode 100644
index 7b3c613c3..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46300.C
+++ /dev/null
@@ -1,8 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-void foo(){
- __transaction_atomic {
- throw 5;
- }
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46567.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46567.C
deleted file mode 100644
index 2f0ef93f2..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46567.C
+++ /dev/null
@@ -1,2676 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O2" }
-
-typedef __PTRDIFF_TYPE__ ptrdiff_t;
-typedef __SIZE_TYPE__ size_t;
-namespace std __attribute__ ((__visibility__ ("default"))) {
- using ::ptrdiff_t;
- using ::size_t;
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- void
- __throw_bad_exception(void) __attribute__((__noreturn__));
- void
- __throw_bad_alloc(void) __attribute__((__noreturn__));
- void
- __throw_bad_cast(void) __attribute__((__noreturn__));
- void
- __throw_bad_typeid(void) __attribute__((__noreturn__));
- void
- __throw_logic_error(const char*) __attribute__((__noreturn__));
- void
- __throw_domain_error(const char*) __attribute__((__noreturn__));
- void
- __throw_invalid_argument(const char*) __attribute__((__noreturn__));
- void
- __throw_length_error(const char*) __attribute__((__noreturn__));
- void
- __throw_out_of_range(const char*) __attribute__((__noreturn__));
- void
- __throw_runtime_error(const char*) __attribute__((__noreturn__));
- void
- __throw_range_error(const char*) __attribute__((__noreturn__));
- void
- __throw_overflow_error(const char*) __attribute__((__noreturn__));
- void
- __throw_underflow_error(const char*) __attribute__((__noreturn__));
- void
- __throw_ios_failure(const char*) __attribute__((__noreturn__));
- void
- __throw_system_error(int) __attribute__((__noreturn__));
-}
-
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
- template<typename _Iterator, typename _Container>
- class __normal_iterator;
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- struct __true_type { };
- struct __false_type { };
- template<bool>
- struct __truth_type
- { typedef __false_type __type; };
- template<>
- struct __truth_type<true>
- { typedef __true_type __type; };
- template<class _Sp, class _Tp>
- struct __traitor
- {
- enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
- typedef typename __truth_type<__value>::__type __type;
- };
- template<typename, typename>
- struct __are_same
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
- template<typename _Tp>
- struct __are_same<_Tp, _Tp>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<typename _Tp>
- struct __is_void
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
- template<>
- struct __is_void<void>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<typename _Tp>
- struct __is_integer
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
- template<>
- struct __is_integer<bool>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<char>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<signed char>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<unsigned char>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<wchar_t>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<short>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<unsigned short>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<int>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<unsigned int>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<long>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<unsigned long>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<long long>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_integer<unsigned long long>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<typename _Tp>
- struct __is_floating
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
- template<>
- struct __is_floating<float>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_floating<double>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_floating<long double>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<typename _Tp>
- struct __is_pointer
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
- template<typename _Tp>
- struct __is_pointer<_Tp*>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<typename _Tp>
- struct __is_normal_iterator
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
- template<typename _Iterator, typename _Container>
- struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
- _Container> >
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<typename _Tp>
- struct __is_arithmetic
- : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
- { };
- template<typename _Tp>
- struct __is_fundamental
- : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
- { };
- template<typename _Tp>
- struct __is_scalar
- : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
- { };
- template<typename _Tp>
- struct __is_char
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
- template<>
- struct __is_char<char>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_char<wchar_t>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<typename _Tp>
- struct __is_byte
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
- template<>
- struct __is_byte<char>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_byte<signed char>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<>
- struct __is_byte<unsigned char>
- {
- enum { __value = 1 };
- typedef __true_type __type;
- };
- template<typename _Tp>
- struct __is_move_iterator
- {
- enum { __value = 0 };
- typedef __false_type __type;
- };
-}
-
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
- template<bool, typename>
- struct __enable_if
- { };
- template<typename _Tp>
- struct __enable_if<true, _Tp>
- { typedef _Tp __type; };
- template<bool _Cond, typename _Iftrue, typename _Iffalse>
- struct __conditional_type
- { typedef _Iftrue __type; };
- template<typename _Iftrue, typename _Iffalse>
- struct __conditional_type<false, _Iftrue, _Iffalse>
- { typedef _Iffalse __type; };
- template<typename _Tp>
- struct __add_unsigned
- {
- private:
- typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
- public:
- typedef typename __if_type::__type __type;
- };
- template<>
- struct __add_unsigned<char>
- { typedef unsigned char __type; };
- template<>
- struct __add_unsigned<signed char>
- { typedef unsigned char __type; };
- template<>
- struct __add_unsigned<short>
- { typedef unsigned short __type; };
- template<>
- struct __add_unsigned<int>
- { typedef unsigned int __type; };
- template<>
- struct __add_unsigned<long>
- { typedef unsigned long __type; };
- template<>
- struct __add_unsigned<long long>
- { typedef unsigned long long __type; };
- template<>
- struct __add_unsigned<bool>;
- template<>
- struct __add_unsigned<wchar_t>;
- template<typename _Tp>
- struct __remove_unsigned
- {
- private:
- typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
- public:
- typedef typename __if_type::__type __type;
- };
- template<>
- struct __remove_unsigned<char>
- { typedef signed char __type; };
- template<>
- struct __remove_unsigned<unsigned char>
- { typedef signed char __type; };
- template<>
- struct __remove_unsigned<unsigned short>
- { typedef short __type; };
- template<>
- struct __remove_unsigned<unsigned int>
- { typedef int __type; };
- template<>
- struct __remove_unsigned<unsigned long>
- { typedef long __type; };
- template<>
- struct __remove_unsigned<unsigned long long>
- { typedef long long __type; };
- template<>
- struct __remove_unsigned<bool>;
- template<>
- struct __remove_unsigned<wchar_t>;
- template<typename _Type>
- inline bool
- __is_null_pointer(_Type* __ptr)
- { return __ptr == 0; }
- template<typename _Type>
- inline bool
- __is_null_pointer(_Type)
- { return false; }
- template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
- struct __promote
- { typedef double __type; };
- template<typename _Tp>
- struct __promote<_Tp, false>
- { typedef _Tp __type; };
- template<typename _Tp, typename _Up>
- struct __promote_2
- {
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
- public:
- typedef __typeof__(__type1() + __type2()) __type;
- };
- template<typename _Tp, typename _Up, typename _Vp>
- struct __promote_3
- {
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
- typedef typename __promote<_Vp>::__type __type3;
- public:
- typedef __typeof__(__type1() + __type2() + __type3()) __type;
- };
- template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
- struct __promote_4
- {
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
- typedef typename __promote<_Vp>::__type __type3;
- typedef typename __promote<_Wp>::__type __type4;
- public:
- typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
- };
-}
-
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
- template<typename _Value>
- struct __numeric_traits_integer
- {
- static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0);
- static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0);
- static const bool __is_signed = ((_Value)(-1) < 0);
- static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0));
- };
- template<typename _Value>
- const _Value __numeric_traits_integer<_Value>::__min;
- template<typename _Value>
- const _Value __numeric_traits_integer<_Value>::__max;
- template<typename _Value>
- const bool __numeric_traits_integer<_Value>::__is_signed;
- template<typename _Value>
- const int __numeric_traits_integer<_Value>::__digits;
- template<typename _Value>
- struct __numeric_traits_floating
- {
- static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 64) * 3010 / 10000);
- static const bool __is_signed = true;
- static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 18);
- static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 4932);
- };
- template<typename _Value>
- const int __numeric_traits_floating<_Value>::__max_digits10;
- template<typename _Value>
- const bool __numeric_traits_floating<_Value>::__is_signed;
- template<typename _Value>
- const int __numeric_traits_floating<_Value>::__digits10;
- template<typename _Value>
- const int __numeric_traits_floating<_Value>::__max_exponent10;
- template<typename _Value>
- struct __numeric_traits
- : public __conditional_type<std::__is_integer<_Value>::__value,
- __numeric_traits_integer<_Value>,
- __numeric_traits_floating<_Value> >::__type
- { };
-}
-
-
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Tp>
- inline void
- swap(_Tp& __a, _Tp& __b)
- {
-
- _Tp __tmp = (__a);
- __a = (__b);
- __b = (__tmp);
- }
- template<typename _Tp, size_t _Nm>
- inline void
- swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
- {
- for (size_t __n = 0; __n < _Nm; ++__n)
- swap(__a[__n], __b[__n]);
- }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<class _T1, class _T2>
- struct pair
- {
- typedef _T1 first_type;
- typedef _T2 second_type;
- _T1 first;
- _T2 second;
- pair()
- : first(), second() { }
- pair(const _T1& __a, const _T2& __b)
- : first(__a), second(__b) { }
- template<class _U1, class _U2>
- pair(const pair<_U1, _U2>& __p)
- : first(__p.first),
- second(__p.second) { }
- };
- template<class _T1, class _T2>
- inline bool
- operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
- { return __x.first == __y.first && __x.second == __y.second; }
- template<class _T1, class _T2>
- inline bool
- operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
- { return __x.first < __y.first
- || (!(__y.first < __x.first) && __x.second < __y.second); }
- template<class _T1, class _T2>
- inline bool
- operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
- { return !(__x == __y); }
- template<class _T1, class _T2>
- inline bool
- operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
- { return __y < __x; }
- template<class _T1, class _T2>
- inline bool
- operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
- { return !(__y < __x); }
- template<class _T1, class _T2>
- inline bool
- operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
- { return !(__x < __y); }
- template<class _T1, class _T2>
- inline pair<_T1, _T2>
- make_pair(_T1 __x, _T2 __y)
- { return pair<_T1, _T2>(__x, __y); }
-}
-
-
-namespace std __attribute__ ((__visibility__ ("default"))) {
- struct input_iterator_tag { };
- struct output_iterator_tag { };
- struct forward_iterator_tag : public input_iterator_tag { };
- struct bidirectional_iterator_tag : public forward_iterator_tag { };
- struct random_access_iterator_tag : public bidirectional_iterator_tag { };
- template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
- typename _Pointer = _Tp*, typename _Reference = _Tp&>
- struct iterator
- {
- typedef _Category iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
- };
- template<typename _Iterator>
- struct iterator_traits
- {
- typedef typename _Iterator::iterator_category iterator_category;
- typedef typename _Iterator::value_type value_type;
- typedef typename _Iterator::difference_type difference_type;
- typedef typename _Iterator::pointer pointer;
- typedef typename _Iterator::reference reference;
- };
- template<typename _Tp>
- struct iterator_traits<_Tp*>
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
- };
- template<typename _Tp>
- struct iterator_traits<const _Tp*>
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- typedef const _Tp* pointer;
- typedef const _Tp& reference;
- };
- template<typename _Iter>
- inline typename iterator_traits<_Iter>::iterator_category
- __iterator_category(const _Iter&)
- { return typename iterator_traits<_Iter>::iterator_category(); }
-}
-
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _InputIterator>
- inline typename iterator_traits<_InputIterator>::difference_type
- __distance(_InputIterator __first, _InputIterator __last,
- input_iterator_tag)
- {
-
- typename iterator_traits<_InputIterator>::difference_type __n = 0;
- while (__first != __last)
- {
- ++__first;
- ++__n;
- }
- return __n;
- }
- template<typename _RandomAccessIterator>
- inline typename iterator_traits<_RandomAccessIterator>::difference_type
- __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
- random_access_iterator_tag)
- {
-
- return __last - __first;
- }
- template<typename _InputIterator>
- inline typename iterator_traits<_InputIterator>::difference_type
- distance(_InputIterator __first, _InputIterator __last)
- {
- return std::__distance(__first, __last,
- std::__iterator_category(__first));
- }
- template<typename _InputIterator, typename _Distance>
- inline void
- __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
- {
-
- while (__n--)
- ++__i;
- }
- template<typename _BidirectionalIterator, typename _Distance>
- inline void
- __advance(_BidirectionalIterator& __i, _Distance __n,
- bidirectional_iterator_tag)
- {
-
- if (__n > 0)
- while (__n--)
- ++__i;
- else
- while (__n++)
- --__i;
- }
- template<typename _RandomAccessIterator, typename _Distance>
- inline void
- __advance(_RandomAccessIterator& __i, _Distance __n,
- random_access_iterator_tag)
- {
-
- __i += __n;
- }
- template<typename _InputIterator, typename _Distance>
- inline void
- advance(_InputIterator& __i, _Distance __n)
- {
- typename iterator_traits<_InputIterator>::difference_type __d = __n;
- std::__advance(__i, __d, std::__iterator_category(__i));
- }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Iterator>
- class reverse_iterator
- : public iterator<typename iterator_traits<_Iterator>::iterator_category,
- typename iterator_traits<_Iterator>::value_type,
- typename iterator_traits<_Iterator>::difference_type,
- typename iterator_traits<_Iterator>::pointer,
- typename iterator_traits<_Iterator>::reference>
- {
- protected:
- _Iterator current;
- public:
- typedef _Iterator iterator_type;
- typedef typename iterator_traits<_Iterator>::difference_type
- difference_type;
- typedef typename iterator_traits<_Iterator>::reference reference;
- typedef typename iterator_traits<_Iterator>::pointer pointer;
- public:
- reverse_iterator() : current() { }
- explicit
- reverse_iterator(iterator_type __x) : current(__x) { }
- reverse_iterator(const reverse_iterator& __x)
- : current(__x.current) { }
- template<typename _Iter>
- reverse_iterator(const reverse_iterator<_Iter>& __x)
- : current(__x.base()) { }
- iterator_type
- base() const
- { return current; }
- reference
- operator*() const
- {
- _Iterator __tmp = current;
- return *--__tmp;
- }
- pointer
- operator->() const
- { return &(operator*()); }
- reverse_iterator&
- operator++()
- {
- --current;
- return *this;
- }
- reverse_iterator
- operator++(int)
- {
- reverse_iterator __tmp = *this;
- --current;
- return __tmp;
- }
- reverse_iterator&
- operator--()
- {
- ++current;
- return *this;
- }
- reverse_iterator
- operator--(int)
- {
- reverse_iterator __tmp = *this;
- ++current;
- return __tmp;
- }
- reverse_iterator
- operator+(difference_type __n) const
- { return reverse_iterator(current - __n); }
- reverse_iterator&
- operator+=(difference_type __n)
- {
- current -= __n;
- return *this;
- }
- reverse_iterator
- operator-(difference_type __n) const
- { return reverse_iterator(current + __n); }
- reverse_iterator&
- operator-=(difference_type __n)
- {
- current += __n;
- return *this;
- }
- reference
- operator[](difference_type __n) const
- { return *(*this + __n); }
- };
- template<typename _Iterator>
- inline bool
- operator==(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y)
- { return __x.base() == __y.base(); }
- template<typename _Iterator>
- inline bool
- operator<(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y)
- { return __y.base() < __x.base(); }
- template<typename _Iterator>
- inline bool
- operator!=(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y)
- { return !(__x == __y); }
- template<typename _Iterator>
- inline bool
- operator>(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y)
- { return __y < __x; }
- template<typename _Iterator>
- inline bool
- operator<=(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y)
- { return !(__y < __x); }
- template<typename _Iterator>
- inline bool
- operator>=(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y)
- { return !(__x < __y); }
- template<typename _Iterator>
- inline typename reverse_iterator<_Iterator>::difference_type
- operator-(const reverse_iterator<_Iterator>& __x,
- const reverse_iterator<_Iterator>& __y)
- { return __y.base() - __x.base(); }
- template<typename _Iterator>
- inline reverse_iterator<_Iterator>
- operator+(typename reverse_iterator<_Iterator>::difference_type __n,
- const reverse_iterator<_Iterator>& __x)
- { return reverse_iterator<_Iterator>(__x.base() - __n); }
- template<typename _IteratorL, typename _IteratorR>
- inline bool
- operator==(const reverse_iterator<_IteratorL>& __x,
- const reverse_iterator<_IteratorR>& __y)
- { return __x.base() == __y.base(); }
- template<typename _IteratorL, typename _IteratorR>
- inline bool
- operator<(const reverse_iterator<_IteratorL>& __x,
- const reverse_iterator<_IteratorR>& __y)
- { return __y.base() < __x.base(); }
- template<typename _IteratorL, typename _IteratorR>
- inline bool
- operator!=(const reverse_iterator<_IteratorL>& __x,
- const reverse_iterator<_IteratorR>& __y)
- { return !(__x == __y); }
- template<typename _IteratorL, typename _IteratorR>
- inline bool
- operator>(const reverse_iterator<_IteratorL>& __x,
- const reverse_iterator<_IteratorR>& __y)
- { return __y < __x; }
- template<typename _IteratorL, typename _IteratorR>
- inline bool
- operator<=(const reverse_iterator<_IteratorL>& __x,
- const reverse_iterator<_IteratorR>& __y)
- { return !(__y < __x); }
- template<typename _IteratorL, typename _IteratorR>
- inline bool
- operator>=(const reverse_iterator<_IteratorL>& __x,
- const reverse_iterator<_IteratorR>& __y)
- { return !(__x < __y); }
- template<typename _IteratorL, typename _IteratorR>
- inline typename reverse_iterator<_IteratorL>::difference_type
- operator-(const reverse_iterator<_IteratorL>& __x,
- const reverse_iterator<_IteratorR>& __y)
- { return __y.base() - __x.base(); }
- template<typename _Container>
- class back_insert_iterator
- : public iterator<output_iterator_tag, void, void, void, void>
- {
- protected:
- _Container* container;
- public:
- typedef _Container container_type;
- explicit
- back_insert_iterator(_Container& __x) : container(&__x) { }
- back_insert_iterator&
- operator=(typename _Container::const_reference __value)
- {
- container->push_back(__value);
- return *this;
- }
- back_insert_iterator&
- operator*()
- { return *this; }
- back_insert_iterator&
- operator++()
- { return *this; }
- back_insert_iterator
- operator++(int)
- { return *this; }
- };
- template<typename _Container>
- inline back_insert_iterator<_Container>
- back_inserter(_Container& __x)
- { return back_insert_iterator<_Container>(__x); }
- template<typename _Container>
- class front_insert_iterator
- : public iterator<output_iterator_tag, void, void, void, void>
- {
- protected:
- _Container* container;
- public:
- typedef _Container container_type;
- explicit front_insert_iterator(_Container& __x) : container(&__x) { }
- front_insert_iterator&
- operator=(typename _Container::const_reference __value)
- {
- container->push_front(__value);
- return *this;
- }
- front_insert_iterator&
- operator*()
- { return *this; }
- front_insert_iterator&
- operator++()
- { return *this; }
- front_insert_iterator
- operator++(int)
- { return *this; }
- };
- template<typename _Container>
- inline front_insert_iterator<_Container>
- front_inserter(_Container& __x)
- { return front_insert_iterator<_Container>(__x); }
- template<typename _Container>
- class insert_iterator
- : public iterator<output_iterator_tag, void, void, void, void>
- {
- protected:
- _Container* container;
- typename _Container::iterator iter;
- public:
- typedef _Container container_type;
- insert_iterator(_Container& __x, typename _Container::iterator __i)
- : container(&__x), iter(__i) {}
- insert_iterator&
- operator=(typename _Container::const_reference __value)
- {
- iter = container->insert(iter, __value);
- ++iter;
- return *this;
- }
- insert_iterator&
- operator*()
- { return *this; }
- insert_iterator&
- operator++()
- { return *this; }
- insert_iterator&
- operator++(int)
- { return *this; }
- };
- template<typename _Container, typename _Iterator>
- inline insert_iterator<_Container>
- inserter(_Container& __x, _Iterator __i)
- {
- return insert_iterator<_Container>(__x,
- typename _Container::iterator(__i));
- }
-}
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
- using std::iterator_traits;
- using std::iterator;
- template<typename _Iterator, typename _Container>
- class __normal_iterator
- {
- protected:
- _Iterator _M_current;
- public:
- typedef _Iterator iterator_type;
- typedef typename iterator_traits<_Iterator>::iterator_category
- iterator_category;
- typedef typename iterator_traits<_Iterator>::value_type value_type;
- typedef typename iterator_traits<_Iterator>::difference_type
- difference_type;
- typedef typename iterator_traits<_Iterator>::reference reference;
- typedef typename iterator_traits<_Iterator>::pointer pointer;
- __normal_iterator() : _M_current(_Iterator()) { }
- explicit
- __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
- template<typename _Iter>
- __normal_iterator(const __normal_iterator<_Iter,
- typename __enable_if<
- (std::__are_same<_Iter, typename _Container::pointer>::__value),
- _Container>::__type>& __i)
- : _M_current(__i.base()) { }
- reference
- operator*() const
- { return *_M_current; }
- pointer
- operator->() const
- { return _M_current; }
- __normal_iterator&
- operator++()
- {
- ++_M_current;
- return *this;
- }
- __normal_iterator
- operator++(int)
- { return __normal_iterator(_M_current++); }
- __normal_iterator&
- operator--()
- {
- --_M_current;
- return *this;
- }
- __normal_iterator
- operator--(int)
- { return __normal_iterator(_M_current--); }
- reference
- operator[](const difference_type& __n) const
- { return _M_current[__n]; }
- __normal_iterator&
- operator+=(const difference_type& __n)
- { _M_current += __n; return *this; }
- __normal_iterator
- operator+(const difference_type& __n) const
- { return __normal_iterator(_M_current + __n); }
- __normal_iterator&
- operator-=(const difference_type& __n)
- { _M_current -= __n; return *this; }
- __normal_iterator
- operator-(const difference_type& __n) const
- { return __normal_iterator(_M_current - __n); }
- const _Iterator&
- base() const
- { return _M_current; }
- };
- template<typename _IteratorL, typename _IteratorR, typename _Container>
- inline bool
- operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
- const __normal_iterator<_IteratorR, _Container>& __rhs)
- { return __lhs.base() == __rhs.base(); }
- template<typename _Iterator, typename _Container>
- inline bool
- operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
- const __normal_iterator<_Iterator, _Container>& __rhs)
- { return __lhs.base() == __rhs.base(); }
- template<typename _IteratorL, typename _IteratorR, typename _Container>
- inline bool
- operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
- const __normal_iterator<_IteratorR, _Container>& __rhs)
- { return __lhs.base() != __rhs.base(); }
- template<typename _Iterator, typename _Container>
- inline bool
- operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
- const __normal_iterator<_Iterator, _Container>& __rhs)
- { return __lhs.base() != __rhs.base(); }
- template<typename _IteratorL, typename _IteratorR, typename _Container>
- inline bool
- operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
- const __normal_iterator<_IteratorR, _Container>& __rhs)
- { return __lhs.base() < __rhs.base(); }
- template<typename _Iterator, typename _Container>
- inline bool
- operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
- const __normal_iterator<_Iterator, _Container>& __rhs)
- { return __lhs.base() < __rhs.base(); }
- template<typename _IteratorL, typename _IteratorR, typename _Container>
- inline bool
- operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
- const __normal_iterator<_IteratorR, _Container>& __rhs)
- { return __lhs.base() > __rhs.base(); }
- template<typename _Iterator, typename _Container>
- inline bool
- operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
- const __normal_iterator<_Iterator, _Container>& __rhs)
- { return __lhs.base() > __rhs.base(); }
- template<typename _IteratorL, typename _IteratorR, typename _Container>
- inline bool
- operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
- const __normal_iterator<_IteratorR, _Container>& __rhs)
- { return __lhs.base() <= __rhs.base(); }
- template<typename _Iterator, typename _Container>
- inline bool
- operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
- const __normal_iterator<_Iterator, _Container>& __rhs)
- { return __lhs.base() <= __rhs.base(); }
- template<typename _IteratorL, typename _IteratorR, typename _Container>
- inline bool
- operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
- const __normal_iterator<_IteratorR, _Container>& __rhs)
- { return __lhs.base() >= __rhs.base(); }
- template<typename _Iterator, typename _Container>
- inline bool
- operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
- const __normal_iterator<_Iterator, _Container>& __rhs)
- { return __lhs.base() >= __rhs.base(); }
- template<typename _IteratorL, typename _IteratorR, typename _Container>
- inline typename __normal_iterator<_IteratorL, _Container>::difference_type
- operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
- const __normal_iterator<_IteratorR, _Container>& __rhs)
- { return __lhs.base() - __rhs.base(); }
- template<typename _Iterator, typename _Container>
- inline typename __normal_iterator<_Iterator, _Container>::difference_type
- operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
- const __normal_iterator<_Iterator, _Container>& __rhs)
- { return __lhs.base() - __rhs.base(); }
- template<typename _Iterator, typename _Container>
- inline __normal_iterator<_Iterator, _Container>
- operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
- __n, const __normal_iterator<_Iterator, _Container>& __i)
- { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
-}
-namespace std
-{
- namespace __debug { }
-}
-namespace __gnu_debug
-{
- using namespace std::__debug;
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<bool _BoolType>
- struct __iter_swap
- {
- template<typename _ForwardIterator1, typename _ForwardIterator2>
- static void
- iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
- {
- typedef typename iterator_traits<_ForwardIterator1>::value_type
- _ValueType1;
- _ValueType1 __tmp = (*__a);
- *__a = (*__b);
- *__b = (__tmp);
- }
- };
- template<>
- struct __iter_swap<true>
- {
- template<typename _ForwardIterator1, typename _ForwardIterator2>
- static void
- iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
- {
- swap(*__a, *__b);
- }
- };
- template<typename _ForwardIterator1, typename _ForwardIterator2>
- inline void
- iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
- {
- typedef typename iterator_traits<_ForwardIterator1>::value_type
- _ValueType1;
- typedef typename iterator_traits<_ForwardIterator2>::value_type
- _ValueType2;
-
-
-
-
- typedef typename iterator_traits<_ForwardIterator1>::reference
- _ReferenceType1;
- typedef typename iterator_traits<_ForwardIterator2>::reference
- _ReferenceType2;
- std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value
- && __are_same<_ValueType1&, _ReferenceType1>::__value
- && __are_same<_ValueType2&, _ReferenceType2>::__value>::
- iter_swap(__a, __b);
- }
- template<typename _ForwardIterator1, typename _ForwardIterator2>
- _ForwardIterator2
- swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
- _ForwardIterator2 __first2)
- {
-
-
- ;
- for (; __first1 != __last1; ++__first1, ++__first2)
- std::iter_swap(__first1, __first2);
- return __first2;
- }
- template<typename _Tp>
- inline const _Tp&
- min(const _Tp& __a, const _Tp& __b)
- {
-
- if (__b < __a)
- return __b;
- return __a;
- }
- template<typename _Tp>
- inline const _Tp&
- max(const _Tp& __a, const _Tp& __b)
- {
-
- if (__a < __b)
- return __b;
- return __a;
- }
- template<typename _Tp, typename _Compare>
- inline const _Tp&
- min(const _Tp& __a, const _Tp& __b, _Compare __comp)
- {
- if (__comp(__b, __a))
- return __b;
- return __a;
- }
- template<typename _Tp, typename _Compare>
- inline const _Tp&
- max(const _Tp& __a, const _Tp& __b, _Compare __comp)
- {
- if (__comp(__a, __b))
- return __b;
- return __a;
- }
- template<typename _Iterator,
- bool _IsNormal = __is_normal_iterator<_Iterator>::__value>
- struct __niter_base
- {
- static _Iterator
- __b(_Iterator __it)
- { return __it; }
- };
- template<typename _Iterator>
- struct __niter_base<_Iterator, true>
- {
- static typename _Iterator::iterator_type
- __b(_Iterator __it)
- { return __it.base(); }
- };
- template<typename _Iterator,
- bool _IsMove = __is_move_iterator<_Iterator>::__value>
- struct __miter_base
- {
- static _Iterator
- __b(_Iterator __it)
- { return __it; }
- };
- template<typename _Iterator>
- struct __miter_base<_Iterator, true>
- {
- static typename _Iterator::iterator_type
- __b(_Iterator __it)
- { return __it.base(); }
- };
- template<bool, bool, typename>
- struct __copy_move
- {
- template<typename _II, typename _OI>
- static _OI
- __copy_m(_II __first, _II __last, _OI __result)
- {
- for (; __first != __last; ++__result, ++__first)
- *__result = *__first;
- return __result;
- }
- };
- template<>
- struct __copy_move<false, false, random_access_iterator_tag>
- {
- template<typename _II, typename _OI>
- static _OI
- __copy_m(_II __first, _II __last, _OI __result)
- {
- typedef typename iterator_traits<_II>::difference_type _Distance;
- for(_Distance __n = __last - __first; __n > 0; --__n)
- {
- *__result = *__first;
- ++__first;
- ++__result;
- }
- return __result;
- }
- };
- template<bool _IsMove>
- struct __copy_move<_IsMove, true, random_access_iterator_tag>
- {
- template<typename _Tp>
- static _Tp*
- __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
- {
- __builtin_memmove(__result, __first,
- sizeof(_Tp) * (__last - __first));
- return __result + (__last - __first);
- }
- };
- template<bool _IsMove, typename _II, typename _OI>
- inline _OI
- __copy_move_a(_II __first, _II __last, _OI __result)
- {
- typedef typename iterator_traits<_II>::value_type _ValueTypeI;
- typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
- typedef typename iterator_traits<_II>::iterator_category _Category;
- const bool __simple = (__is_pod(_ValueTypeI)
- && __is_pointer<_II>::__value
- && __is_pointer<_OI>::__value
- && __are_same<_ValueTypeI, _ValueTypeO>::__value);
- return std::__copy_move<_IsMove, __simple,
- _Category>::__copy_m(__first, __last, __result);
- }
- template<typename _CharT>
- struct char_traits;
- template<typename _CharT, typename _Traits>
- class istreambuf_iterator;
- template<typename _CharT, typename _Traits>
- class ostreambuf_iterator;
- template<bool _IsMove, typename _CharT>
- typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
- ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
- __copy_move_a2(_CharT*, _CharT*,
- ostreambuf_iterator<_CharT, char_traits<_CharT> >);
- template<bool _IsMove, typename _CharT>
- typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
- ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
- __copy_move_a2(const _CharT*, const _CharT*,
- ostreambuf_iterator<_CharT, char_traits<_CharT> >);
- template<bool _IsMove, typename _CharT>
- typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
- _CharT*>::__type
- __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,
- istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
- template<bool _IsMove, typename _II, typename _OI>
- inline _OI
- __copy_move_a2(_II __first, _II __last, _OI __result)
- {
- return _OI(std::__copy_move_a<_IsMove>
- (std::__niter_base<_II>::__b(__first),
- std::__niter_base<_II>::__b(__last),
- std::__niter_base<_OI>::__b(__result)));
- }
- template<typename _II, typename _OI>
- inline _OI
- copy(_II __first, _II __last, _OI __result)
- {
-
-
- ;
- return (std::__copy_move_a2<__is_move_iterator<_II>::__value>
- (std::__miter_base<_II>::__b(__first),
- std::__miter_base<_II>::__b(__last), __result));
- }
- template<bool, bool, typename>
- struct __copy_move_backward
- {
- template<typename _BI1, typename _BI2>
- static _BI2
- __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
- {
- while (__first != __last)
- *--__result = *--__last;
- return __result;
- }
- };
- template<>
- struct __copy_move_backward<false, false, random_access_iterator_tag>
- {
- template<typename _BI1, typename _BI2>
- static _BI2
- __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
- {
- typename iterator_traits<_BI1>::difference_type __n;
- for (__n = __last - __first; __n > 0; --__n)
- *--__result = *--__last;
- return __result;
- }
- };
- template<bool _IsMove>
- struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
- {
- template<typename _Tp>
- static _Tp*
- __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
- {
- const ptrdiff_t _Num = __last - __first;
- __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
- return __result - _Num;
- }
- };
- template<bool _IsMove, typename _BI1, typename _BI2>
- inline _BI2
- __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result)
- {
- typedef typename iterator_traits<_BI1>::value_type _ValueType1;
- typedef typename iterator_traits<_BI2>::value_type _ValueType2;
- typedef typename iterator_traits<_BI1>::iterator_category _Category;
- const bool __simple = (__is_pod(_ValueType1)
- && __is_pointer<_BI1>::__value
- && __is_pointer<_BI2>::__value
- && __are_same<_ValueType1, _ValueType2>::__value);
- return std::__copy_move_backward<_IsMove, __simple,
- _Category>::__copy_move_b(__first,
- __last,
- __result);
- }
- template<bool _IsMove, typename _BI1, typename _BI2>
- inline _BI2
- __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)
- {
- return _BI2(std::__copy_move_backward_a<_IsMove>
- (std::__niter_base<_BI1>::__b(__first),
- std::__niter_base<_BI1>::__b(__last),
- std::__niter_base<_BI2>::__b(__result)));
- }
- template<typename _BI1, typename _BI2>
- inline _BI2
- copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
- {
-
-
-
- ;
- return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value>
- (std::__miter_base<_BI1>::__b(__first),
- std::__miter_base<_BI1>::__b(__last), __result));
- }
- template<typename _ForwardIterator, typename _Tp>
- inline typename
- __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
- __fill_a(_ForwardIterator __first, _ForwardIterator __last,
- const _Tp& __value)
- {
- for (; __first != __last; ++__first)
- *__first = __value;
- }
- template<typename _ForwardIterator, typename _Tp>
- inline typename
- __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
- __fill_a(_ForwardIterator __first, _ForwardIterator __last,
- const _Tp& __value)
- {
- const _Tp __tmp = __value;
- for (; __first != __last; ++__first)
- *__first = __tmp;
- }
- template<typename _Tp>
- inline typename
- __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
- __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
- {
- const _Tp __tmp = __c;
- __builtin_memset(__first, static_cast<unsigned char>(__tmp),
- __last - __first);
- }
- template<typename _ForwardIterator, typename _Tp>
- inline void
- fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
- {
-
- ;
- std::__fill_a(std::__niter_base<_ForwardIterator>::__b(__first),
- std::__niter_base<_ForwardIterator>::__b(__last), __value);
- }
- template<typename _OutputIterator, typename _Size, typename _Tp>
- inline typename
- __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
- __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
- {
- for (; __n > 0; --__n, ++__first)
- *__first = __value;
- return __first;
- }
- template<typename _OutputIterator, typename _Size, typename _Tp>
- inline typename
- __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type
- __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
- {
- const _Tp __tmp = __value;
- for (; __n > 0; --__n, ++__first)
- *__first = __tmp;
- return __first;
- }
- template<typename _Size, typename _Tp>
- inline typename
- __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type
- __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c)
- {
- std::__fill_a(__first, __first + __n, __c);
- return __first + __n;
- }
- template<typename _OI, typename _Size, typename _Tp>
- inline _OI
- fill_n(_OI __first, _Size __n, const _Tp& __value)
- {
-
- return _OI(std::__fill_n_a(std::__niter_base<_OI>::__b(__first),
- __n, __value));
- }
- template<bool _BoolType>
- struct __equal
- {
- template<typename _II1, typename _II2>
- static bool
- equal(_II1 __first1, _II1 __last1, _II2 __first2)
- {
- for (; __first1 != __last1; ++__first1, ++__first2)
- if (!(*__first1 == *__first2))
- return false;
- return true;
- }
- };
- template<>
- struct __equal<true>
- {
- template<typename _Tp>
- static bool
- equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
- {
- return !__builtin_memcmp(__first1, __first2, sizeof(_Tp)
- * (__last1 - __first1));
- }
- };
- template<typename _II1, typename _II2>
- inline bool
- __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)
- {
- typedef typename iterator_traits<_II1>::value_type _ValueType1;
- typedef typename iterator_traits<_II2>::value_type _ValueType2;
- const bool __simple = (__is_integer<_ValueType1>::__value
- && __is_pointer<_II1>::__value
- && __is_pointer<_II2>::__value
- && __are_same<_ValueType1, _ValueType2>::__value);
- return std::__equal<__simple>::equal(__first1, __last1, __first2);
- }
- template<typename, typename>
- struct __lc_rai
- {
- template<typename _II1, typename _II2>
- static _II1
- __newlast1(_II1, _II1 __last1, _II2, _II2)
- { return __last1; }
- template<typename _II>
- static bool
- __cnd2(_II __first, _II __last)
- { return __first != __last; }
- };
- template<>
- struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>
- {
- template<typename _RAI1, typename _RAI2>
- static _RAI1
- __newlast1(_RAI1 __first1, _RAI1 __last1,
- _RAI2 __first2, _RAI2 __last2)
- {
- const typename iterator_traits<_RAI1>::difference_type
- __diff1 = __last1 - __first1;
- const typename iterator_traits<_RAI2>::difference_type
- __diff2 = __last2 - __first2;
- return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
- }
- template<typename _RAI>
- static bool
- __cnd2(_RAI, _RAI)
- { return true; }
- };
- template<bool _BoolType>
- struct __lexicographical_compare
- {
- template<typename _II1, typename _II2>
- static bool __lc(_II1, _II1, _II2, _II2);
- };
- template<bool _BoolType>
- template<typename _II1, typename _II2>
- bool
- __lexicographical_compare<_BoolType>::
- __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
- {
- typedef typename iterator_traits<_II1>::iterator_category _Category1;
- typedef typename iterator_traits<_II2>::iterator_category _Category2;
- typedef std::__lc_rai<_Category1, _Category2> __rai_type;
- __last1 = __rai_type::__newlast1(__first1, __last1,
- __first2, __last2);
- for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
- ++__first1, ++__first2)
- {
- if (*__first1 < *__first2)
- return true;
- if (*__first2 < *__first1)
- return false;
- }
- return __first1 == __last1 && __first2 != __last2;
- }
- template<>
- struct __lexicographical_compare<true>
- {
- template<typename _Tp, typename _Up>
- static bool
- __lc(const _Tp* __first1, const _Tp* __last1,
- const _Up* __first2, const _Up* __last2)
- {
- const size_t __len1 = __last1 - __first1;
- const size_t __len2 = __last2 - __first2;
- const int __result = __builtin_memcmp(__first1, __first2,
- std::min(__len1, __len2));
- return __result != 0 ? __result < 0 : __len1 < __len2;
- }
- };
- template<typename _II1, typename _II2>
- inline bool
- __lexicographical_compare_aux(_II1 __first1, _II1 __last1,
- _II2 __first2, _II2 __last2)
- {
- typedef typename iterator_traits<_II1>::value_type _ValueType1;
- typedef typename iterator_traits<_II2>::value_type _ValueType2;
- const bool __simple =
- (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value
- && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed
- && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed
- && __is_pointer<_II1>::__value
- && __is_pointer<_II2>::__value);
- return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,
- __first2, __last2);
- }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _II1, typename _II2>
- inline bool
- equal(_II1 __first1, _II1 __last1, _II2 __first2)
- {
-
-
-
- ;
- return std::__equal_aux(std::__niter_base<_II1>::__b(__first1),
- std::__niter_base<_II1>::__b(__last1),
- std::__niter_base<_II2>::__b(__first2));
- }
- template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
- inline bool
- equal(_IIter1 __first1, _IIter1 __last1,
- _IIter2 __first2, _BinaryPredicate __binary_pred)
- {
-
-
- ;
- for (; __first1 != __last1; ++__first1, ++__first2)
- if (!bool(__binary_pred(*__first1, *__first2)))
- return false;
- return true;
- }
- template<typename _II1, typename _II2>
- inline bool
- lexicographical_compare(_II1 __first1, _II1 __last1,
- _II2 __first2, _II2 __last2)
- {
- typedef typename iterator_traits<_II1>::value_type _ValueType1;
- typedef typename iterator_traits<_II2>::value_type _ValueType2;
-
-
-
-
- ;
- ;
- return std::__lexicographical_compare_aux
- (std::__niter_base<_II1>::__b(__first1),
- std::__niter_base<_II1>::__b(__last1),
- std::__niter_base<_II2>::__b(__first2),
- std::__niter_base<_II2>::__b(__last2));
- }
- template<typename _II1, typename _II2, typename _Compare>
- bool
- lexicographical_compare(_II1 __first1, _II1 __last1,
- _II2 __first2, _II2 __last2, _Compare __comp)
- {
- typedef typename iterator_traits<_II1>::iterator_category _Category1;
- typedef typename iterator_traits<_II2>::iterator_category _Category2;
- typedef std::__lc_rai<_Category1, _Category2> __rai_type;
-
-
- ;
- ;
- __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
- for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
- ++__first1, ++__first2)
- {
- if (__comp(*__first1, *__first2))
- return true;
- if (__comp(*__first2, *__first1))
- return false;
- }
- return __first1 == __last1 && __first2 != __last2;
- }
- template<typename _InputIterator1, typename _InputIterator2>
- pair<_InputIterator1, _InputIterator2>
- mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
- _InputIterator2 __first2)
- {
-
-
-
- ;
- while (__first1 != __last1 && *__first1 == *__first2)
- {
- ++__first1;
- ++__first2;
- }
- return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
- }
- template<typename _InputIterator1, typename _InputIterator2,
- typename _BinaryPredicate>
- pair<_InputIterator1, _InputIterator2>
- mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
- _InputIterator2 __first2, _BinaryPredicate __binary_pred)
- {
-
-
- ;
- while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2)))
- {
- ++__first1;
- ++__first2;
- }
- return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
- }
-}
-
-extern "C++" {
-namespace std
-{
- class exception
- {
- public:
- exception() throw() { }
- virtual ~exception() throw();
- virtual const char* what() const throw();
- };
- class bad_exception : public exception
- {
- public:
- bad_exception() throw() { }
- virtual ~bad_exception() throw();
- virtual const char* what() const throw();
- };
- typedef void (*terminate_handler) ();
- typedef void (*unexpected_handler) ();
- terminate_handler set_terminate(terminate_handler) throw();
- void terminate() __attribute__ ((__noreturn__));
- unexpected_handler set_unexpected(unexpected_handler) throw();
- void unexpected() __attribute__ ((__noreturn__));
- bool uncaught_exception() throw();
-}
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
- void __verbose_terminate_handler();
-}
-}
-extern "C++" {
-namespace std
-{
- class bad_alloc : public exception
- {
- public:
- bad_alloc() throw() { }
- virtual ~bad_alloc() throw();
- virtual const char* what() const throw();
- };
- struct nothrow_t { };
- extern const nothrow_t nothrow;
- typedef void (*new_handler)();
- new_handler set_new_handler(new_handler) throw();
-}
-void* operator new(std::size_t) throw (std::bad_alloc);
-void* operator new[](std::size_t) throw (std::bad_alloc);
-void operator delete(void*) throw();
-void operator delete[](void*) throw();
-void* operator new(std::size_t, const std::nothrow_t&) throw();
-void* operator new[](std::size_t, const std::nothrow_t&) throw();
-void operator delete(void*, const std::nothrow_t&) throw();
-void operator delete[](void*, const std::nothrow_t&) throw();
-inline void* operator new(std::size_t, void* __p) throw() { return __p; }
-inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
-inline void operator delete (void*, void*) throw() { }
-inline void operator delete[](void*, void*) throw() { }
-}
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
- using std::size_t;
- using std::ptrdiff_t;
- template<typename _Tp>
- class new_allocator
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
- template<typename _Tp1>
- struct rebind
- { typedef new_allocator<_Tp1> other; };
- new_allocator() throw() { }
- new_allocator(const new_allocator&) throw() { }
- template<typename _Tp1>
- new_allocator(const new_allocator<_Tp1>&) throw() { }
- ~new_allocator() throw() { }
- pointer
- address(reference __x) const { return &__x; }
- const_pointer
- address(const_reference __x) const { return &__x; }
- pointer
- allocate(size_type __n, const void* = 0)
- {
- if (__builtin_expect(__n > this->max_size(), false))
- std::__throw_bad_alloc();
- return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
- }
- void
- deallocate(pointer __p, size_type)
- { ::operator delete(__p); }
- size_type
- max_size() const throw()
- { return size_t(-1) / sizeof(_Tp); }
- void
- construct(pointer __p, const _Tp& __val)
- { ::new((void *)__p) _Tp(__val); }
- void
- destroy(pointer __p) { __p->~_Tp(); }
- };
- template<typename _Tp>
- inline bool
- operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
- { return true; }
- template<typename _Tp>
- inline bool
- operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
- { return false; }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Tp>
- class allocator;
- template<>
- class allocator<void>
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
- template<typename _Tp1>
- struct rebind
- { typedef allocator<_Tp1> other; };
- };
- template<typename _Tp>
- class allocator: public __gnu_cxx::new_allocator<_Tp>
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
- template<typename _Tp1>
- struct rebind
- { typedef allocator<_Tp1> other; };
- allocator() throw() { }
- allocator(const allocator& __a) throw()
- : __gnu_cxx::new_allocator<_Tp>(__a) { }
- template<typename _Tp1>
- allocator(const allocator<_Tp1>&) throw() { }
- ~allocator() throw() { }
- };
- template<typename _T1, typename _T2>
- inline bool
- operator==(const allocator<_T1>&, const allocator<_T2>&)
- { return true; }
- template<typename _Tp>
- inline bool
- operator==(const allocator<_Tp>&, const allocator<_Tp>&)
- { return true; }
- template<typename _T1, typename _T2>
- inline bool
- operator!=(const allocator<_T1>&, const allocator<_T2>&)
- { return false; }
- template<typename _Tp>
- inline bool
- operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
- { return false; }
- extern template class allocator<char>;
- extern template class allocator<wchar_t>;
- template<typename _Alloc, bool = __is_empty(_Alloc)>
- struct __alloc_swap
- { static void _S_do_it(_Alloc&, _Alloc&) { } };
- template<typename _Alloc>
- struct __alloc_swap<_Alloc, false>
- {
- static void
- _S_do_it(_Alloc& __one, _Alloc& __two)
- {
- if (__one != __two)
- swap(__one, __two);
- }
- };
- template<typename _Alloc, bool = __is_empty(_Alloc)>
- struct __alloc_neq
- {
- static bool
- _S_do_it(const _Alloc&, const _Alloc&)
- { return false; }
- };
- template<typename _Alloc>
- struct __alloc_neq<_Alloc, false>
- {
- static bool
- _S_do_it(const _Alloc& __one, const _Alloc& __two)
- { return __one != __two; }
- };
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- struct _List_node_base
- {
- _List_node_base* _M_next;
- _List_node_base* _M_prev;
- static void
- swap(_List_node_base& __x, _List_node_base& __y);
- void
- transfer(_List_node_base * const __first,
- _List_node_base * const __last);
- void
- reverse();
- void
- hook(_List_node_base * const __position);
- void
- unhook();
- };
- template<typename _Tp>
- struct _List_node : public _List_node_base
- {
- _Tp _M_data;
- };
- template<typename _Tp>
- struct _List_iterator
- {
- typedef _List_iterator<_Tp> _Self;
- typedef _List_node<_Tp> _Node;
- typedef ptrdiff_t difference_type;
- typedef std::bidirectional_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
- _List_iterator()
- : _M_node() { }
- explicit
- _List_iterator(_List_node_base* __x)
- : _M_node(__x) { }
- reference
- operator*() const
- { return static_cast<_Node*>(_M_node)->_M_data; }
- pointer
- operator->() const
- { return &static_cast<_Node*>(_M_node)->_M_data; }
- _Self&
- operator++()
- {
- _M_node = _M_node->_M_next;
- return *this;
- }
- _Self
- operator++(int)
- {
- _Self __tmp = *this;
- _M_node = _M_node->_M_next;
- return __tmp;
- }
- _Self&
- operator--()
- {
- _M_node = _M_node->_M_prev;
- return *this;
- }
- _Self
- operator--(int)
- {
- _Self __tmp = *this;
- _M_node = _M_node->_M_prev;
- return __tmp;
- }
- bool
- operator==(const _Self& __x) const
- { return _M_node == __x._M_node; }
- bool
- operator!=(const _Self& __x) const
- { return _M_node != __x._M_node; }
- _List_node_base* _M_node;
- };
- template<typename _Tp>
- struct _List_const_iterator
- {
- typedef _List_const_iterator<_Tp> _Self;
- typedef const _List_node<_Tp> _Node;
- typedef _List_iterator<_Tp> iterator;
- typedef ptrdiff_t difference_type;
- typedef std::bidirectional_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef const _Tp* pointer;
- typedef const _Tp& reference;
- _List_const_iterator()
- : _M_node() { }
- explicit
- _List_const_iterator(const _List_node_base* __x)
- : _M_node(__x) { }
- _List_const_iterator(const iterator& __x)
- : _M_node(__x._M_node) { }
- reference
- operator*() const
- { return static_cast<_Node*>(_M_node)->_M_data; }
- pointer
- operator->() const
- { return &static_cast<_Node*>(_M_node)->_M_data; }
- _Self&
- operator++()
- {
- _M_node = _M_node->_M_next;
- return *this;
- }
- _Self
- operator++(int)
- {
- _Self __tmp = *this;
- _M_node = _M_node->_M_next;
- return __tmp;
- }
- _Self&
- operator--()
- {
- _M_node = _M_node->_M_prev;
- return *this;
- }
- _Self
- operator--(int)
- {
- _Self __tmp = *this;
- _M_node = _M_node->_M_prev;
- return __tmp;
- }
- bool
- operator==(const _Self& __x) const
- { return _M_node == __x._M_node; }
- bool
- operator!=(const _Self& __x) const
- { return _M_node != __x._M_node; }
- const _List_node_base* _M_node;
- };
- template<typename _Val>
- inline bool
- operator==(const _List_iterator<_Val>& __x,
- const _List_const_iterator<_Val>& __y)
- { return __x._M_node == __y._M_node; }
- template<typename _Val>
- inline bool
- operator!=(const _List_iterator<_Val>& __x,
- const _List_const_iterator<_Val>& __y)
- { return __x._M_node != __y._M_node; }
- template<typename _Tp, typename _Alloc>
- class _List_base
- {
- protected:
- typedef typename _Alloc::template rebind<_List_node<_Tp> >::other
- _Node_alloc_type;
- typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
- struct _List_impl
- : public _Node_alloc_type
- {
- _List_node_base _M_node;
- _List_impl()
- : _Node_alloc_type(), _M_node()
- { }
- _List_impl(const _Node_alloc_type& __a)
- : _Node_alloc_type(__a), _M_node()
- { }
- };
- _List_impl _M_impl;
- _List_node<_Tp>*
- _M_get_node()
- { return _M_impl._Node_alloc_type::allocate(1); }
- void
- _M_put_node(_List_node<_Tp>* __p)
- { _M_impl._Node_alloc_type::deallocate(__p, 1); }
- public:
- typedef _Alloc allocator_type;
- _Node_alloc_type&
- _M_get_Node_allocator()
- { return *static_cast<_Node_alloc_type*>(&this->_M_impl); }
- const _Node_alloc_type&
- _M_get_Node_allocator() const
- { return *static_cast<const _Node_alloc_type*>(&this->_M_impl); }
- _Tp_alloc_type
- _M_get_Tp_allocator() const
- { return _Tp_alloc_type(_M_get_Node_allocator()); }
- allocator_type
- get_allocator() const
- { return allocator_type(_M_get_Node_allocator()); }
- _List_base()
- : _M_impl()
- { _M_init(); }
- _List_base(const allocator_type& __a)
- : _M_impl(__a)
- { _M_init(); }
- ~_List_base()
- { _M_clear(); }
- void
- _M_clear();
- void
- _M_init()
- {
- this->_M_impl._M_node._M_next = &this->_M_impl._M_node;
- this->_M_impl._M_node._M_prev = &this->_M_impl._M_node;
- }
- };
- template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
- class list : protected _List_base<_Tp, _Alloc>
- {
- typedef typename _Alloc::value_type _Alloc_value_type;
-
-
- typedef _List_base<_Tp, _Alloc> _Base;
- typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
- public:
- typedef _Tp value_type;
- typedef typename _Tp_alloc_type::pointer pointer;
- typedef typename _Tp_alloc_type::const_pointer const_pointer;
- typedef typename _Tp_alloc_type::reference reference;
- typedef typename _Tp_alloc_type::const_reference const_reference;
- typedef _List_iterator<_Tp> iterator;
- typedef _List_const_iterator<_Tp> const_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Alloc allocator_type;
- protected:
- typedef _List_node<_Tp> _Node;
- using _Base::_M_impl;
- using _Base::_M_put_node;
- using _Base::_M_get_node;
- using _Base::_M_get_Tp_allocator;
- using _Base::_M_get_Node_allocator;
- _Node*
- _M_create_node(const value_type& __x)
- {
- _Node* __p = this->_M_get_node();
- try
- {
- _M_get_Tp_allocator().construct(&__p->_M_data, __x);
- }
- catch(...)
- {
- _M_put_node(__p);
- throw;
- }
- return __p;
- }
- public:
- list()
- : _Base() { }
- explicit
- list(const allocator_type& __a)
- : _Base(__a) { }
- explicit
- list(size_type __n, const value_type& __value = value_type(),
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- { _M_fill_initialize(__n, __value); }
- list(const list& __x)
- : _Base(__x._M_get_Node_allocator())
- { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); }
- template<typename _InputIterator>
- list(_InputIterator __first, _InputIterator __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- typedef typename std::__is_integer<_InputIterator>::__type _Integral;
- _M_initialize_dispatch(__first, __last, _Integral());
- }
- list&
- operator=(const list& __x);
- void
- assign(size_type __n, const value_type& __val)
- { _M_fill_assign(__n, __val); }
- template<typename _InputIterator>
- void
- assign(_InputIterator __first, _InputIterator __last)
- {
- typedef typename std::__is_integer<_InputIterator>::__type _Integral;
- _M_assign_dispatch(__first, __last, _Integral());
- }
- allocator_type
- get_allocator() const
- { return _Base::get_allocator(); }
- iterator
- begin()
- { return iterator(this->_M_impl._M_node._M_next); }
- const_iterator
- begin() const
- { return const_iterator(this->_M_impl._M_node._M_next); }
- iterator
- end()
- { return iterator(&this->_M_impl._M_node); }
- const_iterator
- end() const
- { return const_iterator(&this->_M_impl._M_node); }
- reverse_iterator
- rbegin()
- { return reverse_iterator(end()); }
- const_reverse_iterator
- rbegin() const
- { return const_reverse_iterator(end()); }
- reverse_iterator
- rend()
- { return reverse_iterator(begin()); }
- const_reverse_iterator
- rend() const
- { return const_reverse_iterator(begin()); }
- bool
- empty() const
- { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; }
- size_type
- size() const
- { return std::distance(begin(), end()); }
- size_type
- max_size() const
- { return _M_get_Node_allocator().max_size(); }
- void
- resize(size_type __new_size, value_type __x = value_type());
- reference
- front()
- { return *begin(); }
- const_reference
- front() const
- { return *begin(); }
- reference
- back()
- {
- iterator __tmp = end();
- --__tmp;
- return *__tmp;
- }
- const_reference
- back() const
- {
- const_iterator __tmp = end();
- --__tmp;
- return *__tmp;
- }
- void
- push_front(const value_type& __x)
- { this->_M_insert(begin(), __x); }
- void
- pop_front()
- { this->_M_erase(begin()); }
- void
- push_back(const value_type& __x)
- { this->_M_insert(end(), __x); }
- void
- pop_back()
- { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); }
- iterator
- insert(iterator __position, const value_type& __x);
- void
- insert(iterator __position, size_type __n, const value_type& __x)
- {
- list __tmp(__n, __x, _M_get_Node_allocator());
- splice(__position, __tmp);
- }
- template<typename _InputIterator>
- void
- insert(iterator __position, _InputIterator __first,
- _InputIterator __last)
- {
- list __tmp(__first, __last, _M_get_Node_allocator());
- splice(__position, __tmp);
- }
- iterator
- erase(iterator __position);
- iterator
- erase(iterator __first, iterator __last)
- {
- while (__first != __last)
- __first = erase(__first);
- return __last;
- }
- void
- swap(list& __x)
- {
- _List_node_base::swap(this->_M_impl._M_node, __x._M_impl._M_node);
- std::__alloc_swap<typename _Base::_Node_alloc_type>::
- _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator());
- }
- void
- clear()
- {
- _Base::_M_clear();
- _Base::_M_init();
- }
- void
- splice(iterator __position, list& __x)
- {
- if (!__x.empty())
- {
- _M_check_equal_allocators(__x);
- this->_M_transfer(__position, __x.begin(), __x.end());
- }
- }
- void
- splice(iterator __position, list& __x, iterator __i)
- {
- iterator __j = __i;
- ++__j;
- if (__position == __i || __position == __j)
- return;
- if (this != &__x)
- _M_check_equal_allocators(__x);
- this->_M_transfer(__position, __i, __j);
- }
- void
- splice(iterator __position, list& __x, iterator __first,
- iterator __last)
- {
- if (__first != __last)
- {
- if (this != &__x)
- _M_check_equal_allocators(__x);
- this->_M_transfer(__position, __first, __last);
- }
- }
- void
- remove(const _Tp& __value);
- template<typename _Predicate>
- void
- remove_if(_Predicate);
- void
- unique();
- template<typename _BinaryPredicate>
- void
- unique(_BinaryPredicate);
- void
- merge(list& __x);
- template<typename _StrictWeakOrdering>
- void
- merge(list&, _StrictWeakOrdering);
- void
- reverse()
- { this->_M_impl._M_node.reverse(); }
- void
- sort();
- template<typename _StrictWeakOrdering>
- void
- sort(_StrictWeakOrdering);
- protected:
- template<typename _Integer>
- void
- _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
- { _M_fill_initialize(static_cast<size_type>(__n), __x); }
- template<typename _InputIterator>
- void
- _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
- __false_type)
- {
- for (; __first != __last; ++__first)
- push_back(*__first);
- }
- void
- _M_fill_initialize(size_type __n, const value_type& __x)
- {
- for (; __n > 0; --__n)
- push_back(__x);
- }
- template<typename _Integer>
- void
- _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- { _M_fill_assign(__n, __val); }
- template<typename _InputIterator>
- void
- _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
- __false_type);
- void
- _M_fill_assign(size_type __n, const value_type& __val);
- void
- _M_transfer(iterator __position, iterator __first, iterator __last)
- { __position._M_node->transfer(__first._M_node, __last._M_node); }
- void
- _M_insert(iterator __position, const value_type& __x)
- {
- _Node* __tmp = _M_create_node(__x);
- __tmp->hook(__position._M_node);
- }
- void
- _M_erase(iterator __position)
- {
- __position._M_node->unhook();
- _Node* __n = static_cast<_Node*>(__position._M_node);
- _M_get_Tp_allocator().destroy(&__n->_M_data);
- _M_put_node(__n);
- }
- void
- _M_check_equal_allocators(list& __x)
- {
- if (std::__alloc_neq<typename _Base::_Node_alloc_type>::
- _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()))
- __throw_runtime_error(("list::_M_check_equal_allocators"));
- }
- };
- template<typename _Tp, typename _Alloc>
- inline bool
- operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
- {
- typedef typename list<_Tp, _Alloc>::const_iterator const_iterator;
- const_iterator __end1 = __x.end();
- const_iterator __end2 = __y.end();
- const_iterator __i1 = __x.begin();
- const_iterator __i2 = __y.begin();
- while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
- {
- ++__i1;
- ++__i2;
- }
- return __i1 == __end1 && __i2 == __end2;
- }
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
- { return std::lexicographical_compare(__x.begin(), __x.end(),
- __y.begin(), __y.end()); }
- template<typename _Tp, typename _Alloc>
- inline bool
- operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
- { return !(__x == __y); }
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
- { return __y < __x; }
- template<typename _Tp, typename _Alloc>
- inline bool
- operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
- { return !(__y < __x); }
- template<typename _Tp, typename _Alloc>
- inline bool
- operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
- { return !(__x < __y); }
- template<typename _Tp, typename _Alloc>
- inline void
- swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
- { __x.swap(__y); }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Tp, typename _Alloc>
- void
- _List_base<_Tp, _Alloc>::
- _M_clear()
- {
- typedef _List_node<_Tp> _Node;
- _Node* __cur = static_cast<_Node*>(this->_M_impl._M_node._M_next);
- while (__cur != &this->_M_impl._M_node)
- {
- _Node* __tmp = __cur;
- __cur = static_cast<_Node*>(__cur->_M_next);
- _M_get_Tp_allocator().destroy(&__tmp->_M_data);
- _M_put_node(__tmp);
- }
- }
- template<typename _Tp, typename _Alloc>
- typename list<_Tp, _Alloc>::iterator
- list<_Tp, _Alloc>::
- insert(iterator __position, const value_type& __x)
- {
- _Node* __tmp = _M_create_node(__x);
- __tmp->hook(__position._M_node);
- return iterator(__tmp);
- }
- template<typename _Tp, typename _Alloc>
- typename list<_Tp, _Alloc>::iterator
- list<_Tp, _Alloc>::
- erase(iterator __position)
- {
- iterator __ret = iterator(__position._M_node->_M_next);
- _M_erase(__position);
- return __ret;
- }
- template<typename _Tp, typename _Alloc>
- void
- list<_Tp, _Alloc>::
- resize(size_type __new_size, value_type __x)
- {
- iterator __i = begin();
- size_type __len = 0;
- for (; __i != end() && __len < __new_size; ++__i, ++__len)
- ;
- if (__len == __new_size)
- erase(__i, end());
- else
- insert(end(), __new_size - __len, __x);
- }
- template<typename _Tp, typename _Alloc>
- list<_Tp, _Alloc>&
- list<_Tp, _Alloc>::
- operator=(const list& __x)
- {
- if (this != &__x)
- {
- iterator __first1 = begin();
- iterator __last1 = end();
- const_iterator __first2 = __x.begin();
- const_iterator __last2 = __x.end();
- for (; __first1 != __last1 && __first2 != __last2;
- ++__first1, ++__first2)
- *__first1 = *__first2;
- if (__first2 == __last2)
- erase(__first1, __last1);
- else
- insert(__last1, __first2, __last2);
- }
- return *this;
- }
- template<typename _Tp, typename _Alloc>
- void
- list<_Tp, _Alloc>::
- _M_fill_assign(size_type __n, const value_type& __val)
- {
- iterator __i = begin();
- for (; __i != end() && __n > 0; ++__i, --__n)
- *__i = __val;
- if (__n > 0)
- insert(end(), __n, __val);
- else
- erase(__i, end());
- }
- template<typename _Tp, typename _Alloc>
- template <typename _InputIterator>
- void
- list<_Tp, _Alloc>::
- _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2,
- __false_type)
- {
- iterator __first1 = begin();
- iterator __last1 = end();
- for (; __first1 != __last1 && __first2 != __last2;
- ++__first1, ++__first2)
- *__first1 = *__first2;
- if (__first2 == __last2)
- erase(__first1, __last1);
- else
- insert(__last1, __first2, __last2);
- }
- template<typename _Tp, typename _Alloc>
- void
- list<_Tp, _Alloc>::
- remove(const value_type& __value)
- {
- iterator __first = begin();
- iterator __last = end();
- iterator __extra = __last;
- while (__first != __last)
- {
- iterator __next = __first;
- ++__next;
- if (*__first == __value)
- {
- if (&*__first != &__value)
- _M_erase(__first);
- else
- __extra = __first;
- }
- __first = __next;
- }
- if (__extra != __last)
- _M_erase(__extra);
- }
- template<typename _Tp, typename _Alloc>
- void
- list<_Tp, _Alloc>::
- unique()
- {
- iterator __first = begin();
- iterator __last = end();
- if (__first == __last)
- return;
- iterator __next = __first;
- while (++__next != __last)
- {
- if (*__first == *__next)
- _M_erase(__next);
- else
- __first = __next;
- __next = __first;
- }
- }
- template<typename _Tp, typename _Alloc>
- void
- list<_Tp, _Alloc>::
- merge(list& __x)
- {
- if (this != &__x)
- {
- _M_check_equal_allocators(__x);
- iterator __first1 = begin();
- iterator __last1 = end();
- iterator __first2 = __x.begin();
- iterator __last2 = __x.end();
- while (__first1 != __last1 && __first2 != __last2)
- if (*__first2 < *__first1)
- {
- iterator __next = __first2;
- _M_transfer(__first1, __first2, ++__next);
- __first2 = __next;
- }
- else
- ++__first1;
- if (__first2 != __last2)
- _M_transfer(__last1, __first2, __last2);
- }
- }
- template<typename _Tp, typename _Alloc>
- template <typename _StrictWeakOrdering>
- void
- list<_Tp, _Alloc>::
- merge(list& __x, _StrictWeakOrdering __comp)
- {
- if (this != &__x)
- {
- _M_check_equal_allocators(__x);
- iterator __first1 = begin();
- iterator __last1 = end();
- iterator __first2 = __x.begin();
- iterator __last2 = __x.end();
- while (__first1 != __last1 && __first2 != __last2)
- if (__comp(*__first2, *__first1))
- {
- iterator __next = __first2;
- _M_transfer(__first1, __first2, ++__next);
- __first2 = __next;
- }
- else
- ++__first1;
- if (__first2 != __last2)
- _M_transfer(__last1, __first2, __last2);
- }
- }
- template<typename _Tp, typename _Alloc>
- void
- list<_Tp, _Alloc>::
- sort()
- {
- if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
- && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
- {
- list __carry;
- list __tmp[64];
- list * __fill = &__tmp[0];
- list * __counter;
- do
- {
- __carry.splice(__carry.begin(), *this, begin());
- for(__counter = &__tmp[0];
- __counter != __fill && !__counter->empty();
- ++__counter)
- {
- __counter->merge(__carry);
- __carry.swap(*__counter);
- }
- __carry.swap(*__counter);
- if (__counter == __fill)
- ++__fill;
- }
- while ( !empty() );
- for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
- __counter->merge(*(__counter - 1));
- swap( *(__fill - 1) );
- }
- }
- template<typename _Tp, typename _Alloc>
- template <typename _Predicate>
- void
- list<_Tp, _Alloc>::
- remove_if(_Predicate __pred)
- {
- iterator __first = begin();
- iterator __last = end();
- while (__first != __last)
- {
- iterator __next = __first;
- ++__next;
- if (__pred(*__first))
- _M_erase(__first);
- __first = __next;
- }
- }
- template<typename _Tp, typename _Alloc>
- template <typename _BinaryPredicate>
- void
- list<_Tp, _Alloc>::
- unique(_BinaryPredicate __binary_pred)
- {
- iterator __first = begin();
- iterator __last = end();
- if (__first == __last)
- return;
- iterator __next = __first;
- while (++__next != __last)
- {
- if (__binary_pred(*__first, *__next))
- _M_erase(__next);
- else
- __first = __next;
- __next = __first;
- }
- }
- template<typename _Tp, typename _Alloc>
- template <typename _StrictWeakOrdering>
- void
- list<_Tp, _Alloc>::
- sort(_StrictWeakOrdering __comp)
- {
- if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
- && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
- {
- list __carry;
- list __tmp[64];
- list * __fill = &__tmp[0];
- list * __counter;
- do
- {
- __carry.splice(__carry.begin(), *this, begin());
- for(__counter = &__tmp[0];
- __counter != __fill && !__counter->empty();
- ++__counter)
- {
- __counter->merge(__carry, __comp);
- __carry.swap(*__counter);
- }
- __carry.swap(*__counter);
- if (__counter == __fill)
- ++__fill;
- }
- while ( !empty() );
- for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
- __counter->merge(*(__counter - 1), __comp);
- swap(*(__fill - 1));
- }
- }
-}
-extern void foobarit(void);
-class Game
-{
-public:
- struct BuildProject
- {
- int posX;
- };
- std::list<BuildProject> buildProjects;
-};
-static Game game;
-static std::list<std::list<Game::BuildProject>::iterator>
-erasableBuildProjects;
-void *buildProjectSyncStepConcurrently(int id, int localTeam)
-{
- __transaction_relaxed {
- std::list<std::list<Game::BuildProject>::iterator>::iterator it
-= erasableBuildProjects.begin();
- foobarit();
- game.buildProjects.erase( (std::list<Game::BuildProject>
-::iterator) *it);
- }
- return 0;
-}
-
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46646.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46646.C
deleted file mode 100644
index 9431615b0..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46646.C
+++ /dev/null
@@ -1,890 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O0"}
-
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<class _T1, class _T2>
- struct pair
- {
- typedef _T1 first_type;
- typedef _T2 second_type;
- _T1 first;
- _T2 second;
- pair()
- : first(), second() { }
- pair(const _T1& __a, const _T2& __b)
- : first(__a), second(__b) { }
- };
-}
-
-
-typedef long int ptrdiff_t;
-typedef __SIZE_TYPE__ size_t;
-namespace std __attribute__ ((__visibility__ ("default"))) {
- using ::ptrdiff_t;
- using ::size_t;
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- struct input_iterator_tag { };
- struct output_iterator_tag { };
- struct forward_iterator_tag : public input_iterator_tag { };
- struct bidirectional_iterator_tag : public forward_iterator_tag { };
- struct random_access_iterator_tag : public bidirectional_iterator_tag { };
- template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
- typename _Pointer = _Tp*, typename _Reference = _Tp&>
- struct iterator
- {
- typedef _Category iterator_category;
- typedef _Tp value_type;
- typedef _Distance difference_type;
- typedef _Pointer pointer;
- typedef _Reference reference;
- };
- template<typename _Iterator>
- struct iterator_traits
- {
- typedef typename _Iterator::iterator_category iterator_category;
- typedef typename _Iterator::value_type value_type;
- typedef typename _Iterator::difference_type difference_type;
- typedef typename _Iterator::pointer pointer;
- typedef typename _Iterator::reference reference;
- };
- template<typename _Tp>
- struct iterator_traits<_Tp*>
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
- };
- template<typename _Tp>
- struct iterator_traits<const _Tp*>
- {
- typedef random_access_iterator_tag iterator_category;
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- typedef const _Tp* pointer;
- typedef const _Tp& reference;
- };
- template<typename _Iter>
- inline typename iterator_traits<_Iter>::iterator_category
- __iterator_category(const _Iter&)
- { return typename iterator_traits<_Iter>::iterator_category(); }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Iterator>
- class reverse_iterator
- : public iterator<typename iterator_traits<_Iterator>::iterator_category,
- typename iterator_traits<_Iterator>::value_type,
- typename iterator_traits<_Iterator>::difference_type,
- typename iterator_traits<_Iterator>::pointer,
- typename iterator_traits<_Iterator>::reference>
- {
- protected:
- _Iterator current;
- typedef iterator_traits<_Iterator> __traits_type;
- public:
- typedef _Iterator iterator_type;
- typedef typename __traits_type::difference_type difference_type;
- typedef typename __traits_type::pointer pointer;
- typedef typename __traits_type::reference reference;
- reverse_iterator() : current() { }
- explicit
- reverse_iterator(iterator_type __x) : current(__x) { }
- reverse_iterator(const reverse_iterator& __x)
- : current(__x.current) { }
- template<typename _Iter>
- reverse_iterator(const reverse_iterator<_Iter>& __x)
- : current(__x.base()) { }
- iterator_type
- base() const
- { return current; }
- reference
- operator*() const
- {
- _Iterator __tmp = current;
- return *--__tmp;
- }
- pointer
- operator->() const
- { return &(operator*()); }
- reverse_iterator&
- operator++()
- {
- --current;
- return *this;
- }
- reverse_iterator
- operator++(int)
- {
- reverse_iterator __tmp = *this;
- --current;
- return __tmp;
- }
- reverse_iterator&
- operator--()
- {
- ++current;
- return *this;
- }
- reverse_iterator
- operator--(int)
- {
- reverse_iterator __tmp = *this;
- ++current;
- return __tmp;
- }
- reverse_iterator
- operator+(difference_type __n) const
- { return reverse_iterator(current - __n); }
- reverse_iterator&
- operator+=(difference_type __n)
- {
- current -= __n;
- return *this;
- }
- reverse_iterator
- operator-(difference_type __n) const
- { return reverse_iterator(current + __n); }
- reverse_iterator&
- operator-=(difference_type __n)
- {
- current += __n;
- return *this;
- }
- reference
- operator[](difference_type __n) const
- { return *(*this + __n); }
- };
-}
-
-
-
-extern "C++" {
-namespace std
-{
- class exception
- {
- public:
- exception() throw() { }
- virtual ~exception() throw();
- virtual const char* what() const throw();
- };
- class bad_exception : public exception
- {
- public:
- bad_exception() throw() { }
- virtual ~bad_exception() throw();
- virtual const char* what() const throw();
- };
- typedef void (*terminate_handler) ();
- typedef void (*unexpected_handler) ();
- terminate_handler set_terminate(terminate_handler) throw();
- void terminate() throw() __attribute__ ((__noreturn__));
- unexpected_handler set_unexpected(unexpected_handler) throw();
- void unexpected() __attribute__ ((__noreturn__));
- bool uncaught_exception() throw() __attribute__ ((__pure__));
-}
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
- void __verbose_terminate_handler();
-}
-}
-extern "C++" {
-namespace std
-{
- class bad_alloc : public exception
- {
- public:
- bad_alloc() throw() { }
- virtual ~bad_alloc() throw();
- virtual const char* what() const throw();
- };
- struct nothrow_t { };
- extern const nothrow_t nothrow;
- typedef void (*new_handler)();
- new_handler set_new_handler(new_handler) throw();
-}
-
-void* operator new(std::size_t, const std::nothrow_t&) throw();
-void* operator new[](std::size_t, const std::nothrow_t&) throw();
-void operator delete(void*, const std::nothrow_t&) throw();
-void operator delete[](void*, const std::nothrow_t&) throw();
-inline void* operator new(std::size_t, void* __p) throw() { return __p; }
-inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
-inline void operator delete (void*, void*) throw() { }
-inline void operator delete[](void*, void*) throw() { }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- void
- __throw_bad_exception(void) __attribute__((__noreturn__));
- __attribute__((transaction_safe))
- void
- __throw_bad_alloc(void) __attribute__((__noreturn__));
- void
- __throw_bad_cast(void) __attribute__((__noreturn__));
- void
- __throw_bad_typeid(void) __attribute__((__noreturn__));
- void
- __throw_logic_error(const char*) __attribute__((__noreturn__));
- void
- __throw_domain_error(const char*) __attribute__((__noreturn__));
- void
- __throw_invalid_argument(const char*) __attribute__((__noreturn__));
- void
- __throw_length_error(const char*) __attribute__((__noreturn__));
- void
- __throw_out_of_range(const char*) __attribute__((__noreturn__));
- void
- __throw_runtime_error(const char*) __attribute__((__noreturn__));
- void
- __throw_range_error(const char*) __attribute__((__noreturn__));
- void
- __throw_overflow_error(const char*) __attribute__((__noreturn__));
- void
- __throw_underflow_error(const char*) __attribute__((__noreturn__));
- void
- __throw_ios_failure(const char*) __attribute__((__noreturn__));
- void
- __throw_system_error(int) __attribute__((__noreturn__));
- void
- __throw_future_error(int) __attribute__((__noreturn__));
- void
- __throw_bad_function_call() __attribute__((__noreturn__));
-}
-
-
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Tp>
- inline void
- swap(_Tp& __a, _Tp& __b)
- {
-
- _Tp __tmp = (__a);
- __a = (__b);
- __b = (__tmp);
- }
- template<typename _Tp, size_t _Nm>
- inline void
- swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
- {
- for (size_t __n = 0; __n < _Nm; ++__n)
- swap(__a[__n], __b[__n]);
- }
-}
-namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
- using std::size_t;
- using std::ptrdiff_t;
- template<typename _Tp>
- class new_allocator
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
- template<typename _Tp1>
- struct rebind
- { typedef new_allocator<_Tp1> other; };
- new_allocator() throw() { }
- new_allocator(const new_allocator&) throw() { }
- template<typename _Tp1>
- new_allocator(const new_allocator<_Tp1>&) throw() { }
- ~new_allocator() throw() { }
- pointer
- address(reference __x) const { return &__x; }
- const_pointer
- address(const_reference __x) const { return &__x; }
- __attribute__((transaction_safe))
- pointer
- allocate(size_type __n, const void* = 0)
- {
- if (__n > this->max_size())
- std::__throw_bad_alloc();
- return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
- }
-__attribute__((transaction_safe))
-void
- deallocate(pointer __p, size_type)
- { ::operator delete(__p); }
- size_type
- max_size() const throw()
- { return size_t(-1) / sizeof(_Tp); }
- void
- construct(pointer __p, const _Tp& __val)
- { ::new((void *)__p) _Tp(__val); }
- void
- destroy(pointer __p) { __p->~_Tp(); }
- };
- template<typename _Tp>
- inline bool
- operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
- { return true; }
- template<typename _Tp>
- inline bool
- operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
- { return false; }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Tp>
- class allocator;
- template<>
- class allocator<void>
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef void* pointer;
- typedef const void* const_pointer;
- typedef void value_type;
- template<typename _Tp1>
- struct rebind
- { typedef allocator<_Tp1> other; };
- };
- template<typename _Tp>
- class allocator: public __gnu_cxx::new_allocator<_Tp>
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
- template<typename _Tp1>
- struct rebind
- { typedef allocator<_Tp1> other; };
- allocator() throw() { }
- allocator(const allocator& __a) throw()
- : __gnu_cxx::new_allocator<_Tp>(__a) { }
- template<typename _Tp1>
- allocator(const allocator<_Tp1>&) throw() { }
- ~allocator() throw() { }
- };
- template<typename _T1, typename _T2>
- inline bool
- operator==(const allocator<_T1>&, const allocator<_T2>&)
- { return true; }
- template<typename _Tp>
- inline bool
- operator==(const allocator<_Tp>&, const allocator<_Tp>&)
- { return true; }
- template<typename _T1, typename _T2>
- inline bool
- operator!=(const allocator<_T1>&, const allocator<_T2>&)
- { return false; }
- template<typename _Tp>
- inline bool
- operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
- { return false; }
- //extern template class allocator<char>;
- // extern template class allocator<wchar_t>;
- template<typename _Alloc, bool = __is_empty(_Alloc)>
- struct __alloc_swap
- { static void _S_do_it(_Alloc&, _Alloc&) { } };
- template<typename _Alloc>
- struct __alloc_swap<_Alloc, false>
- {
- static void
- _S_do_it(_Alloc& __one, _Alloc& __two)
- {
- if (__one != __two)
- swap(__one, __two);
- }
- };
- template<typename _Alloc, bool = __is_empty(_Alloc)>
- struct __alloc_neq
- {
- static bool
- _S_do_it(const _Alloc&, const _Alloc&)
- { return false; }
- };
- template<typename _Alloc>
- struct __alloc_neq<_Alloc, false>
- {
- static bool
- _S_do_it(const _Alloc& __one, const _Alloc& __two)
- { return __one != __two; }
- };
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Arg, typename _Result>
- struct unary_function
- {
- typedef _Arg argument_type;
- typedef _Result result_type;
- };
- template<typename _Arg1, typename _Arg2, typename _Result>
- struct binary_function
- {
- typedef _Arg1 first_argument_type;
- typedef _Arg2 second_argument_type;
- typedef _Result result_type;
- };
- template<typename _Tp>
- struct equal_to : public binary_function<_Tp, _Tp, bool>
- {
- bool
- operator()(const _Tp& __x, const _Tp& __y) const
- { return __x == __y; }
- };
- template<typename _Tp>
- struct not_equal_to : public binary_function<_Tp, _Tp, bool>
- {
- bool
- operator()(const _Tp& __x, const _Tp& __y) const
- { return __x != __y; }
- };
- template<typename _Tp>
- struct greater : public binary_function<_Tp, _Tp, bool>
- {
- bool
- operator()(const _Tp& __x, const _Tp& __y) const
- { return __x > __y; }
- };
- template<typename _Tp>
- struct less : public binary_function<_Tp, _Tp, bool>
- {
- bool
- operator()(const _Tp& __x, const _Tp& __y) const
- { return __x < __y; }
- };
- template<typename _Tp>
- struct _Identity : public unary_function<_Tp,_Tp>
- {
- _Tp&
- operator()(_Tp& __x) const
- { return __x; }
- const _Tp&
- operator()(const _Tp& __x) const
- { return __x; }
- };
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- enum _Rb_tree_color { _S_red = false, _S_black = true };
- struct _Rb_tree_node_base
- {
- typedef _Rb_tree_node_base* _Base_ptr;
- typedef const _Rb_tree_node_base* _Const_Base_ptr;
- _Rb_tree_color _M_color;
- _Base_ptr _M_parent;
- _Base_ptr _M_left;
- _Base_ptr _M_right;
- static _Base_ptr
- _S_minimum(_Base_ptr __x)
- {
- while (__x->_M_left != 0) __x = __x->_M_left;
- return __x;
- }
- static _Const_Base_ptr
- _S_minimum(_Const_Base_ptr __x)
- {
- while (__x->_M_left != 0) __x = __x->_M_left;
- return __x;
- }
- static _Base_ptr
- _S_maximum(_Base_ptr __x)
- {
- while (__x->_M_right != 0) __x = __x->_M_right;
- return __x;
- }
- static _Const_Base_ptr
- _S_maximum(_Const_Base_ptr __x)
- {
- while (__x->_M_right != 0) __x = __x->_M_right;
- return __x;
- }
- };
- template<typename _Val>
- struct _Rb_tree_node : public _Rb_tree_node_base
- {
- typedef _Rb_tree_node<_Val>* _Link_type;
- _Val _M_value_field;
- };
- __attribute__ ((__pure__)) _Rb_tree_node_base*
- _Rb_tree_increment(_Rb_tree_node_base* __x) throw ();
- __attribute__ ((__pure__)) const _Rb_tree_node_base*
- _Rb_tree_increment(const _Rb_tree_node_base* __x) throw ();
- __attribute__ ((__pure__)) _Rb_tree_node_base*
- _Rb_tree_decrement(_Rb_tree_node_base* __x) throw ();
- __attribute__ ((__pure__)) const _Rb_tree_node_base*
- _Rb_tree_decrement(const _Rb_tree_node_base* __x) throw ();
- template<typename _Tp>
- struct _Rb_tree_iterator
- {
- typedef _Tp value_type;
- typedef _Tp& reference;
- typedef _Tp* pointer;
- typedef bidirectional_iterator_tag iterator_category;
- typedef ptrdiff_t difference_type;
- typedef _Rb_tree_iterator<_Tp> _Self;
- typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
- typedef _Rb_tree_node<_Tp>* _Link_type;
- _Rb_tree_iterator()
- : _M_node() { }
- explicit
- _Rb_tree_iterator(_Link_type __x)
- : _M_node(__x) { }
- reference
- operator*() const
- { return static_cast<_Link_type>(_M_node)->_M_value_field; }
- pointer
- operator->() const
- { return &static_cast<_Link_type>(_M_node)->_M_value_field; }
- _Self&
- operator++()
- {
- _M_node = _Rb_tree_increment(_M_node);
- return *this;
- }
- _Self
- operator++(int)
- {
- _Self __tmp = *this;
- _M_node = _Rb_tree_increment(_M_node);
- return __tmp;
- }
- _Self&
- operator--()
- {
- _M_node = _Rb_tree_decrement(_M_node);
- return *this;
- }
- _Self
- operator--(int)
- {
- _Self __tmp = *this;
- _M_node = _Rb_tree_decrement(_M_node);
- return __tmp;
- }
- bool
- operator==(const _Self& __x) const
- { return _M_node == __x._M_node; }
- bool
- operator!=(const _Self& __x) const
- { return _M_node != __x._M_node; }
- _Base_ptr _M_node;
- };
- template<typename _Tp>
- struct _Rb_tree_const_iterator
- {
- typedef _Tp value_type;
- typedef const _Tp& reference;
- typedef const _Tp* pointer;
- typedef _Rb_tree_iterator<_Tp> iterator;
- typedef bidirectional_iterator_tag iterator_category;
- typedef ptrdiff_t difference_type;
- typedef _Rb_tree_const_iterator<_Tp> _Self;
- typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
- typedef const _Rb_tree_node<_Tp>* _Link_type;
- _Rb_tree_const_iterator()
- : _M_node() { }
- explicit
- _Rb_tree_const_iterator(_Link_type __x)
- : _M_node(__x) { }
- _Rb_tree_const_iterator(const iterator& __it)
- : _M_node(__it._M_node) { }
- reference
- operator*() const
- { return static_cast<_Link_type>(_M_node)->_M_value_field; }
- pointer
- operator->() const
- { return &static_cast<_Link_type>(_M_node)->_M_value_field; }
- _Self&
- operator++()
- {
- _M_node = _Rb_tree_increment(_M_node);
- return *this;
- }
- _Self
- operator++(int)
- {
- _Self __tmp = *this;
- _M_node = _Rb_tree_increment(_M_node);
- return __tmp;
- }
- _Self&
- operator--()
- {
- _M_node = _Rb_tree_decrement(_M_node);
- return *this;
- }
- _Self
- operator--(int)
- {
- _Self __tmp = *this;
- _M_node = _Rb_tree_decrement(_M_node);
- return __tmp;
- }
- bool
- operator==(const _Self& __x) const
- { return _M_node == __x._M_node; }
- bool
- operator!=(const _Self& __x) const
- { return _M_node != __x._M_node; }
- _Base_ptr _M_node;
- };
- 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) throw ();
- _Rb_tree_node_base*
- _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
- _Rb_tree_node_base& __header) throw ();
- template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc = allocator<_Val> >
- class _Rb_tree
- {
- typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other
- _Node_allocator;
- protected:
- typedef _Rb_tree_node_base* _Base_ptr;
- typedef const _Rb_tree_node_base* _Const_Base_ptr;
- public:
- typedef _Key key_type;
- typedef _Val value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef _Rb_tree_node<_Val>* _Link_type;
- typedef const _Rb_tree_node<_Val>* _Const_Link_type;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Alloc allocator_type;
- _Node_allocator&
- _M_get_Node_allocator()
- { return *static_cast<_Node_allocator*>(&this->_M_impl); }
- const _Node_allocator&
- _M_get_Node_allocator() const
- { return *static_cast<const _Node_allocator*>(&this->_M_impl); }
- allocator_type
- get_allocator() const
- { return allocator_type(_M_get_Node_allocator()); }
- protected:
- _Link_type
- _M_get_node()
- { return _M_impl._Node_allocator::allocate(1); }
- __attribute__((transaction_safe))
- void
- _M_put_node(_Link_type __p)
- { _M_impl._Node_allocator::deallocate(__p, 1); }
- __attribute__((transaction_safe))
- _Link_type
- _M_create_node(const value_type& __x)
- {
- _Link_type __tmp = _M_get_node();
- try
- { get_allocator().construct(&__tmp->_M_value_field, __x); }
- catch(...)
- {
- _M_put_node(__tmp);
- throw;
- }
- return __tmp;
- }
- void
- _M_destroy_node(_Link_type __p)
- {
- get_allocator().destroy(&__p->_M_value_field);
- _M_put_node(__p);
- }
- protected:
- template<typename _Key_compare,
- bool _Is_pod_comparator = __is_pod(_Key_compare)>
- struct _Rb_tree_impl : public _Node_allocator
- {
- _Key_compare _M_key_compare;
- _Rb_tree_node_base _M_header;
- size_type _M_node_count;
- _Rb_tree_impl()
- : _Node_allocator(), _M_key_compare(), _M_header(),
- _M_node_count(0)
- { _M_initialize(); }
- _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a)
- : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
- _M_node_count(0)
- { _M_initialize(); }
- private:
- void
- _M_initialize()
- {
- this->_M_header._M_color = _S_red;
- this->_M_header._M_parent = 0;
- this->_M_header._M_left = &this->_M_header;
- this->_M_header._M_right = &this->_M_header;
- }
- };
- _Rb_tree_impl<_Compare> _M_impl;
- protected:
- _Base_ptr&
- _M_root()
- { return this->_M_impl._M_header._M_parent; }
- _Const_Base_ptr
- _M_root() const
- { return this->_M_impl._M_header._M_parent; }
- _Base_ptr&
- _M_leftmost()
- { return this->_M_impl._M_header._M_left; }
- _Const_Base_ptr
- _M_leftmost() const
- { return this->_M_impl._M_header._M_left; }
- _Base_ptr&
- _M_rightmost()
- { return this->_M_impl._M_header._M_right; }
- _Const_Base_ptr
- _M_rightmost() const
- { return this->_M_impl._M_header._M_right; }
- _Link_type
- _M_begin()
- { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
- _Const_Link_type
- _M_begin() const
- {
- return static_cast<_Const_Link_type>
- (this->_M_impl._M_header._M_parent);
- }
- _Link_type
- _M_end()
- { return static_cast<_Link_type>(&this->_M_impl._M_header); }
- _Const_Link_type
- _M_end() const
- { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); }
- static const_reference
- _S_value(_Const_Link_type __x)
- { return __x->_M_value_field; }
- static const _Key&
- _S_key(_Const_Link_type __x)
- { return _KeyOfValue()(_S_value(__x)); }
- static _Link_type
- _S_left(_Base_ptr __x)
- { return static_cast<_Link_type>(__x->_M_left); }
- static _Const_Link_type
- _S_left(_Const_Base_ptr __x)
- { return static_cast<_Const_Link_type>(__x->_M_left); }
- static _Link_type
- _S_right(_Base_ptr __x)
- { return static_cast<_Link_type>(__x->_M_right); }
- static _Const_Link_type
- _S_right(_Const_Base_ptr __x)
- { return static_cast<_Const_Link_type>(__x->_M_right); }
- static const_reference
- _S_value(_Const_Base_ptr __x)
- { return static_cast<_Const_Link_type>(__x)->_M_value_field; }
- static const _Key&
- _S_key(_Const_Base_ptr __x)
- { return _KeyOfValue()(_S_value(__x)); }
- public:
- typedef _Rb_tree_iterator<value_type> iterator;
- typedef _Rb_tree_const_iterator<value_type> const_iterator;
- typedef std::reverse_iterator<iterator> reverse_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
- private:
- iterator
- _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __y,
- const value_type& __v);
- public:
- _Rb_tree() { }
- iterator
- begin()
- {
- return iterator(static_cast<_Link_type>
- (this->_M_impl._M_header._M_left));
- }
- const_iterator
- begin() const
- {
- return const_iterator(static_cast<_Const_Link_type>
- (this->_M_impl._M_header._M_left));
- }
- iterator
- end()
- { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); }
- const_iterator
- end() const
- {
- return const_iterator(static_cast<_Const_Link_type>
- (&this->_M_impl._M_header));
- }
- pair<iterator, bool>
- _M_insert_unique(const value_type& __x);
- };
- template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
- typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
- _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
- _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __p, const _Val& __v)
- {
- _Link_type __z = _M_create_node(__v);
- return iterator(__z);
- }
- template<typename _Key, typename _Val, typename _KeyOfValue,
- typename _Compare, typename _Alloc>
- pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
- _Compare, _Alloc>::iterator, bool>
- _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
- _M_insert_unique(const _Val& __v)
- {
- _Link_type __x = _M_begin();
- _Link_type __y = _M_end();
- iterator __j = iterator(__y);
- return pair<iterator, bool>(_M_insert_(__x, __y, __v), true);
- }
-}
-namespace std __attribute__ ((__visibility__ ("default"))) {
- template<typename _Key, typename _Compare = std::less<_Key>,
- typename _Alloc = std::allocator<_Key> >
- class set
- {
- public:
- typedef _Key key_type;
- typedef _Key value_type;
- typedef _Compare key_compare;
- typedef _Compare value_compare;
- typedef _Alloc allocator_type;
- private:
- typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;
- typedef _Rb_tree<key_type, value_type, _Identity<value_type>,
- key_compare, _Key_alloc_type> _Rep_type;
- _Rep_type _M_t;
- public:
- typedef typename _Key_alloc_type::pointer pointer;
- typedef typename _Key_alloc_type::const_pointer const_pointer;
- typedef typename _Key_alloc_type::reference reference;
- typedef typename _Key_alloc_type::const_reference const_reference;
- typedef typename _Rep_type::const_iterator iterator;
- typedef typename _Rep_type::const_iterator const_iterator;
- typedef typename _Rep_type::const_reverse_iterator reverse_iterator;
- typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
- typedef typename _Rep_type::size_type size_type;
- typedef typename _Rep_type::difference_type difference_type;
- std::pair<iterator, bool>
- insert(const value_type& __x)
- {
- _M_t._M_insert_unique(__x);
- }
- };
-}
-__attribute__((transaction_pure))
-void* operator new(size_t);
-__attribute__((transaction_pure))
-void operator delete(void*);
-class Widget
-{
-private:
-};
-class Screen
-{
-protected:
-std::set<Widget *> widgets;
-public:
-void addWidget(Widget* widget);
-};
-void Screen::addWidget(Widget* widget)
-{
-widgets.insert(widget);
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46653.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46653.C
deleted file mode 100644
index f8f3a1d31..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46653.C
+++ /dev/null
@@ -1,18 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O" }
-
-class shared_count
-{
-public:
- volatile int j;
- shared_count() : j(0) { }
-};
-
-shared_count * c;
-int main()
-{
- __transaction_atomic {
- shared_count sc;
- }
- return 0;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46714.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46714.C
deleted file mode 100644
index 130b58cdd..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46714.C
+++ /dev/null
@@ -1,14 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O" }
-
-static int asdf __attribute__ ((__weakref__("funky")));
-
-class Building
-{
-public:
- __attribute__((transaction_safe)) ~Building(void);
-};
-
-Building::~Building()
-{
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46941.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46941.C
deleted file mode 100644
index eac543831..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46941.C
+++ /dev/null
@@ -1,37 +0,0 @@
-// { dg-do "compile" }
-// { dg-options "-fgnu-tm" }
-
-class Obj
-{
- int dummy;
-};
-
-__attribute__((transaction_safe))
-Obj* allocate()
-{
- return new Obj;
-}
-
-__attribute__((transaction_safe))
-void deallocate(Obj * o)
-{
- delete o;
-}
-
-__attribute__((transaction_safe))
-Obj* allocatearray()
-{
- return new Obj[2];
-}
-
-__attribute__((transaction_safe))
-void deallocatearray(Obj *o[])
-{
- delete [] o;
-}
-
-/* The delete/new operators are handled by the libitm runtime. */
-/* { dg-final { scan-assembler "_ZGTtnw\[mj\]" } } */
-/* { dg-final { scan-assembler "_ZGTtna\[mj\]" } } */
-/* { dg-final { scan-assembler "_ZGTtdlPv" } } */
-/* { dg-final { scan-assembler "_ZGTtdaPv" } } */
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47340.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47340.C
deleted file mode 100644
index ead3361fa..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47340.C
+++ /dev/null
@@ -1,11 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-void* operator new(__SIZE_TYPE__) throw (int);
-
-void *point;
-
-void funky()
-{
- point = new (int);
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47530-2.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47530-2.C
deleted file mode 100644
index bcfdbe948..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47530-2.C
+++ /dev/null
@@ -1,39 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O2 -fno-inline -fdump-tree-tmedge" }
-
-class RBTree
-{
- struct RBNode
- {
- RBNode* next;
- };
-
- public:
- RBNode* sentinel;
- __attribute__((transaction_safe)) bool lookup();
-};
-
-bool RBTree::lookup()
-{
- RBNode* x = sentinel;
- while (x)
- x = x->next;
- return false;
-}
-
-
-RBTree* SET;
-
-void bench_test()
-{
- __transaction_atomic {
- SET->lookup();
- }
-}
-
-// There should be two calls to commitTransaction.
-// The one in the uninstrumented code path is a tail call.
-// The one in the instrumented code path is not.
-// { dg-final { scan-tree-dump-times "ITM_commitTransaction.*tail call" 1 "tmedge" } }
-
-// { dg-final { cleanup-tree-dump "tmedge" } }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47530.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47530.C
deleted file mode 100644
index 6a9fb1b00..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47530.C
+++ /dev/null
@@ -1,80 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O2 -fdump-tree-optimized" }
-
-typedef __SIZE_TYPE__ size_t;
-extern void *malloc(size_t);
-
-namespace bench
-{
- class LLNode
- {
- LLNode* next;
- int data;
-
- public:
- __attribute__((transaction_safe))
- LLNode(int val, LLNode* m_next)
- {
- data = val;
- next = m_next;
- }
- __attribute__((transaction_safe))
- ~LLNode(){}
- __attribute__((transaction_safe))
- int get_val() {return data;}
- __attribute__((transaction_safe))
- LLNode* get_next() {return next;}
- __attribute__((transaction_safe))
- void set_val(int val) {data = val;}
- __attribute__((transaction_safe))
- void set_next(LLNode* n) {next = n;}
- __attribute__((transaction_safe))
- void *operator new(size_t size);
- };
-
- class LinkedList
- {
- LLNode* head;
- public:
- LinkedList();
- void insert(int val);
- };
-}
-
-using bench::LinkedList;
-using bench::LLNode;
-
-
-__attribute__((transaction_safe))
-void* LLNode::operator new(size_t size)
-{
- return malloc(size);
-}
-
-LinkedList::LinkedList() : head(new LLNode(-1, 0)) { }
-
-void LinkedList::insert(int val)
-{
- __transaction_atomic {
- LLNode* prev = head;
- LLNode* curr = head->get_next();
-
- while (curr != 0) {
- if (curr->get_val() >= val)
- break;
- prev = curr;
- curr = prev->get_next();
- }
-
- if (!curr || (curr->get_val() > val)){
- LLNode* tmp = new LLNode(val,curr);
- prev->set_next(tmp);
- }
- }
-}
-
-// Make sure we don't do tail optimization on the commit, except on
-// the uninstrumented code path.
-// { dg-final { scan-tree-dump-times "commitTransaction...; .tail call" 1 "optimized" } }
-// { dg-final { cleanup-tree-dump "optimized" } }
-
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47554.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47554.C
deleted file mode 100644
index 28841bb15..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47554.C
+++ /dev/null
@@ -1,27 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-class list
-{
- public: list()
- {
- }
- list(const list&)
- {
- }
- const list& _M_get_Node_allocator() const
- {
- }
- list _M_get_Tp_allocator() const
- {
- return list(_M_get_Node_allocator());
- }
-};
-static list buildProjects;
-static void build()
-{
- __transaction_relaxed
- {
- buildProjects._M_get_Tp_allocator();
- }
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47573.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47573.C
deleted file mode 100644
index 239d9222e..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47573.C
+++ /dev/null
@@ -1,25 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-template<typename _Tp> class allocator
-{
- public:
- allocator() { }
-};
-extern template class allocator<char>;
-
-template<typename _Alloc = allocator<char> > class basic_string
-{
- public:
- _Alloc _M_dataplus;
-
- __attribute__((transaction_safe))
- basic_string() : _M_dataplus(_Alloc())
- {
- }
-};
-
-int getStringHeight()
-{
- basic_string<> tmp;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47746.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47746.C
deleted file mode 100644
index 7cd9e1006..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47746.C
+++ /dev/null
@@ -1,27 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-class InputStream
-{
- public:
- virtual unsigned int readUint32 () = 0;
-};
-
-class Building
-{
- public:
- __attribute__((transaction_safe)) Building (InputStream *stream);
- __attribute__((transaction_safe)) void freeGradients ();
- void load (InputStream *stream);
-};
-
-Building::Building (InputStream *stream)
-{
- load(stream);
-}
-
-void Building::load (InputStream *stream)
-{
- int j = (int)stream->readUint32 ();
- freeGradients ();
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47747.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47747.C
deleted file mode 100644
index 3b50904b5..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr47747.C
+++ /dev/null
@@ -1,21 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O" }
-
-class InputStream
-{
- public:
-// __attribute__((transaction_safe))
- virtual unsigned int readUint32 () = 0;
-};
-
-class Building
-{
- public:
- __attribute__((transaction_safe))
- Building (InputStream *stream);
-};
-
-Building::Building (InputStream *stream)
-{
- stream->readUint32 (); /* { dg-error "InputStream::readUint32" } */
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51212.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51212.C
deleted file mode 100644
index 9d2971bbb..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51212.C
+++ /dev/null
@@ -1,19 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -fnon-call-exceptions" }
-
-struct S
-{
- S ()
- {
- }
-};
-
-__attribute__ ((transaction_callable))
-void foo (int *p)
-{
- S s;
- if (*p)
- ;
-}
-
-// { dg-message "sorry, unimplemented: transactional memory is not supported with non-call exceptions" "-fnon-call-exceptions and -fgnu-tm together" { target *-*-* } 0 }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51411-2.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51411-2.C
deleted file mode 100644
index 4105d66ec..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51411-2.C
+++ /dev/null
@@ -1,49 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O0" }
-
-namespace std {
-template<typename _CharT> struct char_traits;
-
-template<typename _Tp> class allocator {
-};
-
-template<typename _Tp> struct less {
- bool operator()(const _Tp& __x, const _Tp& __y) const {
- return __x < __y;
- }
-};
-
-template <typename _Key, typename _Compare = std::less<_Key> > class map {
-public:
- _Compare _M_key_compare;
- bool find(const _Key& __x) {
- return _M_key_compare(__x, __x);
- }
-};
-
-template<typename _CharT, typename _Traits = char_traits<_CharT>, typename _Alloc = allocator<_CharT> > class basic_string {
-public:
- bool compare(const basic_string& __str) const {
- return 0;
- }
-};
-
-typedef basic_string<char> string;
-
-template<typename _CharT, typename _Traits>
-inline bool operator<(const basic_string<_CharT, _Traits>& __lhs, const basic_string<_CharT, _Traits>& __rhs) {
- return __lhs.compare(__rhs);
-}
-
-extern template class basic_string<char>;
-
-}
-
-std::map<std::string> units;
-
-__attribute__((transaction_callable))
-void get(const std::string &name) {
- units.find(name);
-}
-
-// { dg-final { scan-assembler "_ZGTtNKSs7compareERKSs:" } }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51411.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51411.C
deleted file mode 100644
index df20b87c8..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51411.C
+++ /dev/null
@@ -1,7 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O" }
-
-struct A
-{
- __attribute__ ((transaction_safe)) virtual void virtfoo () { }
-};
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51516.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51516.C
deleted file mode 100644
index 4e9100651..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51516.C
+++ /dev/null
@@ -1,21 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fgnu-tm -fdump-tree-optimized" } */
-
-struct C {
- long l;
- C():l(0) {}
-};
-
-int main()
-{
- C* alloc;
- __transaction_atomic {
- alloc = new C;
- }
- alloc->l = 2;
-
- return 0;
-}
-
-/* { dg-final { scan-assembler-not "_ITM_getTMCloneOrIrrevocable" } } */
-/* { dg-final { cleanup-tree-dump "optimized" } } */
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51928.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51928.C
deleted file mode 100644
index 22dbadd4b..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr51928.C
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fgnu-tm" } */
-
-struct A; // { dg-error "forward declaration of 'struct A'" }
-
-struct B
-{
- virtual B* foo(A);
-};
-
-struct C : virtual B
-{
- virtual C* foo(A) { return 0; } // { dg-error "'<anonymous>' has incomplete type" }
-};
-
-C c;
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr56419.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr56419.C
deleted file mode 100644
index c9a33a813..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr56419.C
+++ /dev/null
@@ -1,13 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm" }
-
-int x = 0;
-int inc_func(int i) {
- for (int j = 0; j < i; ++j)
- {
- __transaction_atomic { x+=1; }
- }
- return 0;
-}
-
-// { dg-final { scan-assembler "ITM_commitTransaction" } }
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/template-1.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/template-1.C
deleted file mode 100644
index cb6bb382f..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/template-1.C
+++ /dev/null
@@ -1,36 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O -fdump-tree-tmmark" }
-
-struct TrueFalse
-{
- static bool v() { return true; }
-};
-
-int global;
-
-template<typename T> int foo()
-{
- __transaction_atomic { global += 2; }
- return __transaction_atomic (global + 1);
-}
-
-template<typename T> int bar() __transaction_atomic
-{
- return global + 3;
-}
-
-template<typename T> void bar2() __transaction_atomic
-{
- global += 4;
-}
-
-int f1()
-{
- bar2<TrueFalse>();
- return foo<TrueFalse>() + bar<TrueFalse>();
-}
-
-/* 4 transactions overall, two of them write to global: */
-/* { dg-final { scan-tree-dump-times "ITM_RU4\\s*\\(&global" 4 "tmmark" } } */
-/* { dg-final { scan-tree-dump-times "ITM_WU4\\s*\\(&global" 2 "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmmark" } } */
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/template-2.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/template-2.C
deleted file mode 100644
index 53870246a..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/template-2.C
+++ /dev/null
@@ -1,22 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O -std=c++0x -fdump-tree-tmmark" }
-
-struct TrueFalse
-{
-};
-
-int global;
-
-template<typename T> int foo()
-{
- return __transaction_atomic (global + 2)
- + __transaction_atomic (global + 3);
-}
-
-int f1()
-{
- return foo<TrueFalse>();
-}
-
-/* { dg-final { scan-tree-dump-times "ITM_RU" 2 "tmmark" } } */
-/* { dg-final { cleanup-tree-dump "tmmark" } } */
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/tm.exp b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/tm.exp
deleted file mode 100644
index 42ecf545a..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/tm.exp
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2009-2013 Free Software Foundation, Inc.
-
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# GCC testsuite that uses the `dg.exp' driver.
-
-# Load support procs.
-load_lib g++-dg.exp
-
-if ![check_effective_target_fgnu_tm] {
- return
-}
-
-# If a testcase doesn't have special options, use these.
-global DEFAULT_CXXFLAGS
-if ![info exists DEFAULT_CXXFLAGS] then {
- set DEFAULT_CXXFLAGS " -pedantic-errors -Wno-long-long"
-}
-
-# Initialize `dg'.
-dg-init
-
-# Run the tests that are shared with C.
-g++-dg-runtest [lsort [glob -nocomplain $srcdir/c-c++-common/tm/*.c]] \
- $DEFAULT_CXXFLAGS
-# Run the C++ only tests.
-g++-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] \
- $DEFAULT_CXXFLAGS
-
-# All done.
-dg-finish
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/vector-1.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/vector-1.C
deleted file mode 100644
index 2c5bb39f7..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/vector-1.C
+++ /dev/null
@@ -1,15 +0,0 @@
-// { dg-do compile }
-// { dg-options "-fgnu-tm -O3" }
-
-class HashTree
-{
- __attribute__((transaction_safe)) void rehash();
- HashTree **Hash_table;
- int Hash_function;
-};
-
-__attribute__((transaction_safe)) void HashTree::rehash()
-{
- for (int i=0; i < Hash_function; i++)
- Hash_table[i] = 0;
-}
diff --git a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/wrap-2.C b/gcc-4.8.1/gcc/testsuite/g++.dg/tm/wrap-2.C
deleted file mode 100644
index e2948c8c5..000000000
--- a/gcc-4.8.1/gcc/testsuite/g++.dg/tm/wrap-2.C
+++ /dev/null
@@ -1,16 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-fgnu-tm -ftrack-macro-expansion=0" } */
-
-#define W(X) __attribute__((transaction_wrap(X)))
-void f1(void);
-void f2(int);
-int i3;
-int f7(void);
-
-void g1(void) W(f1);
-void g2(void) W(f2); /* { dg-error "is not compatible" } */
-void g3(void) W(i3); /* { dg-error "is not a function" } */
-void g4(void) W(f4); /* { dg-error "not declared in this scope\|not an identifier" } */
-void g5(void) W(1); /* { dg-error "not an identifier" } */
-void g6(void) W("f1"); /* { dg-error "not an identifier" } */
-void g7(void) W(f7); /* { dg-error "is not compatible" } */