aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorTobias Burnus <tobias@codesourcery.com>2021-08-18 15:21:18 +0200
committerTobias Burnus <tobias@codesourcery.com>2021-08-18 15:24:22 +0200
commitf74433e70ae94a3b5291e45fea488b1cfdee4a34 (patch)
tree86caeb8480d332f032516f9191bdd42847a65944 /gcc/fortran
parentbe4a4fb516688d7cfe28a80a4aa333f4ecf0b518 (diff)
downloadgcc-f74433e70ae94a3b5291e45fea488b1cfdee4a34.zip
gcc-f74433e70ae94a3b5291e45fea488b1cfdee4a34.tar.gz
gcc-f74433e70ae94a3b5291e45fea488b1cfdee4a34.tar.bz2
Fortran: Add OpenMP's nothing directive support
Fortran version of commit 5079b7781a2c506dcdfb241347d74c7891268225 gcc/fortran/ChangeLog: * match.h (gfc_match_omp_nothing): New. * openmp.c (gfc_match_omp_nothing): New. * parse.c (decode_omp_directive): Match 'nothing' directive. gcc/testsuite/ChangeLog: * gfortran.dg/nothing-1.f90: New test. * gfortran.dg/nothing-2.f90: New test.
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/match.h1
-rw-r--r--gcc/fortran/openmp.c11
-rw-r--r--gcc/fortran/parse.c3
3 files changed, 15 insertions, 0 deletions
diff --git a/gcc/fortran/match.h b/gcc/fortran/match.h
index aac16a8..5127b4b 100644
--- a/gcc/fortran/match.h
+++ b/gcc/fortran/match.h
@@ -175,6 +175,7 @@ match gfc_match_omp_masked_taskloop_simd (void);
match gfc_match_omp_master (void);
match gfc_match_omp_master_taskloop (void);
match gfc_match_omp_master_taskloop_simd (void);
+match gfc_match_omp_nothing (void);
match gfc_match_omp_ordered (void);
match gfc_match_omp_ordered_depend (void);
match gfc_match_omp_parallel (void);
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c
index 9675b65..fd219dc 100644
--- a/gcc/fortran/openmp.c
+++ b/gcc/fortran/openmp.c
@@ -4797,6 +4797,17 @@ gfc_match_omp_ordered (void)
return match_omp (EXEC_OMP_ORDERED, OMP_ORDERED_CLAUSES);
}
+match
+gfc_match_omp_nothing (void)
+{
+ if (gfc_match_omp_eos () != MATCH_YES)
+ {
+ gfc_error ("Unexpected junk after $OMP NOTHING statement at %C");
+ return MATCH_ERROR;
+ }
+ /* Will use ST_NONE; therefore, no EXEC_OMP_ is needed. */
+ return MATCH_YES;
+}
match
gfc_match_omp_ordered_depend (void)
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index 24cc9bf..d004732 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -1005,6 +1005,9 @@ decode_omp_directive (void)
ST_OMP_MASTER_TASKLOOP);
matcho ("master", gfc_match_omp_master, ST_OMP_MASTER);
break;
+ case 'n':
+ matcho ("nothing", gfc_match_omp_nothing, ST_NONE);
+ break;
case 'l':
matcho ("loop", gfc_match_omp_loop, ST_OMP_LOOP);
break;