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 }