--- /dev/null
+/* { 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" } */
+}