]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/testsuite/g++.dg/cilk-plus/AN/array_test2_tplt.cc
[Patch AArch64] Fixup floating point division with -march=armv8-a+nosimd
[thirdparty/gcc.git] / gcc / testsuite / g++.dg / cilk-plus / AN / array_test2_tplt.cc
1 /* { dg-do run } */
2 /* { dg-options "-fcilkplus -Wno-overflow" } */
3
4 #include <cstdlib>
5 #include <string.h>
6 template <class T> int main2(char **argv);
7 int main(void)
8 {
9 int x = 1, y = 1, z = 1, w = 1;
10 char *array[2];
11 array[0] = strdup ("a.out");
12 array[1] = strdup ("5");
13 w = main2<short>(array);
14 w += main2<unsigned short> (array);
15 x = main2<char> (array);
16 x += main2<unsigned char> (array);
17 y = main2<int> (array);
18 y += main2<unsigned int> (array);
19 z = main2<long> (array);
20 z += main2<unsigned long> (array);
21 z += main2<long long> (array);
22
23 return (w+x+y+z);
24 }
25
26 template<class T>
27 int main2(char **argv)
28 {
29 T array[10], array2[10];
30 int ii = 0, x = 2, z= 0 , y = 0 ;
31
32 for (ii = 0; ii < 10; ii++)
33 {
34 array[ii] = 10;
35 array2[ii] = 5000000;
36 }
37
38 array2[0:10:1] = array[0:10:1];
39
40 for (ii = 0; ii < 10; ii++)
41 if (array2[ii] != array[ii])
42 return 1;
43
44 for (ii = 0; ii < 10; ii++)
45 {
46 array[ii] = 10;
47 array2[ii] = 5000000;
48 }
49
50 array2[0:5:2] = array[0:5:2];
51
52 for (ii = 0; ii < 10; ii += 2)
53 if (array[ii] != array2[ii])
54 return 2;
55
56 for (ii = 0; ii < 10; ii++)
57 {
58 array[ii] = 10;
59 array2[ii] = 5000000;
60 }
61 x = atoi(argv[1]);
62 z = (10-atoi(argv[1]))/atoi(argv[1]);
63
64 array2[x:5:z] = array[x:5:z];
65
66 for (ii = x; ii < 5; ii += z)
67 if (array2[ii] != array[ii])
68 return 3;
69
70 for (ii = 0; ii < 10; ii++)
71 {
72 array[ii] = 500;
73 array2[ii] = 1000000;
74 }
75 x = atoi(argv[1]);
76 z = (10-atoi(argv[1]))/atoi(argv[1]);
77 y = 10-atoi(argv[1]);
78
79 array2[x:y:z] = array[x:y:z];
80 for (ii = x; ii < 10; ii = ii + z)
81 if (array2[ii] != array[ii])
82 return 4;
83
84 for (ii = 0; ii < 10; ii++)
85 {
86 array[ii] = 500;
87 array2[ii] = 1000000;
88 }
89 x = atoi(argv[1]);
90 z = (10-atoi(argv[1]))/atoi(argv[1]);
91 y = 10-atoi(argv[1]);
92
93 array[x:y:((10-atoi(argv[1]))/atoi(argv[1]))] =
94 array2[x:y:((10-atoi(argv[1]))/atoi(argv[1]))];
95
96 for (ii = x; ii < 10; ii += z)
97 if (array[ii] != array2[ii])
98 return 6;
99
100
101 x = atoi(argv[1]);
102 z = (10-atoi(argv[1]))/atoi(argv[1]);
103 y = 10-atoi(argv[1]);
104
105 for (ii = 0; ii < 10; ii++)
106 {
107 array[ii] = 500;
108 array2[ii] = 1000000;
109 }
110
111 array[atoi(argv[1]):(10-atoi(argv[1])):((10-atoi(argv[1]))/atoi(argv[1]))] =
112 array2[atoi(argv[1]):(10-atoi(argv[1])):((10-atoi(argv[1]))/atoi(argv[1]))];
113 for (ii = x; ii < 10; ii += z)
114 if (array[ii] != array2[ii])
115 return 6;
116
117 for (ii = 0; ii < 10; ii++)
118 {
119 array[ii] = 4;
120 array2[ii] = 2;
121 }
122
123 array[atoi("5"):5:1] = array2[atoi("5"):5:1];
124
125 for (ii = atoi ("5"); ii < 10; ii++)
126 if (array[ii] != array2[ii])
127 return 7;
128
129 for (ii = 0; ii < 10; ii++)
130 {
131 array[ii] = 5;
132 array2[ii] = 1;
133 }
134 array[atoi("5"):atoi("5"):atoi("1")] = array2[atoi("5"):atoi("5"):atoi("1")];
135
136 for (ii = 5; ii < 10; ii++)
137 if (array2[ii] != array[ii])
138 return 8;
139
140 return 0;
141 }