re PR fortran/25071 (dummy argument larger than actual argument)
authorDominique d'Humieres <dominiq@lps.ens.fr>
Fri, 29 Sep 2017 13:15:26 +0000 (15:15 +0200)
committerDominique d'Humieres <dominiq@gcc.gnu.org>
Fri, 29 Sep 2017 13:15:26 +0000 (15:15 +0200)
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

gcc/fortran/ChangeLog
gcc/fortran/interface.c

index c69801487787894da7a77172b64731c4e0d95c25..b0c9c808cb4b7e4b84df9bdcf9e4ecd13140c3f8 100644 (file)
@@ -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.
index fb6db21449df4f16e71b5db53f3778ea9f3c9389..f8ef33fc7785c3ff8274551da860cde88f67be68 100644 (file)
@@ -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;
        }