aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/parse.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2016-08-31 20:42:08 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-08-31 20:42:08 +0200
commitf25f40be277fe6687e86b6395a55781211811bef (patch)
tree9c780ac0e723481df09dc6e41511db61ca68b25f /gcc/fortran/parse.c
parent9ff6fb6ede9ac2902088514067aca53e1133cc80 (diff)
downloadgcc-f25f40be277fe6687e86b6395a55781211811bef.zip
gcc-f25f40be277fe6687e86b6395a55781211811bef.tar.gz
gcc-f25f40be277fe6687e86b6395a55781211811bef.tar.bz2
re PR fortran/77374 (ICE in resolve_omp_atomic, at fortran/openmp.c:3949)
PR fortran/77374 * parse.c (parse_omp_oacc_atomic): Copy over cp->ext.omp_atomic to cp->block->ext.omp_atomic. * resolve.c (gfc_resolve_blocks): Assert block with one or two EXEC_ASSIGNs for EXEC_*_ATOMIC. * openmp.c (resolve_omp_atomic): Don't assert one or two EXEC_ASSIGNs, instead return quietly for EXEC_NOPs and otherwise error unexpected statements. * gfortran.dg/gomp/pr77374.f08: New test. From-SVN: r239903
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r--gcc/fortran/parse.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c
index deba431..86f2c42 100644
--- a/gcc/fortran/parse.c
+++ b/gcc/fortran/parse.c
@@ -4695,6 +4695,7 @@ parse_omp_oacc_atomic (bool omp_p)
np = new_level (cp);
np->op = cp->op;
np->block = NULL;
+ np->ext.omp_atomic = cp->ext.omp_atomic;
count = 1 + ((cp->ext.omp_atomic & GFC_OMP_ATOMIC_MASK)
== GFC_OMP_ATOMIC_CAPTURE);