Hi all,

here is a diagnostics patch, which makes sure that the responsible
flag is printed in several warning messages (for which this was still
missing).

The  only case that I'm not completely sure about is the hunk in
intrinsic.c. In particular I was not able to trigger this warning and
found no occurrence of it in the testsuite. Could someone check if the
flag that I'm using there is correct, please?

As a small extra the patch also mentions the -Wpedantic flag in the
gfortran documentation.

It regtests cleanly on x86_64-linux-gnu. Ok for trunk?

Cheers,
Janus


2016-02-01  Janus Weil  <ja...@gcc.gnu.org>

    PR fortran/69495
    * invoke.texi: Mention -Wpedantic as an alias of -pedantic.
    * check.c (gfc_check_transfer): Mention responsible flag in warning
    message.
    * frontend-passes.c (do_warn_function_elimination): Ditto.
    * intrinsic.c (gfc_check_intrinsic_standard): Ditto.
    * resolve.c (resolve_elemental_actual): Ditto.
    (resolve_operator): Ditto.
    (warn_unused_fortran_label): Ditto.
    * trans-common.c (translate_common): Ditto.


2016-02-01  Janus Weil  <ja...@gcc.gnu.org>

    PR fortran/69495
    * gfortran.dg/elemental_optional_args_6.f90: Use -Wpedantic flag.
Index: gcc/fortran/check.c
===================================================================
--- gcc/fortran/check.c (Revision 233091)
+++ gcc/fortran/check.c (Arbeitskopie)
@@ -5180,9 +5180,9 @@ gfc_check_transfer (gfc_expr *source, gfc_expr *mo
     return true;
 
   if (source_size < result_size)
-    gfc_warning (0, "Intrinsic TRANSFER at %L has partly undefined result: "
-                "source size %ld < result size %ld", &source->where,
-                (long) source_size, (long) result_size);
+    gfc_warning (OPT_Wsurprising, "Intrinsic TRANSFER at %L has partly "
+                "undefined result: source size %ld < result size %ld",
+                &source->where, (long) source_size, (long) result_size);
 
   return true;
 }
Index: gcc/fortran/frontend-passes.c
===================================================================
--- gcc/fortran/frontend-passes.c       (Revision 233091)
+++ gcc/fortran/frontend-passes.c       (Arbeitskopie)
@@ -715,11 +715,11 @@ do_warn_function_elimination (gfc_expr *e)
   if (e->expr_type != EXPR_FUNCTION)
     return;
   if (e->value.function.esym)
-    gfc_warning (0, "Removing call to function %qs at %L",
-                e->value.function.esym->name, &(e->where));
+    gfc_warning (OPT_Wfunction_elimination, "Removing call to function %qs "
+                "at %L", e->value.function.esym->name, &(e->where));
   else if (e->value.function.isym)
-    gfc_warning (0, "Removing call to function %qs at %L",
-                e->value.function.isym->name, &(e->where));
+    gfc_warning (OPT_Wfunction_elimination, "Removing call to function %qs "
+                "at %L", e->value.function.isym->name, &(e->where));
 }
 /* Callback function for the code walker for doing common function
    elimination.  This builds up the list of functions in the expression
Index: gcc/fortran/intrinsic.c
===================================================================
--- gcc/fortran/intrinsic.c     (Revision 233091)
+++ gcc/fortran/intrinsic.c     (Arbeitskopie)
@@ -4369,7 +4369,7 @@ gfc_check_intrinsic_standard (const gfc_intrinsic_
     {
       /* Do only print a warning if not a GNU extension.  */
       if (!silent && isym->standard != GFC_STD_GNU)
