1! { dg-do compile }
2! { dg-additional-options "-fdump-tree-original" }
3subroutine example_criticial ()
4  use omp_lib
5  implicit none
6  integer, parameter :: my_omp_hint = omp_sync_hint_contended
7  integer i, a, b
8
9  !$omp parallel do
10  do i = 1, 10
11      !$omp critical (HASH0) hint(my_omp_hint)
12      a = a + i;
13      !$omp end critical (HASH0)
14  end do
15  !$omp parallel do
16  do i = 1, 10
17      !$omp critical (HASH1), hint(omp_sync_hint_none)
18      a = a + i;
19      !$omp end critical (HASH1)
20  end do
21  !$omp parallel do
22  do i = 1, 10
23      !$omp critical (HASH2) hint(omp_sync_hint_uncontended)
24      a = a + i;
25      !$omp end critical (HASH2)
26  end do
27  !$omp parallel do
28  do i = 1, 10
29      !$omp critical (HASH3) hint(omp_sync_hint_contended)
30      a = a + i;
31      !$omp end critical (HASH3)
32  end do
33  !$omp parallel do
34  do i = 1, 10
35      !$omp critical (HASH4) hint(omp_sync_hint_speculative)
36      a = a + i;
37      !$omp end critical (HASH4)
38  end do
39  !$omp parallel do
40  do i = 1, 10
41      !$omp critical (HASH5) hint(omp_sync_hint_nonspeculative)
42      a = a + i;
43      !$omp end critical (HASH5)
44  end do
45  !$omp parallel do
46  do i = 1, 10
47      !$omp critical (HASH6), hint(omp_sync_hint_contended + omp_sync_hint_speculative)
48      a = a + i;
49      !$omp end critical (HASH6)
50  end do
51  !$omp parallel do
52  do i = 1, 10
53      !$omp critical hint(omp_sync_hint_none + omp_sync_hint_none)
54      a = a + i;
55      !$omp end critical
56  end do
57end
58
59! { dg-final { scan-tree-dump-times "omp critical \\(hash0\\) hint\\(2\\)" 1 "original" } }
60! { dg-final { scan-tree-dump-times "omp critical \\(hash1\\) hint\\(0\\)" 1 "original" } }
61! { dg-final { scan-tree-dump-times "omp critical \\(hash2\\) hint\\(1\\)" 1 "original" } }
62! { dg-final { scan-tree-dump-times "omp critical \\(hash3\\) hint\\(2\\)" 1 "original" } }
63! { dg-final { scan-tree-dump-times "omp critical \\(hash4\\) hint\\(8\\)" 1 "original" } }
64! { dg-final { scan-tree-dump-times "omp critical \\(hash5\\) hint\\(4\\)" 1 "original" } }
65! { dg-final { scan-tree-dump-times "omp critical \\(hash6\\) hint\\(10\\)" 1 "original" } }
66! { dg-final { scan-tree-dump-times "omp critical hint\\(0\\)" 1 "original" } }
67