aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.8.1/gcc/testsuite/g++.dg/tm/pr46270.C
blob: 291e620a38792d0f221f46f03cc2c2954bf33a69 (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
// { 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;
}