diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2005-11-11 04:44:16 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2005-11-11 04:44:16 +0000 |
commit | a5df14d4e57b9bad4095c48f09f7712fdcaffe14 (patch) | |
tree | 85d233bc91b50f52d627c1a4ab132a7ed7885909 /gcc/fortran/resolve.c | |
parent | f2d186905aff4e0225e37b69a089f334290e806d (diff) | |
download | gcc-a5df14d4e57b9bad4095c48f09f7712fdcaffe14.zip gcc-a5df14d4e57b9bad4095c48f09f7712fdcaffe14.tar.gz gcc-a5df14d4e57b9bad4095c48f09f7712fdcaffe14.tar.bz2 |
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
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 50d22b0..0f17585 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -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) |