Commit a5df14d4 by Paul Thomas Committed by Steven G. Kargl

re PR fortran/15976 (ICE: assertion failure in trans-array.c)

PR fortran/15976
* resolve.c (resolve_symbol): Disallow automatic arrays in module scope.
* gfortran.dg/automatic_module_variable.f90: New test.



Co-Authored-By: Steven G. Kargl <kargls@comcast.net>

From-SVN: r106777
parent f2d18690
2005-11-10 Paul Thomas <pault@gcc.gnu.org>
Steven G. Kargl <kargls@comcast.net>
PR fortran/15976
* resolve.c (resolve_symbol): Disallow automatic arrays in module scope.
2005-11-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24655
PR fortran/24755
......
......@@ -4282,6 +4282,22 @@ resolve_symbol (gfc_symbol * sym)
return;
}
/* A module array's shape needs to be constant. */
if (sym->ns->proc_name
&& sym->attr.flavor == FL_VARIABLE
&& sym->ns->proc_name->attr.flavor == FL_MODULE
&& !sym->attr.use_assoc
&& !sym->attr.allocatable
&& !sym->attr.pointer
&& sym->as != NULL
&& !gfc_is_compile_time_shape (sym->as))
{
gfc_error ("Module array '%s' at %L cannot be automatic "
"or assumed shape", sym->name, &sym->declared_at);
return;
}
/* Make sure that character string variables with assumed length are
dummy arguments. */
......@@ -4465,7 +4481,7 @@ resolve_symbol (gfc_symbol * sym)
switch (sym->attr.flavor)
{
case FL_VARIABLE:
/* Can the sybol have an initializer? */
/* Can the symbol have an initializer? */
flag = 0;
if (sym->attr.allocatable || sym->attr.external || sym->attr.dummy
|| sym->attr.intrinsic || sym->attr.result)
......
2005-11-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/15976
* gfortran.dg/automatic_module_variable.f90: New test.
2005-11-11 Kaz Kojima <kkojima@gcc.gnu.org>
PR target/24445
! { dg-do compile }
! Tests fix for PR15976
!
module sd
integer, parameter :: n = 20
integer :: i(n)
integer :: j(m) ! { dg-error "cannot be automatic or assumed shape" }
integer, pointer :: p(:)
integer, allocatable :: q(:)
contains
function init (x, l)
integer :: x(l)
integer :: init(l)
init = x
end function init
end module sd
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment