aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2014-11-11 05:10:35 +0000
committerAndi Kleen <ak@gcc.gnu.org>2014-11-11 05:10:35 +0000
commit784b508c3046bdf7ae23ce8bad7c03e15ec63312 (patch)
treee91ccb485c9bdac3132369b1679b396d6eba4edc /gcc
parente64b984d9b74210d8a3db25791558f13a6004be4 (diff)
downloadgcc-784b508c3046bdf7ae23ce8bad7c03e15ec63312.zip
gcc-784b508c3046bdf7ae23ce8bad7c03e15ec63312.tar.gz
gcc-784b508c3046bdf7ae23ce8bad7c03e15ec63312.tar.bz2
Add test cases for all the new cilk errors
gcc/testsuite/: 2014-11-10 Andi Kleen <ak@linux.intel.com> * c-c++-common/cilk-plus/CK/errors.c: New test. From-SVN: r217334
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/c-c++-common/cilk-plus/CK/errors.c56
2 files changed, 60 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5a9d4de..56214a1 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
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" } */
+}