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 }