From: Francois-Xavier Coudert Date: Mon, 9 Jun 2014 09:25:14 +0000 (+0000) Subject: re PR fortran/45187 (ICE with CRAY pointer in module) X-Git-Tag: releases/gcc-5.1.0~7010 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f84c6bd9208814d9680f05d7fb4d9c79bc14e15a;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c292130e3961..d7d5e2423a33 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2014-06-09 Francois-Xavier Coudert + + PR fortran/45187 + * trans-decl.c (gfc_create_module_variable): Don't create + Cray-pointee decls twice. + 2014-06-06 Francois-Xavier Coudert * 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 db468589fcb7..959bcb19926c 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 1bd3bace2444..6932ebe7f1d4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-06-09 Francois-Xavier Coudert + + PR fortran/45187 + * gfortran.dg/cray_pointers_10.f90: New file. + 2014-06-09 Jakub Jelinek * 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 000000000000..1ac98f3ea46f --- /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