/* { dg-do run } */ /* { dg-options "-fcilkplus" } */ #include #include #if HAVE_IO #include #endif template int main2 (char **argv); int main (void) { int x = 1, y = 1, z = 1; char *array[2]; array[0] = strdup ("a.out"); array[1] = strdup ("5"); x = main2 (array); x += main2 (array); y = main2 (array); y += main2 (array); y += main2 (array); y += main2 (array); z = main2 (array); z += main2 (array); y += main2 (array); z += main2 (array); return x+y+z; } template int main2 (char **argv) { T array[10]; int ii = 0, x = 2, z= 0 , y = 0; for (ii = 0; ii < 10; ii++) array[ii] = 10; array[0:10:1] = (T)15; for (ii = 0; ii < 10; ii++) if (array[ii] != (T)15) return 1; array[0:5:2] = (T)20; for (ii = 0; ii < 10; ii += 2) if (array[ii] != (T)20) return 2; x = atoi(argv[1]); z = (10-atoi(argv[1]))/atoi(argv[1]); array[x:5:z] = (T)50; for (ii = x; ii < 10; ii += z) if (array[ii] != (T)50) return 3; x = atoi(argv[1]); z = (10-atoi(argv[1]))/atoi(argv[1]); /* (10 - 5) / 5 = 1 */ y = 10-atoi(argv[1]); array[x:y:z] = (T)52; #if HAVE_IO for (ii = atoi ("5"); ii < (atoi ("5") + atoi ("5")); ii += atoi ("1")) std::printf("%d\t", (int)array[ii]); std::printf("\n"); #endif for (ii = x; ii < 10; ii += z) if (array[ii] != (T)52) return 4; x = atoi(argv[1]); z = (10-atoi(argv[1]))/atoi(argv[1]); y = 10-atoi(argv[1]); array[x:y:((10-atoi(argv[1]))/atoi(argv[1]))] = (T)25; for (ii = x; ii < 10; ii += z) if (array[ii] != (T)25) return 5; x = atoi(argv[1]); z = (10-atoi(argv[1]))/atoi(argv[1]); y = 10-atoi(argv[1]); array[atoi(argv[1]):(10-atoi(argv[1])):((10-atoi(argv[1]))/atoi(argv[1]))] = (T)14; for (ii = x; ii < 10; ii += z) if (array[ii] != (T)14) return 6; array[atoi("5"):5:1] = (T)65; for (ii = atoi ("5"); ii < 10; ii++) if (array[ii] != (T)65) return 7; array[atoi("5"):atoi("5"):atoi("1")] = 99; #if HAVE_IO for (ii = atoi ("5"); ii < (atoi ("5") + atoi ("5")); ii += atoi ("1")) std::printf("%d\t", (int)array[ii]); std::printf("\n"); #endif for (ii = atoi ("5"); ii < (atoi ("5") + atoi ("5")); ii += atoi ("1")) if (array[ii] != (T)99) return 8; return 0; }