Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/c-c++-common/cilk-plus/PS/for1.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* { dg-do compile } */ | |
2 /* { dg-options "-O3 -fcilkplus" } */ | |
3 | |
4 int *a, *b, *c; | |
5 int something; | |
6 | |
7 void foo() | |
8 { | |
9 int i, j; | |
10 | |
11 // Declaration and initialization is allowed. | |
12 #pragma simd | |
13 for (int i=0; i < 1000; i++) | |
14 a[i] = b[j]; | |
15 | |
16 // Empty initialization is not allowed. | |
17 #pragma simd | |
18 for (; i < 5; ++i) // { dg-error "expected iteration" } | |
19 a[i] = i; | |
20 | |
21 // Empty condition is not allowed. | |
22 #pragma simd | |
23 for (int i=0; ; ++i) /* { dg-error "missing controlling" } */ | |
24 a[i] = i; | |
25 | |
26 // Empty increment is not allowed. | |
27 #pragma simd | |
28 for (int i=0; i < 1234; ) /* { dg-error "missing increment" } */ | |
29 a[i] = i*2; | |
30 | |
31 #pragma simd | |
32 i = 5; /* { dg-error "for statement expected" } */ | |
33 | |
34 // Initialization variables must be either integral or pointer types. | |
35 struct S { | |
36 int i; | |
37 }; | |
38 #pragma simd | |
39 for (struct S ss = { 0 }; ss.i <= 1000; ++ss.i) /* { dg-error "invalid controlling\|invalid type for iteration\|invalid increment" } */ | |
40 a[ss.i] = b[ss.i]; | |
41 | |
42 #pragma simd | |
43 for (float f=0.0; f < 15.0; ++f) /* { dg-error "invalid type" } */ | |
44 a[(int)f] = (int) f; | |
45 | |
46 // Pointers are OK. | |
47 #pragma simd | |
48 for (int *i=c; i < &c[100]; ++i) | |
49 *a = '5'; | |
50 | |
51 // Condition of '==' is not allowed. | |
52 #pragma simd | |
53 for (int i=j; i == 5; ++i) /* { dg-error "invalid controlling predicate" } */ | |
54 a[i] = b[i]; | |
55 | |
56 // The LHS or RHS of the condition must be the initialization variable. | |
57 #pragma simd | |
58 for (int i=0; i+j < 1234; ++i) /* { dg-error "invalid controlling predicate" } */ | |
59 a[i] = b[i]; | |
60 | |
61 // Likewise. | |
62 #pragma simd | |
63 for (int i=0; 1234 < i + j; ++i) /* { dg-error "invalid controlling predicate" } */ | |
64 a[i] = b[i]; | |
65 | |
66 // Likewise, this is ok. | |
67 #pragma simd | |
68 for (int i=0; 1234 + j < i; ++i) | |
69 a[i] = b[i]; | |
70 | |
71 // According to the CilkPlus forum, casts are not allowed, even if | |
72 // they are no-ops. | |
73 #pragma simd | |
74 for (int i=0; (char)i < 1234; ++i) /* { dg-error "invalid controlling predicate" } */ | |
75 a[i] = b[i]; | |
76 | |
77 #pragma simd | |
78 for (int i=255; i != something; --i) | |
79 a[i] = b[i]; | |
80 | |
81 #pragma simd | |
82 for (int i=100; i != 5; i += something) | |
83 a[i] = b[i]; | |
84 | |
85 // Increment must be on the induction variable. | |
86 #pragma simd | |
87 for (int i=0; i < 100; j++) /* { dg-error "invalid increment expression" } */ | |
88 a[i] = b[i]; | |
89 | |
90 // Likewise. | |
91 #pragma simd | |
92 for (int i=0; i < 100; j = i + 1) /* { dg-error "invalid increment expression" } */ | |
93 a[i] = b[i]; | |
94 | |
95 // Likewise. | |
96 #pragma simd | |
97 for (int i=0; i < 100; i = j + 1) /* { dg-error "invalid increment expression" } */ | |
98 a[i] = b[i]; | |
99 | |
100 #pragma simd | |
101 for (int i=0; i < 100; i = i + 5) | |
102 a[i] = b[i]; | |
103 | |
104 // Only PLUS and MINUS increments are allowed. | |
105 #pragma simd | |
106 for (int i=0; i < 100; i *= 5) /* { dg-error "invalid increment expression" } */ | |
107 a[i] = b[i]; | |
108 | |
109 #pragma simd | |
110 for (int i=0; i < 100; i -= j) | |
111 a[i] = b[i]; | |
112 | |
113 #pragma simd | |
114 for (int i=0; i < 100; i = i + j) | |
115 a[i] = b[i]; | |
116 | |
117 #pragma simd | |
118 for (int i=0; i < 100; i = j + i) | |
119 a[i] = b[i]; | |
120 | |
121 #pragma simd | |
122 for (int i=0; i < 100; ++i, ++j) /* { dg-error "invalid increment expression" } */ | |
123 a[i] = b[i]; | |
124 | |
125 #pragma simd | |
126 for (int *point=0; point < b; ++point) | |
127 *point = 555; | |
128 | |
129 #pragma simd | |
130 for (int *point=0; point > b; --point) | |
131 *point = 555; | |
132 } |