aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/g++.dg/tm/cgraph_edge.C
blob: d4c8f77fe89e0b6fb19f730bfe2bc99462347a7c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// { 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);
      }
  }