re PR fortran/91390 (treatment of extra parameter in a subroutine call)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 26 Aug 2019 20:05:32 +0000 (20:05 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Mon, 26 Aug 2019 20:05:32 +0000 (20:05 +0000)
2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/91390
PR fortran/91473
* frontend-passes.c (gfc_check_externals): Make
gfc_errors_to_warnings conditional on -fallow-argument-mismatch.
* invoke.texi: Document -fallow-argument-mismatch.
* lang.opt: Add -fallow-argument-mismatch.

2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/91390
PR fortran/91473
* gfortran.dg/used_before_typed_4.f90: Change warning to error.
* gfortran.dg/argument_checking_20.f90: New test.

From-SVN: r274937

gcc/fortran/ChangeLog
gcc/fortran/frontend-passes.c
gcc/fortran/invoke.texi
gcc/fortran/lang.opt
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/used_before_typed_4.f90

index abdf9e6b24f0eeb491fdfbe4629555959c73b229..643a7d0829a2dfafc82b617368b5b095cffa5d76 100644 (file)
@@ -1,3 +1,12 @@
+2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/91390
+       PR fortran/91473
+       * frontend-passes.c (gfc_check_externals): Make
+       gfc_errors_to_warnings conditional on -fallow-argument-mismatch.
+       * invoke.texi: Document -fallow-argument-mismatch.
+       * lang.opt: Add -fallow-argument-mismatch.
+
 2019-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/91390
index fa416671fc6a5ae6a1f51fde2309d257c55aa5da..86debab05996b9f527d1cbda4d1113d0136c746d 100644 (file)
@@ -5477,9 +5477,9 @@ gfc_check_externals (gfc_namespace *ns)
 
   gfc_clear_error ();
 
-  /* Turn errors into warnings if -std=legacy is given by the user.  */
+  /* Turn errors into warnings if the user indicated this.  */
 
-  if (!pedantic && !(gfc_option.warn_std & GFC_STD_LEGACY))
+  if (!pedantic && flag_allow_argument_mismatch)
     gfc_errors_to_warnings (true);
 
   gfc_code_walker (&ns->code, check_externals_code, check_externals_expr, NULL);
index 1039c6084c4241de6ba3d526ce8e170fe7a1c9b9..0b8abc5076801bfc9d11f865413360df2e6ae30f 100644 (file)
@@ -116,12 +116,12 @@ by type.  Explanations are in the following sections.
 @table @emph
 @item Fortran Language Options
 @xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
-@gccoptlist{-fall-intrinsics -fallow-invalid-boz -fbackslash -fcray-pointer @gol
--fd-lines-as-code -fd-lines-as-comments -fdec -fdec-structure @gol
--fdec-intrinsic-ints -fdec-static -fdec-math -fdec-include @gol
+@gccoptlist{-fall-intrinsics -fallow-argument-mismatch -fallow-invalid-boz @gol
+-fbackslash -fcray-pointer -fd-lines-as-code -fd-lines-as-comments -fdec @gol
+-fdec-structure-fdec-intrinsic-ints -fdec-static -fdec-math -fdec-include @gol
 -fdec-format-defaults -fdec-blank-format-item -fdefault-double-8 @gol
 -fdefault-integer-8 -fdefault-real-8 -fdefault-real-10 -fdefault-real-16 @gol
--fdollar-ok @gol -ffixed-line-length-@var{n} -ffixed-line-length-none @gol
+-fdollar-ok -ffixed-line-length-@var{n} -ffixed-line-length-none @gol
 -fpad-source -ffree-form -ffree-line-length-@var{n} -ffree-line-length-none @gol
 -fimplicit-none -finteger-4-integer-8 -fmax-identifier-length @gol
 -fmodule-private -ffixed-form -fno-range-check -fopenacc -fopenmp @gol
@@ -232,6 +232,14 @@ available with @command{gfortran}.  As a consequence, @option{-Wintrinsics-std}
 will be ignored and no user-defined procedure with the same name as any
 intrinsic will be called except when it is explicitly declared @code{EXTERNAL}.
 
+@item -fallow-argument-mismatch
+@opindex @code{fallow-argument-mismatch}
+Some code contains calls to external procedures whith mismatches
+between the calls and the procedure definition, or with mismatches
+between different calls. Such code is non-conforming, and will usually
+be flagged with an error.  This options degrades the error to a
+warning.  This option is implied by @option{-std=legacy}.
+
 @item -fallow-invalid-boz
 @opindex @code{allow-invalid-boz}
 A BOZ literal constant can occur in a limited number of context in
index 85113a7da1e24c7750dc478f416bee3eba73fd81..1b3364ba9d312509bb9caf8035fe2291037defd3 100644 (file)
@@ -365,6 +365,10 @@ d
 Fortran Joined
 ; Documented in common.opt
 
+fallow-argument-mismatch
+Fortran Var(flag_allow_argument_mismatch) LangEnabledBy(Fortran,std=legacy)
+Accept argument mismatches in procedure calls.
+
 faggressive-function-elimination
 Fortran Var(flag_aggressive_function_elimination)
 Eliminate multiple function invocations also for impure functions.
index 9bdc2f9b0fb20787ec5e807f206c03cd92e3475f..5f60dc0b1f73b47613131fdee7fabad4275b7d4d 100644 (file)
@@ -1,3 +1,10 @@
+2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/91390
+       PR fortran/91473
+       * gfortran.dg/used_before_typed_4.f90: Change warning to error.
+       * gfortran.dg/argument_checking_20.f90: New test.
+
 2019-08-26  Marek Polacek  <polacek@redhat.com>
 
        PR c++/91545 - ICE in constexpr store evaluation.
index ff8a1fc2970e69753b33f1567c28e40d4cf7153e..0604cfe5638d72609f5c985a2e3b1c59055e6531 100644 (file)
@@ -22,5 +22,5 @@ END SUBROUTINE test
 PROGRAM main
   IMPLICIT NONE
   INTEGER :: arr1(42), arr2(42)
-  CALL test (3, arr1, 2, arr2) ! { dg-warning "Type mismatch in argument" }
+  CALL test (3, arr1, 2, arr2) ! { dg-error "Type mismatch in argument" }
 END PROGRAM main