/* { dg-do run } */ /* { dg-options "-fcilkplus" } */ #define HAVE_IO 0 #if HAVE_IO #include #endif #include template int main2(int argc); int main (void) { return (main2(1) + main2 (1) + main2 (1)); } #if HAVE_IO template int print_array (T *array, int size); template int print_array (T *array, int size) { for (int ii = 0; ii < size; ii++) printf("%d ", array[ii]); printf("\n"); return 0; } #endif template int main2(int argc) { int array[10], array_serial[10]; for (int ii = 0; ii < 10; ii++) { array[ii] = 0; array_serial[ii] = 0; } array[:] = 19383; for (int ii = 0; ii < 10; ii++) array_serial[ii] = 19383; ++array[:]; for (int ii = 0; ii < 10; ii++) ++array_serial[ii]; #if HAVE_IO print_array(array, 10); print_array(array_serial, 10); #endif for (int ii = 0; ii < 10; ii++) if (array_serial[ii] != array[ii]) return 1; for (int ii = 0; ii < 10; ii++) ++array[:]; for (int ii = 0; ii < 10; ii++) for (int jj = 0; jj < 10; jj++) ++array_serial[jj]; #if HAVE_IO print_array(array, 10); print_array(array_serial, 10); #endif for (int ii = 0; ii < 10; ii++) if (array_serial[ii] != array[ii]) return 2; if (argc == 2) ++array[0:10:1]; if (argc == 2) { for (int ii = 0; ii < 10; ii++) ++array_serial[ii]; } #if HAVE_IO print_array(array, 10); print_array(array_serial, 10); #endif for (int ii = 0; ii < 10; ii++) if (array_serial[ii] != array[ii]) return 3; ++array[0:10/argc:argc]; for (int ii = 0; ii < 10; ii += argc) { ++array_serial[ii]; } #if HAVE_IO print_array(array, 10); print_array(array_serial, 10); #endif for (int ii = 0; ii < 10; ii++) if (array_serial[ii] != array[ii]) return 4; return 0; }