aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/semantics.c
diff options
context:
space:
mode:
authorMarcel Vollweiler <marcel@codesourcery.com>2021-09-07 03:46:28 -0700
committerMarcel Vollweiler <marcel@codesourcery.com>2021-09-07 03:46:28 -0700
commitba1cc6956b956eb5b92c45af79a8b1fe426ec4d3 (patch)
treeeb53edb25868ea05aecaeb9c04a7eca9fcadc0b7 /gcc/cp/semantics.c
parentaad72d2ea8378e1a56c00d15daa4bdcac8a5ae39 (diff)
downloadgcc-ba1cc6956b956eb5b92c45af79a8b1fe426ec4d3.zip
gcc-ba1cc6956b956eb5b92c45af79a8b1fe426ec4d3.tar.gz
gcc-ba1cc6956b956eb5b92c45af79a8b1fe426ec4d3.tar.bz2
C, C++, Fortran, OpenMP: Add support for 'flush seq_cst' construct.
This patch adds support for the 'seq_cst' memory order clause on the 'flush' directive which was introduced in OpenMP 5.1. gcc/c-family/ChangeLog: * c-omp.c (c_finish_omp_flush): Handle MEMMODEL_SEQ_CST. gcc/c/ChangeLog: * c-parser.c (c_parser_omp_flush): Parse 'seq_cst' clause on 'flush' directive. gcc/cp/ChangeLog: * parser.c (cp_parser_omp_flush): Parse 'seq_cst' clause on 'flush' directive. * semantics.c (finish_omp_flush): Handle MEMMODEL_SEQ_CST. gcc/fortran/ChangeLog: * openmp.c (gfc_match_omp_flush): Parse 'seq_cst' clause on 'flush' directive. * trans-openmp.c (gfc_trans_omp_flush): Handle OMP_MEMORDER_SEQ_CST. gcc/testsuite/ChangeLog: * c-c++-common/gomp/flush-1.c: Add test case for 'seq_cst'. * c-c++-common/gomp/flush-2.c: Add test case for 'seq_cst'. * g++.dg/gomp/attrs-1.C: Adapt test to handle all flush clauses. * g++.dg/gomp/attrs-2.C: Adapt test to handle all flush clauses. * gfortran.dg/gomp/flush-1.f90: Add test case for 'seq_cst'. * gfortran.dg/gomp/flush-2.f90: Add test case for 'seq_cst'.
Diffstat (limited to 'gcc/cp/semantics.c')
-rw-r--r--gcc/cp/semantics.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c
index f4b042f..8b78e89 100644
--- a/gcc/cp/semantics.c
+++ b/gcc/cp/semantics.c
@@ -10039,7 +10039,7 @@ finish_omp_flush (int mo)
{
tree fn = builtin_decl_explicit (BUILT_IN_SYNC_SYNCHRONIZE);
releasing_vec vec;
- if (mo != MEMMODEL_LAST)
+ if (mo != MEMMODEL_LAST && mo != MEMMODEL_SEQ_CST)
{
fn = builtin_decl_explicit (BUILT_IN_ATOMIC_THREAD_FENCE);
vec->quick_push (build_int_cst (integer_type_node, mo));