diff options
author | Tobias Burnus <burnus@net-b.de> | 2012-01-20 09:06:53 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2012-01-20 09:06:53 +0100 |
commit | 583713e3265924f3262ec66872bf7443bb980789 (patch) | |
tree | 78b20c12b8b0801d546cbac716a126d087b66479 /gcc/fortran/module.c | |
parent | 229bfbcff33bdf293029dd4990b96eb77af2f55a (diff) | |
download | gcc-583713e3265924f3262ec66872bf7443bb980789.zip gcc-583713e3265924f3262ec66872bf7443bb980789.tar.gz gcc-583713e3265924f3262ec66872bf7443bb980789.tar.bz2 |
re PR fortran/51056 ([OOP] Bogus "Unused module variable '__vtab_domain_Domain_container'")
2012-01-20 Tobias Burnus <burnus@net-b.de>
Janus Weil <janus@gcc.gnu.org>
PR fortran/51056
* module.c (load_needed, read_module): Don't mark __vtab etc.
as use_only.
2012-01-20 Tobias Burnus <burnus@net-b.de>
Janus Weil <janus@gcc.gnu.org>
PR fortran/51056
* gfortran.dg/use_21.f90: New.
Co-Authored-By: Janus Weil <janus@gcc.gnu.org>
From-SVN: r183326
Diffstat (limited to 'gcc/fortran/module.c')
-rw-r--r-- | gcc/fortran/module.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c index 0616a85..b2808d4 100644 --- a/gcc/fortran/module.c +++ b/gcc/fortran/module.c @@ -4351,7 +4351,11 @@ load_needed (pointer_info *p) mio_symbol (sym); sym->attr.use_assoc = 1; - if (only_flag) + + /* Mark as only or rename for later diagnosis for explicitly imported + but not used warnings; don't mark internal symbols such as __vtab, + __def_init etc. */ + if (only_flag && sym->name[0] != '_' && sym->name[1] != '_') sym->attr.use_only = 1; if (p->u.rsym.renamed) sym->attr.use_rename = 1; @@ -4574,8 +4578,9 @@ read_module (void) p = name; /* Exception: Always import vtabs & vtypes. */ - if (p == NULL && (strncmp (name, "__vtab_", 5) == 0 - || strncmp (name, "__vtype_", 6) == 0)) + if (p == NULL && name[0] == '_' + && (strncmp (name, "__vtab_", 5) == 0 + || strncmp (name, "__vtype_", 6) == 0)) p = name; /* Skip symtree nodes not in an ONLY clause, unless there @@ -4641,7 +4646,10 @@ read_module (void) if (strcmp (name, p) != 0) sym->attr.use_rename = 1; - sym->attr.use_only = only_flag; + if (name[0] != '_' + || (strncmp (name, "__vtab_", 5) != 0 + && strncmp (name, "__vtype_", 6) != 0)) + sym->attr.use_only = only_flag; /* Store the symtree pointing to this symbol. */ info->u.rsym.symtree = st; |