Commit 7a56096c by Thomas Koenig

re PR fortran/91390 (treatment of extra parameter in a subroutine call)

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
parent 4d67cae5
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> 2019-08-24 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/91390 PR fortran/91390
......
...@@ -5477,9 +5477,9 @@ gfc_check_externals (gfc_namespace *ns) ...@@ -5477,9 +5477,9 @@ gfc_check_externals (gfc_namespace *ns)
gfc_clear_error (); 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_errors_to_warnings (true);
gfc_code_walker (&ns->code, check_externals_code, check_externals_expr, NULL); gfc_code_walker (&ns->code, check_externals_code, check_externals_expr, NULL);
......
...@@ -116,12 +116,12 @@ by type. Explanations are in the following sections. ...@@ -116,12 +116,12 @@ by type. Explanations are in the following sections.
@table @emph @table @emph
@item Fortran Language Options @item Fortran Language Options
@xref{Fortran Dialect Options,,Options controlling Fortran dialect}. @xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
@gccoptlist{-fall-intrinsics -fallow-invalid-boz -fbackslash -fcray-pointer @gol @gccoptlist{-fall-intrinsics -fallow-argument-mismatch -fallow-invalid-boz @gol
-fd-lines-as-code -fd-lines-as-comments -fdec -fdec-structure @gol -fbackslash -fcray-pointer -fd-lines-as-code -fd-lines-as-comments -fdec @gol
-fdec-intrinsic-ints -fdec-static -fdec-math -fdec-include @gol -fdec-structure-fdec-intrinsic-ints -fdec-static -fdec-math -fdec-include @gol
-fdec-format-defaults -fdec-blank-format-item -fdefault-double-8 @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 -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 -fpad-source -ffree-form -ffree-line-length-@var{n} -ffree-line-length-none @gol
-fimplicit-none -finteger-4-integer-8 -fmax-identifier-length @gol -fimplicit-none -finteger-4-integer-8 -fmax-identifier-length @gol
-fmodule-private -ffixed-form -fno-range-check -fopenacc -fopenmp @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} ...@@ -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 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}. 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 @item -fallow-invalid-boz
@opindex @code{allow-invalid-boz} @opindex @code{allow-invalid-boz}
A BOZ literal constant can occur in a limited number of context in A BOZ literal constant can occur in a limited number of context in
......
...@@ -365,6 +365,10 @@ d ...@@ -365,6 +365,10 @@ d
Fortran Joined Fortran Joined
; Documented in common.opt ; 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 faggressive-function-elimination
Fortran Var(flag_aggressive_function_elimination) Fortran Var(flag_aggressive_function_elimination)
Eliminate multiple function invocations also for impure functions. Eliminate multiple function invocations also for impure functions.
......
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> 2019-08-26 Marek Polacek <polacek@redhat.com>
PR c++/91545 - ICE in constexpr store evaluation. PR c++/91545 - ICE in constexpr store evaluation.
......
...@@ -22,5 +22,5 @@ END SUBROUTINE test ...@@ -22,5 +22,5 @@ END SUBROUTINE test
PROGRAM main PROGRAM main
IMPLICIT NONE IMPLICIT NONE
INTEGER :: arr1(42), arr2(42) 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 END PROGRAM main
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment