]> 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 22:35:40 +0000 (22:35 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Sun, 15 Sep 2019 22:35:40 +0000 (22:35 +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: r275737

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 7b65d5417486bf6dbfca290c122be6bb03e18e38..5e0bedb9c0264677af220c2a940aa6879120b3ba 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-12  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/91686
index 8c14400e33da175f5f71f58a9470169d5566cf89..ddfdb211a6d56551f1037c4075808678771e5a26 100644 (file)
@@ -5566,9 +5566,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 0b82ceadff3541640c9b9a8a9272b368771cf224..fe4a3e95a506115c07a3efd95e06ca3a6461cbfb 100644 (file)
@@ -2948,6 +2948,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 7e64b3afc6695c4f59c3dafb66ac5918dfb761f8..43e3ead9f7b4dffb692779d87417cb301b4b0ed5 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-15  Iain Sandoe  <iain@sandoe.co.uk>
 
        * obj-c++.dg/syntax-error-1.mm: Adjust line number in dg-error.
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