re PR fortran/24784 (Warning about unused routine argument should not read "unused...
authorDaniel Franke <franke.daniel@gmail.com>
Sun, 8 Jul 2007 22:41:35 +0000 (18:41 -0400)
committerDaniel Franke <dfranke@gcc.gnu.org>
Sun, 8 Jul 2007 22:41:35 +0000 (18:41 -0400)
gcc:
2007-07-08  Daniel Franke  <franke.daniel@gmail.com>

* function.c (do_warn_unused_parameter): Do not warn if
        TREE_NO_WARNING is set.

gcc/fortran:
2007-07-08  Daniel Franke  <franke.daniel@gmail.com>

PR fortran/24784
PR fortran/28004
* trans-decl.c (generate_local_decl): Adjusted warning on unused
dummy arguments, tell middle-end not to emit additional warnings.

From-SVN: r126471

gcc/ChangeLog
gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c
gcc/function.c

index 061a86b..16d0b22 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
+
+       * function.c (do_warn_unused_parameter): Do not warn if
+       TREE_NO_WARNING is set.
+
 2007-07-08  Andreas Schwab  <schwab@suse.de>
 
        * doc/invoke.texi (DEC Alpha/VMS Options): Fix typo.
index 6066312..5afe8f8 100644 (file)
@@ -1,4 +1,11 @@
 2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/24784
+       PR fortran/28004
+       * trans-decl.c (generate_local_decl): Adjusted warning on unused 
+       dummy arguments, tell middle-end not to emit additional warnings.
+
+2007-07-08  Daniel Franke  <franke.daniel@gmail.com>
            Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
 
        PR fortran/17711
index 6e96063..09b5d9b 100644 (file)
@@ -3000,14 +3000,21 @@ generate_local_decl (gfc_symbol * sym)
 
       if (sym->attr.referenced)
         gfc_get_symbol_decl (sym);
-      else if (sym->attr.dummy && warn_unused_parameter)
-       gfc_warning ("Unused parameter %s declared at %L", sym->name,
+      /* INTENT(out) dummy arguments are likely meant to be set.  */
+      else if (warn_unused_variable
+              && sym->attr.dummy
+              && sym->attr.intent == INTENT_OUT)
+       gfc_warning ("dummy argument '%s' at %L was declared INTENT(OUT) but was not set",
+                    sym->name, &sym->declared_at);
+      /* Specific warning for unused dummy arguments. */
+      else if (warn_unused_variable && sym->attr.dummy)
+       gfc_warning ("unused dummy argument '%s' at %L", sym->name,
                     &sym->declared_at);
       /* Warn for unused variables, but not if they're inside a common
         block or are use-associated.  */
       else if (warn_unused_variable
               && !(sym->attr.in_common || sym->attr.use_assoc))
-       gfc_warning ("Unused variable %s declared at %L", sym->name,
+       gfc_warning ("unused variable '%s' declared at %L", sym->name,
                     &sym->declared_at);
       /* For variable length CHARACTER parameters, the PARM_DECL already
         references the length variable, so force gfc_get_symbol_decl
@@ -3022,6 +3029,11 @@ generate_local_decl (gfc_symbol * sym)
          sym->attr.referenced = 1;
          gfc_get_symbol_decl (sym);
        }
+
+      /* We do not want the middle-end to warn about unused parameters
+         as this was already done above.  */
+      if (sym->attr.dummy && sym->backend_decl != NULL_TREE)
+         TREE_NO_WARNING(sym->backend_decl) = 1;
     }
 
   if (sym->attr.dummy == 1)
index 1477b6a..c69e18b 100644 (file)
@@ -4287,7 +4287,8 @@ do_warn_unused_parameter (tree fn)
   for (decl = DECL_ARGUMENTS (fn);
        decl; decl = TREE_CHAIN (decl))
     if (!TREE_USED (decl) && TREE_CODE (decl) == PARM_DECL
-       && DECL_NAME (decl) && !DECL_ARTIFICIAL (decl))
+       && DECL_NAME (decl) && !DECL_ARTIFICIAL (decl)
+       && !TREE_NO_WARNING (decl))
       warning (OPT_Wunused_parameter, "unused parameter %q+D", decl);
 }