diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cilk-plus/array_notation_tests/errors/tst_lngth.cc')
-rw-r--r-- | gcc/testsuite/g++.dg/cilk-plus/array_notation_tests/errors/tst_lngth.cc | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cilk-plus/array_notation_tests/errors/tst_lngth.cc b/gcc/testsuite/g++.dg/cilk-plus/array_notation_tests/errors/tst_lngth.cc new file mode 100644 index 00000000000..68ac452e6f4 --- /dev/null +++ b/gcc/testsuite/g++.dg/cilk-plus/array_notation_tests/errors/tst_lngth.cc @@ -0,0 +1,39 @@ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +#if HAVE_IO +#include <stdio.h> +#endif + +#define N 256 + +template <class T> +int +main2 (int argc, char **argv) +{ + T A[N], B[N]; + T A2[N][N], B2[N][N]; + T A3[N][N][N], B3[N][N][N]; + T A4[N][N][N][N], B4[N][N][N][N]; + A[0:(N / 4)] = A[4]+ B[0:(N / 2):2]; /* { dg-error "length mismatch between" } */ + A[0:(N / 4)] = B[0:(N / 2):2] + N; /* { dg-error "length mismatch between" } */ + A[0:(N / 4)] = B[0:(N / 2):2] + A[4]; /* { dg-error "length mismatch between" } */ + A[0:10:1] = B[0:10:1] + A[0:5:1]; /* { dg-error "length mismatch in " } */ + A[0:10:1] = B[0:5:1] + A[0:10:1]; /* { dg-error "length mismatch in " } */ + A2[:][:] = B2[:][0:5] + B2[:][0:10]; /* { dg-error "length mismatch in " } */ + A2[5][:] = B2[5][0:5] + B2[3][0:10]; /* { dg-error "length mismatch in " } */ + A3[:][5][:] = B3[:][5][0:5] + B3[:][3][0:10]; /* { dg-error "length mismatch in " } */ + A3[:][5][:] = B3[5][:][0:5] + B3[:][3][0:10]; /* { dg-error "length mismatch in " } */ + A4[:][:][:][:] = B4[:][:][0:5][:] + B4[:][:][:][0:5:1]; /* { dg-error "length mismatch in " } */ + return 0; +} + +int main (int argc, char **argv) +{ + main2 <char> (argc, argv); + main2 <short> (argc, argv); + main2 <int> (argc, argv); + main2 <long> (argc, argv); + main2 <long long> (argc, argv); + return 0; +} |