aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJulian Brown <julian@codesourcery.com>2019-06-19 00:15:53 +0200
committerThomas Schwinge <tschwinge@gcc.gnu.org>2019-06-19 00:15:53 +0200
commit8701b671ee19eaf54c4fc67d27ed0a2b57467f94 (patch)
tree30ff0cdb6ba77d92c5ba2292110c14ad0c97a231 /gcc
parentca8ecd919453664b1312e6c7d236e404731d8bb0 (diff)
downloadgcc-8701b671ee19eaf54c4fc67d27ed0a2b57467f94.zip
gcc-8701b671ee19eaf54c4fc67d27ed0a2b57467f94.tar.gz
gcc-8701b671ee19eaf54c4fc67d27ed0a2b57467f94.tar.bz2
[PR90921] Fortran OpenACC 'declare' directive's module handling causes duplicate data clauses
gcc/fortran/ PR fortran/90921 * trans-decl.c (finish_oacc_declare): Reset module_oacc_clauses before scanning each namespace. gcc/testsuite/ PR fortran/90921 * gfortran.dg/goacc/declare-3.f95: Update. From-SVN: r272454
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c2
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gfortran.dg/goacc/declare-3.f956
4 files changed, 16 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 6fd97b6..32d961a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2019-06-18 Julian Brown <julian@codesourcery.com>
+
+ PR fortran/90921
+ * trans-decl.c (finish_oacc_declare): Reset module_oacc_clauses
+ before scanning each namespace.
+
2019-06-18 Thomas Schwinge <thomas@codesourcery.com>
PR fortran/85221
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index f504c27..64ce4bb 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -6491,6 +6491,7 @@ finish_oacc_declare (gfc_namespace *ns, gfc_symbol *sym, bool block)
gfc_omp_clauses *omp_clauses = NULL;
gfc_omp_namelist *n, *p;
+ module_oacc_clauses = NULL;
gfc_traverse_ns (ns, find_module_oacc_declare_clauses);
if (module_oacc_clauses && sym->attr.flavor == FL_PROGRAM)
@@ -6502,7 +6503,6 @@ finish_oacc_declare (gfc_namespace *ns, gfc_symbol *sym, bool block)
new_oc->clauses = module_oacc_clauses;
ns->oacc_declare = new_oc;
- module_oacc_clauses = NULL;
}
if (!ns->oacc_declare)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 552ccc6..6ff197c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2019-06-18 Thomas Schwinge <thomas@codesourcery.com>
+ PR fortran/90921
+ * gfortran.dg/goacc/declare-3.f95: Update.
+
PR fortran/85221
* gfortran.dg/goacc/declare-3.f95: New file.
diff --git a/gcc/testsuite/gfortran.dg/goacc/declare-3.f95 b/gcc/testsuite/gfortran.dg/goacc/declare-3.f95
index ec5d4c5..80d9903 100644
--- a/gcc/testsuite/gfortran.dg/goacc/declare-3.f95
+++ b/gcc/testsuite/gfortran.dg/goacc/declare-3.f95
@@ -1,5 +1,7 @@
! Test valid usage of the OpenACC 'declare' directive.
+! { dg-additional-options "-fdump-tree-original" }
+
module mod_a
implicit none
integer :: a
@@ -44,4 +46,8 @@ program test
use mod_c
use mod_d
use mod_e
+
+ ! { dg-final { scan-tree-dump {(?n)#pragma acc data map\(force_alloc:d\) map\(force_deviceptr:c\) map\(force_to:b\) map\(force_alloc:a\)$} original } }
end program test
+
+! { dg-final { scan-tree-dump-times {#pragma acc data} 1 original } }