]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/91557 (Bogus warning about unused dummy argument _formal_*)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 15 Sep 2019 19:48:41 +0000 (19:48 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 15 Sep 2019 19:48:41 +0000 (19:48 +0000)
2019-09-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

    Backport from trunk
    PR fortran/91557
    * trans-decl.c (generate_local_decl): Do not warn if the symbol
    is artificial.
    * trans-types.c (get_formal_from_actual_arglist): Set artificial
    attribute on dummy arguments.

2019-09-15  Thomas Koenig  <tkoenig@gcc.gnu.org>

    Backport from trunk
    PR fortran/91557
    * gfortran.dg/warn_unused_dummy_argument_5.f90: New test.

From-SVN: r275733

gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c
gcc/fortran/trans-types.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 [new file with mode: 0644]

index 19a3e0c68179d96a942ac94c8127a3f6b46d3da9..44c139406252d58fa3559d0dc6a761a27732a867 100644 (file)
@@ -1,3 +1,12 @@
+2019-09-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       Backport from trunk
+       PR fortran/91557
+       * trans-decl.c (generate_local_decl): Do not warn if the symbol
+       is artificial.
+       * trans-types.c (get_formal_from_actual_arglist): Set artificial
+       attribute on dummy arguments.
+
 2019-09-14  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/91553
index 5d1d1ecb19c831b5a2c1575a8ea94140dac0e307..f5149eed981bc5c01425ea7ba5cac8ccfe472fe1 100644 (file)
@@ -5862,9 +5862,11 @@ generate_local_decl (gfc_symbol * sym)
            }
          else if (warn_unused_dummy_argument)
            {
-             gfc_warning (OPT_Wunused_dummy_argument,
-                          "Unused dummy argument %qs at %L", sym->name,
-                          &sym->declared_at);
+             if (!sym->attr.artificial)
+               gfc_warning (OPT_Wunused_dummy_argument,
+                            "Unused dummy argument %qs at %L", sym->name,
+                            &sym->declared_at);
+
              if (sym->backend_decl != NULL_TREE)
                TREE_NO_WARNING(sym->backend_decl) = 1;
            }
index d3b61e78887f599e8f3fea4c0970da5c40895d20..3c8188b30c4e5d2a45eadb9e62da9dba76686399 100644 (file)
@@ -3021,6 +3021,7 @@ get_formal_from_actual_arglist (gfc_symbol *sym, gfc_actual_arglist *actual_args
                }
            }
          s->attr.dummy = 1;
+         s->attr.artificial = 1;
          s->attr.intent = INTENT_UNKNOWN;
          (*f)->sym = s;
        }
index 0df33c2333f0946a0230e1aa1caeef8298cf89a7..6bb23d64b9829a32a268a3b58a8585bfb667406d 100644 (file)
@@ -1,3 +1,9 @@
+2019-09-15  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       Backport from trunk
+       PR fortran/91557
+       * gfortran.dg/warn_unused_dummy_argument_5.f90: New test.
+
 2019-09-14  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/91553
diff --git a/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 b/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90
new file mode 100644 (file)
index 0000000..fa93f1d
--- /dev/null
@@ -0,0 +1,16 @@
+! { dg-do compile }
+! { dg-additional-options "-Wunused-dummy-argument" }
+! PR 91557 - this used to generate a bogus warning
+! Test case by Gerhard Steinmetz
+program p
+   integer :: a, b
+   a = 1
+   call g
+contains
+   subroutine g
+      integer :: x, y
+      call h (x, y)
+      if ( a > 0 )   y = y - 1
+      b = y - x + 1
+   end
+end