diff options
| author | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-09 12:55:50 +0000 |
|---|---|---|
| committer | tobi <tobi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-09 12:55:50 +0000 |
| commit | ee29459c32a8df487f7ec3a4180843fd1dedc8fb (patch) | |
| tree | c1de926e45c095751fbacdbbeac74a56885562fc /gcc/fortran/module.c | |
| parent | 865b369897dc31f9db01aca47f459bde96139cf8 (diff) | |
| download | ppe42-gcc-ee29459c32a8df487f7ec3a4180843fd1dedc8fb.tar.gz ppe42-gcc-ee29459c32a8df487f7ec3a4180843fd1dedc8fb.zip | |
fortran/
PR fortran/13372
* module.c (write_symbol, write_symtree): Don't write symbols
wrongly added to namespace.
* trans-decl.c (gfc_create_module_variable): Don't create a
backend decl for a symbol incorrectly added to namespace.
testsuite/
PR fortran/13372
* gfortran.fortran-torture/compile/named_args_2.f90: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82834 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran/module.c')
| -rw-r--r-- | gcc/fortran/module.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 09f945292aa..eace654810a 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -3137,6 +3137,13 @@ write_symbol (int n, gfc_symbol * sym) if (sym->attr.flavor == FL_UNKNOWN || sym->attr.flavor == FL_LABEL) gfc_internal_error ("write_symbol(): bad module symbol '%s'", sym->name); + + if (sym->attr.flavor == FL_VARIABLE && sym->ts.type == BT_UNKNOWN) + /* TODO: this is a workaround for some of the problems in PR15481, + and fixes the dependent bug PR13372. In an ideal frontend, this + should never happen. */ + return; + mio_integer (&n); mio_internal_string (sym->name); @@ -3260,6 +3267,12 @@ write_symtree (gfc_symtree * st) && !sym->attr.subroutine && !sym->attr.function)) return; + if (sym->attr.flavor == FL_VARIABLE && sym->ts.type == BT_UNKNOWN) + /* TODO: this is a workaround for some of the problems in PR15481, + and fixes the dependent bug PR13372. In an ideal frontend, this + should never happen. */ + return; + if (check_unique_name (st->name)) return; |

