From: Thomas Koenig Date: Sun, 15 Sep 2019 19:48:41 +0000 (+0000) Subject: backport: re PR fortran/91557 (Bogus warning about unused dummy argument _formal_*) X-Git-Tag: releases/gcc-9.3.0~622 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=121cc969e61954f1b8b40d8a9caa279b289f3710;p=thirdparty%2Fgcc.git backport: re PR fortran/91557 (Bogus warning about unused dummy argument _formal_*) 2019-09-15 Thomas Koenig 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 Backport from trunk PR fortran/91557 * gfortran.dg/warn_unused_dummy_argument_5.f90: New test. From-SVN: r275733 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 19a3e0c68179..44c139406252 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2019-09-15 Thomas Koenig + + 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 PR fortran/91553 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 5d1d1ecb19c8..f5149eed981b 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -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; } diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index d3b61e78887f..3c8188b30c4e 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -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; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0df33c2333f0..6bb23d64b982 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2019-09-15 Thomas Koenig + + Backport from trunk + PR fortran/91557 + * gfortran.dg/warn_unused_dummy_argument_5.f90: New test. + 2019-09-14 Steven G. Kargl 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 index 000000000000..fa93f1d7ff27 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/warn_unused_dummy_argument_5.f90 @@ -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