Add test cases for all the new cilk errors
authorAndi Kleen <ak@linux.intel.com>
Tue, 11 Nov 2014 05:10:35 +0000 (05:10 +0000)
committerAndi Kleen <ak@gcc.gnu.org>
Tue, 11 Nov 2014 05:10:35 +0000 (05:10 +0000)
gcc/testsuite/:

2014-11-10  Andi Kleen  <ak@linux.intel.com>

* c-c++-common/cilk-plus/CK/errors.c: New test.

From-SVN: r217334

gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/cilk-plus/CK/errors.c [new file with mode: 0644]

index 5a9d4dedd75689fe2f78312f7b35f91064b69933..56214a198583c24b24eb63dea64e566ce272d430 100644 (file)
@@ -1,3 +1,7 @@
+2014-11-10  Andi Kleen  <ak@linux.intel.com>
+
+       * c-c++-common/cilk-plus/CK/errors.c: New test.
+
 2014-11-11  Uros Bizjak  <ubizjak@gmail.com>
            Ilya Enkovich  <ilya.enkovich@intel.com>
 
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 (file)
index 0000000..ca2032c
--- /dev/null
@@ -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" } */
+}