diff options
author | Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2014-06-09 09:25:14 +0000 |
---|---|---|
committer | François-Xavier Coudert <fxcoudert@gcc.gnu.org> | 2014-06-09 09:25:14 +0000 |
commit | f84c6bd9208814d9680f05d7fb4d9c79bc14e15a (patch) | |
tree | b9ed4b7098ee14058307f4cde32c9df0a69eb0d4 /gcc | |
parent | 122032d2aebb1a62d6c38e6930ba7ee5d24bab34 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/cray_pointers_10.f90 | 18 |
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 |