This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This is just a RFC so no Changelog yet. It bootstraps and passes the testsuite. I have three major questions: * Dodji: Do the common diagnostics part look reasonable? I tried to be as least invasive as possible. If you have comments or suggestions they are very welcome. * Fortran devs: Is this approach acceptable? The main idea is to have an output_buffer called pp_warning_buffer with the flush_p bit unset if we are buffering. When printing buffered warnings, use this output_buffer in the global_dc->printer instead of the (unbuffered one) used by the *_now variants. In principle this could support several buffered diagnostics, but Fortran only seems to buffer at most one. The ugliest part is how to handle warningcount and werrorcount. I could handle this in the common machinery in a better way by storing DK_WERROR in the diagnostic->kind and checking it after printing. This way we can first decrease both counters, then increase back the one not changed and store the kind somewhere. then if the diagnostic is canceled nothing is done, if it is flushed, then increase the appropriate counter (perhaps calling into the common part for any post action due to Wfatal-errors or -fmax-errors=). I can also hide the output_buffer switching inside two helper functions, but the helper function would need to use either a static variable or a global one to save and restore the tmp_buffer. I'm not sure that is better or worse (the current code uses a global pointer &cur_error_buffer, so perhaps I should have used a similar approach). * Fortran devs #2: The testsuite is testing that the warning is eventually printed. However, I'm not sure it is testing when the warning is buffered and then discarded, is it? If not, how can I produce such a test? Thanks, Manuel.
Attachment:
fortran-diagnostics-warning-buffer.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |