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 !