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 000..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