diff options
author | cesar <cesar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-07-15 14:03:35 +0000 |
---|---|---|
committer | cesar <cesar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2016-07-15 14:03:35 +0000 |
commit | 89e3ec3d71a39ef44ad6b3e4b221dd3de1a091a2 (patch) | |
tree | 6399b623b5ba4e0e6d923ae4a28cddb0dbd4c7b5 /gcc/fortran/openmp.c | |
parent | 2084e279433746f813e40968d5e3139645899c53 (diff) |
gcc/fortran/
* openmp.c (gfc_match_omp_clauses): Scan for clause vector_length
before vector.
gcc/testsuite/
* gfortran.dg/goacc/vector_length.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@238375 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/openmp.c')
-rw-r--r-- | gcc/fortran/openmp.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index 865e0d9d5f06..9fff9942057b 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -1338,6 +1338,13 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, uint64_t mask, continue; break; case 'v': + /* VECTOR_LENGTH must be matched before VECTOR, because the latter + doesn't unconditionally match '('. */ + if ((mask & OMP_CLAUSE_VECTOR_LENGTH) + && c->vector_length_expr == NULL + && (gfc_match ("vector_length ( %e )", &c->vector_length_expr) + == MATCH_YES)) + continue; if ((mask & OMP_CLAUSE_VECTOR) && !c->vector && gfc_match ("vector") == MATCH_YES) @@ -1353,11 +1360,6 @@ gfc_match_omp_clauses (gfc_omp_clauses **cp, uint64_t mask, needs_space = true; continue; } - if ((mask & OMP_CLAUSE_VECTOR_LENGTH) - && c->vector_length_expr == NULL - && (gfc_match ("vector_length ( %e )", &c->vector_length_expr) - == MATCH_YES)) - continue; break; case 'w': if ((mask & OMP_CLAUSE_WAIT) |