diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2004-07-11 01:50:28 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-07-11 01:50:28 +0200 |
commit | 9cbf8b4131d0e9668eace15277988e8d9beed8f7 (patch) | |
tree | af1eebbf418849aa2d53f44aca5cb8a0035751c8 /gcc | |
parent | a53334a410414050de6771bddf44f6febbc51e53 (diff) | |
download | gcc-9cbf8b4131d0e9668eace15277988e8d9beed8f7.zip gcc-9cbf8b4131d0e9668eace15277988e8d9beed8f7.tar.gz gcc-9cbf8b4131d0e9668eace15277988e8d9beed8f7.tar.bz2 |
trans-decl.c (gfc_create_module_variable): Nothing to do if symbol is in common, because we ...
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.fortran-torture/execute/common_2.f90 | 6 |
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 813e7c0..39057f3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -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. diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index b1b5120..4dce18a 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -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); } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3d97823..99083c2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,4 +1,9 @@ 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 * gfortran.fortran-torture/execute/common_2.f90: New test. diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/common_2.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/common_2.f90 index fd7f762..8bcdbb8 100644 --- a/gcc/testsuite/gfortran.fortran-torture/execute/common_2.f90 +++ b/gcc/testsuite/gfortran.fortran-torture/execute/common_2.f90 @@ -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 |