Hello,

Manuel López-Ibáñez wrote:
This is the final patch. Bootstrapped and regression tested.

The diagnostics part is the same as in
https://gcc.gnu.org/ml/gcc-patches/2014-11/msg03416.html, except for
fixing the minor nit in a comment pointed out by Dodji.

I decided that the best testing would be to convert all calls (except
for a few that use multiple locations) and see what it breaks.
Surprisingly nothing broke, which suggests that either is working as
expected or the Fortran testsuite needs many more testcases ;-)

Since I needed to check every gfc_warning call for the use of multiple
locations, I took the opportunity to replace replace '%s' with %qs and
add the appropriate OPT_W* option (I may have missed some, they can be
added later as a follow-up).

OK?

OK. Looks good to me. Thanks for the patch work!

Tobias

gcc/testsuite/ChangeLog:
2014-12-03  Manuel López-Ibáñez  <m...@gcc.gnu.org>

     * gfortran.dg/warnings_are_errors_1.f90: Update warnings to errors.
     * gfortran.dg/warnings_are_errors_1.f: Likewise.

gcc/fortran/ChangeLog:

2014-12-03  Manuel López-Ibáñez  <m...@gcc.gnu.org>

     * gfortran.h (gfc_warning): Now returns bool. Add overload that
     accepts opt.
     (gfc_warning_1): Declare.
     * error.c
     (pp_warning_buffer,warningcount_buffered,werrorcount_buffered):    New.
     (gfc_buffer_error): Set pp_warning_buffer.flush_p.
     (gfc_clear_pp_buffer): New.
     (gfc_warning_1): Renamed from gfc_warning.
     (gfc_warning): Add three new overloads. One that takes just a
     format string and ellipsis, another that takes also a warning
     option, and another that takes also va_list instead of ellipsis.
     (gfc_clear_warning): Clear pp_warning_buffer.
     (gfc_warning_check): Flush pp_warning_buffer and update warning
     and werror counters.
     (gfc_diagnostics_init): Init pp_warning_buffer.

     * Update all gfc_warning calls that do not have multiple
     locations to use %qs and OPT_W*, otherwise use gfc_warning_1.

gcc/ChangeLog:

2014-12-03  Manuel López-Ibáñez  <m...@gcc.gnu.org>

     * pretty-print.c (output_buffer::output_buffer): Init flush_p to true.
     (pp_flush): Flush only if flush_p.
     (pp_really_flush): New.
     * pretty-print.h (struct output_buffer): Add flush_p.
     (pp_really_flush): Declare.

Reply via email to