OSDN Git Service

PR fortran/15976
authorkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Nov 2005 04:44:16 +0000 (04:44 +0000)
committerkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 Nov 2005 04:44:16 +0000 (04:44 +0000)
* resolve.c (resolve_symbol): Disallow automatic arrays in module scope.
* gfortran.dg/automatic_module_variable.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@106777 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/automatic_module_variable.f90 [new file with mode: 0644]

index a138bb1..305f91a 100644 (file)
@@ -1,4 +1,10 @@
 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
index 50d22b0..0f17585 100644 (file)
@@ -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)
index e2557a7..fa6d7b0 100644 (file)
@@ -1,3 +1,8 @@
+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
diff --git a/gcc/testsuite/gfortran.dg/automatic_module_variable.f90 b/gcc/testsuite/gfortran.dg/automatic_module_variable.f90
new file mode 100644 (file)
index 0000000..0cf43f7
--- /dev/null
@@ -0,0 +1,16 @@
+! { 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