]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR c++/79512 (ICE: Segfault in gimple_build_call_1, at gimple.c:218)
authorJakub Jelinek <jakub@redhat.com>
Tue, 30 May 2017 07:58:55 +0000 (09:58 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 30 May 2017 07:58:55 +0000 (09:58 +0200)
Backported from mainline
2017-02-16  Jakub Jelinek  <jakub@redhat.com>

PR c++/79512
* c-parser.c (c_parser_omp_target): For -fopenmp-simd
ignore #pragma omp target even when not followed by identifier.

* parser.c (cp_parser_omp_target): For -fopenmp-simd
ignore #pragma omp target even when not followed by identifier.

* c-c++-common/gomp/pr79512.c: New test.

From-SVN: r248643

gcc/c/ChangeLog
gcc/c/c-parser.c
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/gomp/pr79512.c [new file with mode: 0644]

index caf2a72a8d0cb00e9ba4b60b135c2ea6d38d08d0..55d8225bf03be4c5cc78cc4f77ea7ec1327687e7 100644 (file)
@@ -1,6 +1,12 @@
 2017-05-30  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       2017-02-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79512
+       * c-parser.c (c_parser_omp_target): For -fopenmp-simd
+       ignore #pragma omp target even when not followed by identifier.
+
        2016-12-21  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/77767
index c5378fec81ee49082e2165fad650f50f10f1c39d..002e6a1bb7b05e6b8b13a2028dbeae04b4608f2a 100644 (file)
@@ -13980,6 +13980,11 @@ c_parser_omp_target (c_parser *parser, enum pragma_context context)
        }
     }
 
+  if (!flag_openmp) /* flag_openmp_simd  */
+    {
+      c_parser_skip_to_pragma_eol (parser, false);
+      return false;
+    }
   tree stmt = make_node (OMP_TARGET);
   TREE_TYPE (stmt) = void_type_node;
 
index fcc94ab316159434ba1254a80ae34fc30b504e85..28bf37995023f82334fe695b167257cb4e5af8b0 100644 (file)
@@ -1,6 +1,12 @@
 2017-05-30  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       2017-02-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79512
+       * parser.c (cp_parser_omp_target): For -fopenmp-simd
+       ignore #pragma omp target even when not followed by identifier.
+
        2017-01-11  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/78341
index 82b9704124026bcef833f7d6a037be60ee5ac2d8..4239fee3a584bfe3dc0cde59453407a38008f0db 100644 (file)
@@ -31566,6 +31566,11 @@ cp_parser_omp_target (cp_parser *parser, cp_token *pragma_tok,
        }
     }
 
+  if (!flag_openmp)  /* flag_openmp_simd  */
+    {
+      cp_parser_skip_to_pragma_eol (parser, pragma_tok);
+      return false;
+    }
   tree stmt = make_node (OMP_TARGET);
   TREE_TYPE (stmt) = void_type_node;
 
index 59ad05e71a6b0dd3dcf5e89909adef8a372bc577..31c5c72c522f9a23466c47d5008f4cade10fa0b7 100644 (file)
@@ -1,6 +1,11 @@
 2017-05-30  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       2017-02-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR c++/79512
+       * c-c++-common/gomp/pr79512.c: New test.
+
        2017-02-10  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/79411
diff --git a/gcc/testsuite/c-c++-common/gomp/pr79512.c b/gcc/testsuite/c-c++-common/gomp/pr79512.c
new file mode 100644 (file)
index 0000000..19ddfaf
--- /dev/null
@@ -0,0 +1,14 @@
+/* PR c++/79512 */
+/* { dg-options "-fopenmp-simd" } */
+
+void
+foo (void)
+{
+  #pragma omp target
+  #pragma omp teams
+  {
+    int i;
+    for (i = 0; i < 10; i++)
+      ;
+  }
+}