From: Andi Kleen <a...@linux.intel.com> gcc/testsuite/:
2014-09-30 Andi Kleen <a...@linux.intel.com> * c-c++-common/cilk-plus/CK/errors.c: New test. --- gcc/testsuite/c-c++-common/cilk-plus/CK/errors.c | 56 ++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 gcc/testsuite/c-c++-common/cilk-plus/CK/errors.c diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/errors.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/errors.c new file mode 100644 index 0000000..ca2032c --- /dev/null +++ b/gcc/testsuite/c-c++-common/cilk-plus/CK/errors.c @@ -0,0 +1,56 @@ +/* { dg-do compile } */ +/* { dg-options "-fcilkplus" } */ + +int func_2(void); + +int check_spawn(int v) +{ + if (_Cilk_spawn func_2()) /* { dg-error "cannot contain" "" { target c } } */ + /* XXX: no error in C++ */ + ; + if (v + _Cilk_spawn func_2()) /* { dg-error "cannot contain" "" { target c } } */ + /* { dg-error "invalid use" "" { target c++ } 11 } */ + ; + if (v, _Cilk_spawn func_2()) /* { dg-error "spawned function call cannot be part" } */ + ; + v, _Cilk_spawn func_2(); /* { dg-error "spawned function call cannot be part" } */ + while (_Cilk_spawn func_2()) /* { dg-error "a condition for while statement" } */ + ; + while (v + _Cilk_spawn func_2()) /* { dg-error "a condition for while statement" } */ + ; + for (; _Cilk_spawn func_2() ;) /* { dg-error "cannot be used" } */ + ; + for (; v + _Cilk_spawn func_2() ;) /* { dg-error "cannot be used" } */ + ; + v + _Cilk_spawn func_2(); /* { dg-error } */ + for (_Cilk_spawn func_2() ;;) + ; + for (;; _Cilk_spawn func_2()) + ; + do {} while(_Cilk_spawn func_2()); /* { dg-error "cannot be used" } */ + do {} while(v + _Cilk_spawn func_2()); /* { dg-error "cannot be used" } */ + switch (_Cilk_spawn func_2()) /* { dg-error "cannot be used" } */ + { + default: break; + } + goto *(_Cilk_spawn func_2()); /* { dg-error "cannot be used" } */ + + return _Cilk_spawn func_2(); /* { dg-error "is not allowed" } */ +} + +int check_array_notation(int x[100], int y[100]) +{ + x[0:100] = y[0:100]; + for (; x[0:100] = y[0:100]; ) /* { dg-error "cannot be used" } */ + ; + while (x[0:100] = y[0:100]) /* { dg-error "cannot be used" } */ + ; + switch (x[0:100] = y[0:100]) /* { dg-error "cannot be used" } */ + { + default: break; + } + do {} while (x[0:100] = y[0:100]); /* { dg-error "cannot be used" } */ + if (x[0:100] = y[0:100]) /* allowed */ + ; + return x[0:100] = y[0:100]; /* { dg-error "cannot be used" } */ +} -- 2.1.1