]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/69826 (problem with cilkplus pragma and preprocessor variable)
authorJakub Jelinek <jakub@redhat.com>
Fri, 19 Feb 2016 22:12:54 +0000 (23:12 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 19 Feb 2016 22:12:54 +0000 (23:12 +0100)
PR c++/69826
* c-pragma.c (c_pp_lookup_pragma): Handle PRAGMA_CILK_GRAINSIZE.
(init_pragma): Register PRAGMA_CILK_GRAINSIZE even for
flag_preprocess_only.

* c-c++-common/cilk-plus/CK/pr69826-1.c: New test.
* c-c++-common/cilk-plus/CK/pr69826-2.c: New test.

From-SVN: r233571

gcc/c-family/ChangeLog
gcc/c-family/c-pragma.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/cilk-plus/CK/pr69826-1.c [new file with mode: 0644]
gcc/testsuite/c-c++-common/cilk-plus/CK/pr69826-2.c [new file with mode: 0644]

index aca8cc2e7385834a77aba9a4ade4f43a922bb4b9..90dd7fd0385be0f33f63f20a61586adc62ef690c 100644 (file)
@@ -1,3 +1,10 @@
+2016-02-19  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/69826
+       * c-pragma.c (c_pp_lookup_pragma): Handle PRAGMA_CILK_GRAINSIZE.
+       (init_pragma): Register PRAGMA_CILK_GRAINSIZE even for
+       flag_preprocess_only.
+
 2016-02-16  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/69835
index 38aabc0ddcc41c0e55d09745b8c0ad52ade9640b..c73aa8221049b85949b0b62e88f58120e43aa39d 100644 (file)
@@ -1336,6 +1336,13 @@ c_pp_lookup_pragma (unsigned int id, const char **space, const char **name)
       return;
     }
 
+  if (id == PRAGMA_CILK_GRAINSIZE)
+    {
+      *space = "cilk";
+      *name = "grainsize";
+      return;
+    }
+
   if (id >= PRAGMA_FIRST_EXTERNAL
       && (id < PRAGMA_FIRST_EXTERNAL + registered_pp_pragmas.length ()))
     {
@@ -1523,7 +1530,7 @@ init_pragma (void)
     cpp_register_deferred_pragma (parse_in, "GCC", "ivdep", PRAGMA_IVDEP, false,
                                  false);
 
-  if (flag_cilkplus && !flag_preprocess_only)
+  if (flag_cilkplus)
     cpp_register_deferred_pragma (parse_in, "cilk", "grainsize",
                                  PRAGMA_CILK_GRAINSIZE, true, false);
 
index 74fd5c3fd1f09588909b38279debc6196d90266e..27b0027802fb914de40e6b41cb565f2ba2794c9e 100644 (file)
@@ -1,5 +1,9 @@
 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
 
+       PR c++/69826
+       * c-c++-common/cilk-plus/CK/pr69826-1.c: New test.
+       * c-c++-common/cilk-plus/CK/pr69826-2.c: New test.
+
        PR c++/69850
        * g++.dg/warn/Wnonnull-compare-4.C: New test.
 
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/pr69826-1.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/pr69826-1.c
new file mode 100644 (file)
index 0000000..bcf7727
--- /dev/null
@@ -0,0 +1,25 @@
+/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-fcilkplus" } */
+/* { dg-additional-options "-std=gnu99" { target c } } */
+/* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
+
+#define GRAINSIZE 2
+
+int
+main ()
+{
+  int a[64];
+  #pragma cilk grainsize=GRAINSIZE
+  _Cilk_for (int i = 0; i < 64; i++)
+    a[i] = 0;
+  #pragma cilk grainsize =GRAINSIZE
+  _Cilk_for (int i = 0; i < 64; i++)
+    a[i]++;
+  #pragma cilk grainsize = GRAINSIZE
+  _Cilk_for (int i = 0; i < 64; i++)
+    a[i]++;
+  for (int i = 0; i < 64; i++)
+    if (a[i] != 2)
+      __builtin_abort ();
+  return 0;
+}
diff --git a/gcc/testsuite/c-c++-common/cilk-plus/CK/pr69826-2.c b/gcc/testsuite/c-c++-common/cilk-plus/CK/pr69826-2.c
new file mode 100644 (file)
index 0000000..f4056c6
--- /dev/null
@@ -0,0 +1,6 @@
+/* { dg-do run { target { i?86-*-* x86_64-*-* } } } */
+/* { dg-options "-fcilkplus -save-temps" } */
+/* { dg-additional-options "-std=gnu99" { target c } } */
+/* { dg-additional-options "-lcilkrts" { target { i?86-*-* x86_64-*-* } } } */
+
+#include "pr69826-1.c"