aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancois-Xavier Coudert <fxcoudert@gcc.gnu.org>2014-06-09 09:25:14 +0000
committerFrançois-Xavier Coudert <fxcoudert@gcc.gnu.org>2014-06-09 09:25:14 +0000
commitf84c6bd9208814d9680f05d7fb4d9c79bc14e15a (patch)
treeb9ed4b7098ee14058307f4cde32c9df0a69eb0d4
parent122032d2aebb1a62d6c38e6930ba7ee5d24bab34 (diff)
downloadgcc-f84c6bd9208814d9680f05d7fb4d9c79bc14e15a.zip
gcc-f84c6bd9208814d9680f05d7fb4d9c79bc14e15a.tar.gz
gcc-f84c6bd9208814d9680f05d7fb4d9c79bc14e15a.tar.bz2
re PR fortran/45187 (ICE with CRAY pointer in module)
PR fortran/45187 * trans-decl.c (gfc_create_module_variable): Don't create Cray-pointee decls twice. * gfortran.dg/cray_pointers_10.f90: New file. From-SVN: r211367
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/cray_pointers_10.f9018
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index c292130..d7d5e24 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2014-06-09 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/45187
+ * trans-decl.c (gfc_create_module_variable): Don't create
+ Cray-pointee decls twice.
+
2014-06-06 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
* io.c (resolve_tag): Warn on non-default kind for NUMBER,
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index db46858..959bcb1 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -4278,8 +4278,8 @@ gfc_create_module_variable (gfc_symbol * sym)
}
/* Don't generate variables from other modules. Variables from
- COMMONs will already have been generated. */
- if (sym->attr.use_assoc || sym->attr.in_common)
+ COMMONs and Cray pointees will already have been generated. */
+ if (sym->attr.use_assoc || sym->attr.in_common || sym->attr.cray_pointee)
return;
/* Equivalenced variables arrive here after creation. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1bd3bac..6932ebe 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-06-09 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/45187
+ * gfortran.dg/cray_pointers_10.f90: New file.
+
2014-06-09 Jakub Jelinek <jakub@redhat.com>
* gfortran.dg/gomp/udr6.f90 (f1, f2, f3): Use complex(kind=8)
diff --git a/gcc/testsuite/gfortran.dg/cray_pointers_10.f90 b/gcc/testsuite/gfortran.dg/cray_pointers_10.f90
new file mode 100644
index 0000000..1ac98f3
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/cray_pointers_10.f90
@@ -0,0 +1,18 @@
+! { dg-do run }
+! { dg-options "-fcray-pointer" }
+!
+! PR fortran/45187
+!
+module foo
+ implicit none
+ real :: a
+ pointer(c_a, a)
+end module foo
+
+program test
+ use foo
+ real :: z
+ c_a = loc(z)
+ a = 42
+ if (z /= 42) call abort
+end program test