diff options
author | Dominique d'Humieres <dominiq@lps.ens.fr> | 2017-09-29 15:15:26 +0200 |
---|---|---|
committer | Dominique d'Humieres <dominiq@gcc.gnu.org> | 2017-09-29 15:15:26 +0200 |
commit | 37d92a7e0ec5587f7cd52ac05b084ea9486d341d (patch) | |
tree | 87bde32b91e6f3c9bccd6559cdd3e902917c5ac4 /gcc/fortran/interface.c | |
parent | 20ad05861ecf0e6867eea22ab49f0cbe6b1e4768 (diff) | |
download | gcc-37d92a7e0ec5587f7cd52ac05b084ea9486d341d.zip gcc-37d92a7e0ec5587f7cd52ac05b084ea9486d341d.tar.gz gcc-37d92a7e0ec5587f7cd52ac05b084ea9486d341d.tar.bz2 |
re PR fortran/25071 (dummy argument larger than actual argument)
2017-09-29 Dominique d'Humieres <dominiq@lps.ens.fr>
PR fortran/25071
* interface.c (compare_actual_formal): Change warnings to errors
when "Actual argument contains too few elements for dummy
argument", unless -std=legacy is used.
From-SVN: r253286
Diffstat (limited to 'gcc/fortran/interface.c')
-rw-r--r-- | gcc/fortran/interface.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index fb6db21..f8ef33f 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -2991,11 +2991,20 @@ compare_actual_formal (gfc_actual_arglist **ap, gfc_formal_arglist *formal, f->sym->name, actual_size, formal_size, &a->expr->where); else if (where) - gfc_warning (OPT_Wargument_mismatch, - "Actual argument contains too few " - "elements for dummy argument %qs (%lu/%lu) at %L", - f->sym->name, actual_size, formal_size, - &a->expr->where); + { + /* Emit a warning for -std=legacy and an error otherwise. */ + if (gfc_option.warn_std == 0) + gfc_warning (OPT_Wargument_mismatch, + "Actual argument contains too few " + "elements for dummy argument %qs (%lu/%lu) " + "at %L", f->sym->name, actual_size, + formal_size, &a->expr->where); + else + gfc_error_now ("Actual argument contains too few " + "elements for dummy argument %qs (%lu/%lu) " + "at %L", f->sym->name, actual_size, + formal_size, &a->expr->where); + } return false; } |