aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@gcc.gnu.org>2019-12-12 00:58:04 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2019-12-12 00:58:04 +0100
commitf8ac7d8f35e7c4a5444d4e554cb822f6346c1f2b (patch)
tree7d20a573af1e06236f0853fb15c674f275417f72 /gcc
parentf5c03155aa77bdb065fed3c5a0031db45a850493 (diff)
downloadgcc-f8ac7d8f35e7c4a5444d4e554cb822f6346c1f2b.zip
gcc-f8ac7d8f35e7c4a5444d4e554cb822f6346c1f2b.tar.gz
gcc-f8ac7d8f35e7c4a5444d4e554cb822f6346c1f2b.tar.bz2
re PR fortran/92899 ([OpenMP] ICE in gfc_trans_omp_atomic, at fortran/trans-openmp.c:3769)
PR fortran/92899 * trans-openmp.c (gfc_trans_omp_atomic): For GFC_OMP_ATOMIC_SWAP, do look through conversion on expr2 if any. * testsuite/libgomp.fortran/atomic1.f90: New test. From-SVN: r279266
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog8
-rw-r--r--gcc/fortran/trans-openmp.c1
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 474c0a4..5fae7f2 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,4 +1,10 @@
-2019-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
+2019-12-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/92899
+ * trans-openmp.c (gfc_trans_omp_atomic): For GFC_OMP_ATOMIC_SWAP,
+ do look through conversion on expr2 if any.
+
+2019-12-11 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/92897
* array.c (gfc_set_array_spec): Remove invalid assert() triggered
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index 356fd04..b6da7b9 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -3534,7 +3534,6 @@ gfc_trans_omp_atomic (gfc_code *code)
expr2 = code->expr2;
if (((atomic_code->ext.omp_atomic & GFC_OMP_ATOMIC_MASK)
!= GFC_OMP_ATOMIC_WRITE)
- && (atomic_code->ext.omp_atomic & GFC_OMP_ATOMIC_SWAP) == 0
&& expr2->expr_type == EXPR_FUNCTION
&& expr2->value.function.isym
&& expr2->value.function.isym->id == GFC_ISYM_CONVERSION)