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