// { dg-do compile }
// { dg-options "-fgnu-tm -O3 -Wno-return-type" }

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);
      }
  }

