Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/c-c++-common/goacc/routine-4-extern.c @ 145:1830386684a0
gcc-9.2.0
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 11:34:05 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
131:84e7813d76e9 | 145:1830386684a0 |
---|---|
1 /* Test invalid intra-routine parallelism. */ | |
2 /* Variant of 'routine-4.c', moving the callees 'extern'. */ | |
3 | |
4 extern void extern_gang (void); | |
5 #pragma acc routine (extern_gang) gang | |
6 extern void extern_worker (void); | |
7 #pragma acc routine (extern_worker) worker | |
8 extern void extern_vector (void); | |
9 #pragma acc routine (extern_vector) vector | |
10 extern void extern_seq (void); | |
11 #pragma acc routine (extern_seq) seq | |
12 | |
13 void gang (void); | |
14 void worker (void); | |
15 void vector (void); | |
16 | |
17 #pragma acc routine (gang) gang | |
18 #pragma acc routine (worker) worker | |
19 #pragma acc routine (vector) vector | |
20 | |
21 #pragma acc routine seq | |
22 void seq (void) | |
23 { | |
24 extern_gang (); /* { dg-error "routine call uses" } */ | |
25 extern_worker (); /* { dg-error "routine call uses" } */ | |
26 extern_vector (); /* { dg-error "routine call uses" } */ | |
27 extern_seq (); | |
28 | |
29 int red; | |
30 | |
31 #pragma acc loop reduction (+:red) // { dg-warning "insufficient partitioning" } | |
32 for (int i = 0; i < 10; i++) | |
33 red ++; | |
34 | |
35 #pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } | |
36 for (int i = 0; i < 10; i++) | |
37 red ++; | |
38 | |
39 #pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } | |
40 for (int i = 0; i < 10; i++) | |
41 red ++; | |
42 | |
43 #pragma acc loop vector reduction (+:red) // { dg-error "disallowed by containing routine" } | |
44 for (int i = 0; i < 10; i++) | |
45 red ++; | |
46 } | |
47 | |
48 void vector (void) | |
49 { | |
50 extern_gang (); /* { dg-error "routine call uses" } */ | |
51 extern_worker (); /* { dg-error "routine call uses" } */ | |
52 extern_vector (); | |
53 extern_seq (); | |
54 | |
55 int red; | |
56 | |
57 #pragma acc loop reduction (+:red) | |
58 for (int i = 0; i < 10; i++) | |
59 red ++; | |
60 | |
61 #pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } | |
62 for (int i = 0; i < 10; i++) | |
63 red ++; | |
64 | |
65 #pragma acc loop worker reduction (+:red) // { dg-error "disallowed by containing routine" } | |
66 for (int i = 0; i < 10; i++) | |
67 red ++; | |
68 | |
69 #pragma acc loop vector reduction (+:red) | |
70 for (int i = 0; i < 10; i++) | |
71 red ++; | |
72 } | |
73 | |
74 void worker (void) | |
75 { | |
76 extern_gang (); /* { dg-error "routine call uses" } */ | |
77 extern_worker (); | |
78 extern_vector (); | |
79 extern_seq (); | |
80 | |
81 int red; | |
82 | |
83 #pragma acc loop reduction (+:red) | |
84 for (int i = 0; i < 10; i++) | |
85 red ++; | |
86 | |
87 #pragma acc loop gang reduction (+:red) // { dg-error "disallowed by containing routine" } | |
88 for (int i = 0; i < 10; i++) | |
89 red ++; | |
90 | |
91 #pragma acc loop worker reduction (+:red) | |
92 for (int i = 0; i < 10; i++) | |
93 red ++; | |
94 | |
95 #pragma acc loop vector reduction (+:red) | |
96 for (int i = 0; i < 10; i++) | |
97 red ++; | |
98 } | |
99 | |
100 void gang (void) | |
101 { | |
102 extern_gang (); | |
103 extern_worker (); | |
104 extern_vector (); | |
105 extern_seq (); | |
106 | |
107 int red; | |
108 | |
109 #pragma acc loop reduction (+:red) | |
110 for (int i = 0; i < 10; i++) | |
111 red ++; | |
112 | |
113 #pragma acc loop gang reduction (+:red) | |
114 for (int i = 0; i < 10; i++) | |
115 red ++; | |
116 | |
117 #pragma acc loop worker reduction (+:red) | |
118 for (int i = 0; i < 10; i++) | |
119 red ++; | |
120 | |
121 #pragma acc loop vector reduction (+:red) | |
122 for (int i = 0; i < 10; i++) | |
123 red ++; | |
124 } |