This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[patch, fortran] Fix PR 52668, bogus warning for only list


Hello world,

this fixes a 4.7/4.8 regression with a bogus warning for variables
which were excluded from being imported by "use, only" if they
were in a common block inside the module.

Regression-tested. OK for trunk and for 4.7 after a few days?

Thomas

2012-03-25 Thomas Koenig <tkoenig@gcc.gnu.org>

        PR fortran/52668
        * module.c:  Only mark symbols as use_only if they have been
        imported via an only list.

2012-03-25 Thomas Koenig <tkoenig@gcc.gnu.org>

        PR fortran/52668
        * gfortran.dg/use_only_6.f90: New test.
Index: module.c
===================================================================
--- module.c	(Revision 184854)
+++ module.c	(Arbeitskopie)
@@ -4389,9 +4389,24 @@ load_needed (pointer_info *p)
 
   /* 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.  */
+     __def_init etc. Only mark them if they have been explicitly loaded.  */
+
   if (only_flag && sym->name[0] != '_' && sym->name[1] != '_')
-    sym->attr.use_only = 1;
+    {
+      gfc_use_rename *u;
+
+      /* Search the use/rename list for the variable; if the variable is
+	 found, mark it.  */
+      for (u = gfc_rename_list; u; u = u->next)
+	{
+	  if (strcmp (u->use_name, sym->name) == 0)
+	    {
+	      sym->attr.use_only = 1;
+	      break;
+	    }
+	}
+    }
+
   if (p->u.rsym.renamed)
     sym->attr.use_rename = 1;
 

Attachment: use_only_6.f90
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]