Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/c-c++-common/goacc/routine-3.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 1830386684a0 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* Test invalid calls to routines. */ | |
2 | |
3 #pragma acc routine gang | |
4 int | |
5 gang () /* { dg-message "declared here" "3" } */ | |
6 { | |
7 #pragma acc loop gang worker vector | |
8 for (int i = 0; i < 10; i++) | |
9 { | |
10 } | |
11 | |
12 return 1; | |
13 } | |
14 | |
15 #pragma acc routine worker | |
16 int | |
17 worker () /* { dg-message "declared here" "2" } */ | |
18 { | |
19 #pragma acc loop worker vector | |
20 for (int i = 0; i < 10; i++) | |
21 { | |
22 } | |
23 | |
24 return 1; | |
25 } | |
26 | |
27 #pragma acc routine vector | |
28 int | |
29 vector () /* { dg-message "declared here" } */ | |
30 { | |
31 #pragma acc loop vector | |
32 for (int i = 0; i < 10; i++) | |
33 { | |
34 } | |
35 | |
36 return 1; | |
37 } | |
38 | |
39 #pragma acc routine seq | |
40 int | |
41 seq () | |
42 { | |
43 return 1; | |
44 } | |
45 | |
46 int | |
47 main () | |
48 { | |
49 int red = 0; | |
50 #pragma acc parallel copy (red) | |
51 { | |
52 /* Independent/seq loop tests. */ | |
53 #pragma acc loop reduction (+:red) // { dg-warning "insufficient partitioning" } | |
54 for (int i = 0; i < 10; i++) | |
55 red += gang (); | |
56 | |
57 #pragma acc loop reduction (+:red) | |
58 for (int i = 0; i < 10; i++) | |
59 red += worker (); | |
60 | |
61 #pragma acc loop reduction (+:red) | |
62 for (int i = 0; i < 10; i++) | |
63 red += vector (); | |
64 | |
65 /* Gang routine tests. */ | |
66 #pragma acc loop gang reduction (+:red) /* { dg-message "containing loop" } */ | |
67 for (int i = 0; i < 10; i++) | |
68 red += gang (); // { dg-error "routine call uses same" } | |
69 | |
70 #pragma acc loop worker reduction (+:red) /* { dg-message "containing loop" } */ | |
71 for (int i = 0; i < 10; i++) | |
72 red += gang (); // { dg-error "routine call uses same" } | |
73 | |
74 #pragma acc loop vector reduction (+:red) /* { dg-message "containing loop" } */ | |
75 for (int i = 0; i < 10; i++) | |
76 red += gang (); // { dg-error "routine call uses same" } | |
77 | |
78 /* Worker routine tests. */ | |
79 #pragma acc loop gang reduction (+:red) | |
80 for (int i = 0; i < 10; i++) | |
81 red += worker (); | |
82 | |
83 #pragma acc loop worker reduction (+:red) /* { dg-message "containing loop" } */ | |
84 for (int i = 0; i < 10; i++) | |
85 red += worker (); // { dg-error "routine call uses same" } | |
86 | |
87 #pragma acc loop vector reduction (+:red) /* { dg-message "containing loop" } */ | |
88 for (int i = 0; i < 10; i++) | |
89 red += worker (); // { dg-error "routine call uses same" } | |
90 | |
91 /* Vector routine tests. */ | |
92 #pragma acc loop gang reduction (+:red) | |
93 for (int i = 0; i < 10; i++) | |
94 red += vector (); | |
95 | |
96 #pragma acc loop worker reduction (+:red) | |
97 for (int i = 0; i < 10; i++) | |
98 red += vector (); | |
99 | |
100 #pragma acc loop vector reduction (+:red) /* { dg-message "containing loop" } */ | |
101 for (int i = 0; i < 10; i++) | |
102 red += vector (); // { dg-error "routine call uses same" } | |
103 | |
104 /* Seq routine tests. */ | |
105 #pragma acc loop gang reduction (+:red) | |
106 for (int i = 0; i < 10; i++) | |
107 red += seq (); | |
108 | |
109 #pragma acc loop worker reduction (+:red) | |
110 for (int i = 0; i < 10; i++) | |
111 red += seq (); | |
112 | |
113 #pragma acc loop vector reduction (+:red) | |
114 for (int i = 0; i < 10; i++) | |
115 red += seq (); | |
116 } | |
117 | |
118 return 0; | |
119 } |