aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-09-01 13:25:39 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2017-09-01 13:25:39 +0200
commitd2e05fcbdafc26ab0c2babf2b3065d177f71305b (patch)
treecb173e95c3a681699e55211508d33bb13bbe064a /gcc/cp
parent39baa1d35e4f4157616abf6b1d8e0507e69cbfdc (diff)
downloadgcc-d2e05fcbdafc26ab0c2babf2b3065d177f71305b.zip
gcc-d2e05fcbdafc26ab0c2babf2b3065d177f71305b.tar.gz
gcc-d2e05fcbdafc26ab0c2babf2b3065d177f71305b.tar.bz2
re PR c/81887 (pragma omp ordered simd ignored under -fopenmp-simd)
PR c/81887 c-family/ * c-pragma.c (omp_pragmas): Move "ordered" entry from here to ... (omp_pragmas_simd): ... here. * c-omp.c (c_finish_omp_ordered): If clauses isn't simd clause alone, create new clauses list containing just simd clause. c/ * c-parser.c (c_parser_omp_ordered): Handle -fopenmp-simd. cp/ * parser.c (cp_parser_omp_ordered): Handle -fopenmp-simd. fortran/ * parse.c (decode_omp_directive): Use matchs instead of matcho for end ordered and ordered directives, except for ordered depend. For -fopenmp-simd and ordered depend, reject the stmt. * trans-openmp.c (gfc_trans_omp_ordered): For -fopenmp-simd ignore threads clause and if simd clause isn't present, just translate the body. testsuite/ * c-c++-common/gomp/pr81887.c: New test. * gfortran.dg/gomp/pr81887.f90: New test. From-SVN: r251585
Diffstat (limited to 'gcc/cp')
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/parser.c10
2 files changed, 15 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index e27f04c..906448b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2017-09-01 Jakub Jelinek <jakub@redhat.com>
+
+ PR c/81887
+ * parser.c (cp_parser_omp_ordered): Handle -fopenmp-simd.
+
2017-09-01 Marek Polacek <polacek@redhat.com>
PR c++/82040
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 47d91bf..4bfae36 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -35301,6 +35301,11 @@ cp_parser_omp_ordered (cp_parser *parser, cp_token *pragma_tok,
if (strcmp (p, "depend") == 0)
{
+ if (!flag_openmp) /* flag_openmp_simd */
+ {
+ cp_parser_skip_to_pragma_eol (parser, pragma_tok);
+ return false;
+ }
if (context == pragma_stmt)
{
error_at (pragma_tok->location, "%<#pragma omp ordered%> with "
@@ -35321,6 +35326,11 @@ cp_parser_omp_ordered (cp_parser *parser, cp_token *pragma_tok,
tree clauses
= cp_parser_omp_all_clauses (parser, OMP_ORDERED_CLAUSE_MASK,
"#pragma omp ordered", pragma_tok);
+
+ if (!flag_openmp /* flag_openmp_simd */
+ && omp_find_clause (clauses, OMP_CLAUSE_SIMD) == NULL_TREE)
+ return false;
+
c_finish_omp_ordered (loc, clauses,
cp_parser_omp_structured_block (parser, if_p));
return true;