aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/obj-c++.dg/sync-2.mm
blob: c73bbd92fbc728d1ae18253bee16c90c64177174 (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
34
35
/* Make sure that @synchronized parses and a very basic test runs.  */
/* { dg-options "-fobjc-exceptions -fgnu-runtime" } */

#include "../objc-obj-c++-shared/TestsuiteObject.h"

int main (void)
{
  TestsuiteObject *a = [TestsuiteObject new];
  TestsuiteObject *b = [TestsuiteObject new];
  TestsuiteObject *c = [TestsuiteObject new];

  /* This single-threaded test just checks that @synchronized() uses a
     recursive mutex, and that the runtime at least doesn't crash
     immediately upon finding it.
  */
  @synchronized (a)
    {
      @synchronized (a)
	{
	  @synchronized (b)
	    {
	      @synchronized (b)
		{
		  @synchronized (c)
		    {
		      @synchronized (c)
			{
			  return 0;
			}
		    }
		}
	    }
	}
    }
}