trans-decl.c (gfc_create_module_variable): Nothing to do if symbol is in common,...
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
Sat, 10 Jul 2004 23:50:28 +0000 (01:50 +0200)
committerTobias Schlüter <tobi@gcc.gnu.org>
Sat, 10 Jul 2004 23:50:28 +0000 (01:50 +0200)
fortran/
* trans-decl.c (gfc_create_module_variable): Nothing to do if
symbol is in common, because we ...
(gfc_generate_module_vars): Call gfc_trans_common.

testsuite/
* gfortran.fortran-torture/execute/common_2.f90: Add check for
access to common var from module.

From-SVN: r84479

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/execute/common_2.f90

index 813e7c0d400581cc3776ae6a43586c604cd74c58..39057f37a158ee99bd5fd278a30b52957d86d535 100644 (file)
@@ -1,3 +1,9 @@
+2004-07-10  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
+
+       * trans-decl.c (gfc_create_module_variable): Nothing to do if
+       symbol is in common, because we ...
+       (gfc_generate_module_vars): Call gfc_trans_common.
+
 2004-07-10  Paul Brook  <paul@codesourcery.com>
 
        * trans-array.c (gfc_build_null_descriptor): New function.
index b1b5120e0d05fd0a47bc079c560c51a64a6bdd45..4dce18afdcc0a6cbc03cdd0dc2a4e6ae79521dc9 100644 (file)
@@ -1798,8 +1798,9 @@ gfc_create_module_variable (gfc_symbol * sym)
       && (sym->attr.flavor != FL_PARAMETER || sym->attr.dimension == 0))
     return;
 
-  /* Don't generate variables from other modules.  */
-  if (sym->attr.use_assoc)
+  /* Don't generate variables from other modules. Variables from
+     COMMONs will already have been generated.  */
+  if (sym->attr.use_assoc || sym->attr.in_common)
     return;
 
   if (sym->backend_decl)
@@ -1867,6 +1868,9 @@ gfc_generate_module_vars (gfc_namespace * ns)
   /* Check if the frontend left the namespace in a reasonable state.  */
   assert (ns->proc_name && !ns->proc_name->tlink);
 
+  /* Generate COMMON blocks.  */
+  gfc_trans_common (ns);
+
   /* Create decls for all the module variables.  */
   gfc_traverse_ns (ns, gfc_create_module_variable);
 }
index 3d97823ae499d806567a14ba4cda69bc234c0dff..99083c291adf8781b40dc400951ceee8a63a4d17 100644 (file)
@@ -1,3 +1,8 @@
+2004-07-10  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
+       
+       * gfortran.fortran-torture/execute/common_2.f90: Add check for
+       access to common var from module.
+
 2004-07-10  Tobias Schlueter  <tobias.schlueter@physik.uni-muenchen.de>
 
        PR fortran/16336
index fd7f76220f59d04e0f0d5293ce9c5a68c56c8a47..8bcdbb87a4fa232993e5a026d300b6bf00c0bf48 100644 (file)
@@ -2,6 +2,10 @@
 MODULE bar
 INTEGER :: I
 COMMON /X/I
+contains 
+subroutine set_i()
+i = 5
+end subroutine set_i
 END MODULE bar
 
 USE bar
@@ -11,4 +15,6 @@ j = 1
 i = 2
 if (j.ne.i) call abort()
 if (j.ne.2) call abort()
+call set_i()
+if (j.ne.5) call abort()
 END