-       gfc_warning (0, "Intrinsic %qs (is %s) is used at %L",
+       gfc_warning (OPT_Wintrinsics_std, "Intrinsic %qs (is %s) is used at %L",
                     isym->name, _(symstd_msg), &where);
 
       return true;
Index: gcc/fortran/invoke.texi
===================================================================
--- gcc/fortran/invoke.texi     (Revision 233091)
+++ gcc/fortran/invoke.texi     (Arbeitskopie)
@@ -709,8 +709,10 @@ Check the code for syntax errors, but do not actua
 will generate module files for each module present in the code, but no
 other output file.
 
-@item -pedantic
+@item -Wpedantic
+@itemx -pedantic
 @opindex @code{pedantic}
+@opindex @code{Wpedantic}
 Issue warnings for uses of extensions to Fortran 95.
 @option{-pedantic} also applies to C-language constructs where they
 occur in GNU Fortran source files, such as use of @samp{\e} in a
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c       (Revision 233091)
+++ gcc/fortran/resolve.c       (Arbeitskopie)
@@ -2127,9 +2127,9 @@ resolve_elemental_actual (gfc_expr *expr, gfc_code
          && (set_by_optional || arg->expr->rank != rank)
          && !(isym && isym->id == GFC_ISYM_CONVERSION))
        {
-         gfc_warning (0, "%qs at %L is an array and OPTIONAL; IF IT IS "
-                      "MISSING, it cannot be the actual argument of an "
-                      "ELEMENTAL procedure unless there is a non-optional "
+         gfc_warning (OPT_Wpedantic, "%qs at %L is an array and OPTIONAL; "
+                      "IF IT IS MISSING, it cannot be the actual argument of "
+                      "an ELEMENTAL procedure unless there is a non-optional "
                       "argument with the same rank (12.4.1.5)",
                       arg->expr->symtree->n.sym->name, &arg->expr->where);
        }
@@ -3685,7 +3685,8 @@ resolve_operator (gfc_expr *e)
                  else
                    msg = "Inequality comparison for %s at %L";
 
-                 gfc_warning (0, msg, gfc_typename (&op1->ts), &op1->where);
+                 gfc_warning (OPT_Wcompare_reals, msg,
+                              gfc_typename (&op1->ts), &op1->where);
                }
            }
 
@@ -14890,12 +14891,13 @@ warn_unused_fortran_label (gfc_st_label *label)
   switch (label->referenced)
     {
     case ST_LABEL_UNKNOWN:
-      gfc_warning (0, "Label %d at %L defined but not used", label->value,
-                  &label->where);
+      gfc_warning (OPT_Wunused_label, "Label %d at %L defined but not used",
+                  label->value, &label->where);
       break;
 
     case ST_LABEL_BAD_TARGET:
-      gfc_warning (0, "Label %d at %L defined but cannot be used",
+      gfc_warning (OPT_Wunused_label,
+                  "Label %d at %L defined but cannot be used",
                   label->value, &label->where);
       break;
 
Index: gcc/fortran/trans-common.c
===================================================================
--- gcc/fortran/trans-common.c  (Revision 233091)
+++ gcc/fortran/trans-common.c  (Arbeitskopie)
@@ -1138,13 +1138,13 @@ translate_common (gfc_common_head *common, gfc_sym
              if (warn_align_commons)
                {
                  if (strcmp (common->name, BLANK_COMMON_NAME))
-                   gfc_warning (0,
+                   gfc_warning (OPT_Walign_commons,
                                 "Padding of %d bytes required before %qs in "
                                 "COMMON %qs at %L; reorder elements or use "
                                 "-fno-align-commons", (int)offset,
                                 s->sym->name, common->name, &common->where);
                  else
-                   gfc_warning (0,
+                   gfc_warning (OPT_Walign_commons,
                                 "Padding of %d bytes required before %qs in "
                                 "COMMON at %L; reorder elements or use "
                                 "-fno-align-commons", (int)offset,
Index: gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90
===================================================================
--- gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90     (Revision 
233091)
+++ gcc/testsuite/gfortran.dg/elemental_optional_args_6.f90     (Arbeitskopie)
@@ -1,4 +1,5 @@
 ! { dg-do run }
+! { dg-options "-Wpedantic" }
 !
 ! PR fortran/53692
 !

Reply via email to