]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
c-pragma.c (c_pp_lookup_pragma): Handle PRAGMA_CILK_SIMD.
authorJakub Jelinek <jakub@redhat.com>
Mon, 3 Mar 2014 07:27:46 +0000 (08:27 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 3 Mar 2014 07:27:46 +0000 (08:27 +0100)
* c-pragma.c (c_pp_lookup_pragma): Handle PRAGMA_CILK_SIMD.
(init_pragma): Call cpp_register_deferred_pragma for PRAGMA_CILK_SIMD
even when flag_preprocess_only.

* c-c++-common/cilk-plus/PS/vectorlength-2.c: New test.
* c-c++-common/cilk-plus/PS/vectorlength-3.c: New test.

From-SVN: r208268

gcc/c-family/ChangeLog
gcc/c-family/c-pragma.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-2.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-3.c [new file with mode: 0644]

index 088d158a083ef5bf7ed3a370a5a793b05aa2cae0..a775d4c33817fd514b4b7e7cdf730fe2debb3aa2 100644 (file)
@@ -1,3 +1,9 @@
+2014-03-03  Jakub Jelinek  <jakub@redhat.com>
+
+       * c-pragma.c (c_pp_lookup_pragma): Handle PRAGMA_CILK_SIMD.
+       (init_pragma): Call cpp_register_deferred_pragma for PRAGMA_CILK_SIMD
+       even when flag_preprocess_only.
+
 2014-02-26  Jason Merrill  <jason@redhat.com>
 
        PR c++/59231
index 91fffdbd5ba295d97219925ff5f44313da429585..2594d73a2163b533165e55daf334879706d5e1c7 100644 (file)
@@ -1221,6 +1221,13 @@ c_pp_lookup_pragma (unsigned int id, const char **space, const char **name)
        return;
       }
 
+  if (id == PRAGMA_CILK_SIMD)
+    {
+      *space = NULL;
+      *name = "simd";
+      return;
+    }
+
   if (id >= PRAGMA_FIRST_EXTERNAL
       && (id < PRAGMA_FIRST_EXTERNAL + registered_pp_pragmas.length ()))
     {
@@ -1384,7 +1391,7 @@ init_pragma (void)
                                      omp_pragmas_simd[i].id, true, true);
     }
 
-  if (flag_cilkplus && !flag_preprocess_only)
+  if (flag_cilkplus)
     cpp_register_deferred_pragma (parse_in, NULL, "simd", PRAGMA_CILK_SIMD,
                                  true, false);
 
index 7db73e4067590582ed03d28e98ed4414710c31c0..7ba8d1b33368db349becbdde8e8bba53d94d86a6 100644 (file)
@@ -1,3 +1,8 @@
+2014-03-03  Jakub Jelinek  <jakub@redhat.com>
+
+       * c-c++-common/cilk-plus/PS/vectorlength-2.c: New test.
+       * c-c++-common/cilk-plus/PS/vectorlength-3.c: New test.
+
 2014-03-02  Jan Hubicka  <hubicka@ucw.cz>
 
        PR ipa/60150
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-2.c b/gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-2.c
new file mode 100644 (file)
index 0000000..d903977
--- /dev/null
@@ -0,0 +1,12 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcilkplus" } */
+
+#define vl(n) vectorlength(2*n)
+void
+foo (int *a, int *b, int *c)
+{
+  int i;
+#pragma simd vl(4)
+  for (i = 0; i < 64; i++)
+    a[i] = b[i] * c[i];
+}
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-3.c b/gcc/testsuite/c-c++-common/cilk-plus/PS/vectorlength-3.c
new file mode 100644 (file)
index 0000000..9cef5a5
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -fcilkplus -save-temps" } */
+
+#define vl(n) vectorlength(2*n)
+void
+foo (int *a, int *b, int *c)
+{
+  int i;
+#pragma simd vl(4)
+  for (i = 0; i < 64; i++)
+    a[i] = b[i] * c[i];
+}
+
+/* { dg-final { cleanup-saved-temps } } */