diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/interface.c | 19 |
2 files changed, 21 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c698014..b0c9c80 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +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. + 2017-09-27 Thomas Schwinge <thomas@codesourcery.com> * lang.opt <Wdo-subscript>: End help text with a period. 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; } |