aboutsummaryrefslogtreecommitdiff
path: root/gcc/debug.h
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2018-07-31 21:08:55 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2018-07-31 21:08:55 +0000
commite540ccc0e281a6e30c14e55b39334db27e55b3bf (patch)
tree865d39a86fd15f60edef5bfc3c1dcd613b307fdf /gcc/debug.h
parent31d87dd2368e1ecc527829f0da7c99a46cd16542 (diff)
downloadgcc-e540ccc0e281a6e30c14e55b39334db27e55b3bf.zip
gcc-e540ccc0e281a6e30c14e55b39334db27e55b3bf.tar.gz
gcc-e540ccc0e281a6e30c14e55b39334db27e55b3bf.tar.bz2
c-family: clean up the data tables in c-format.c
The format_char_info tables in c-format.c for our own formats contain a lot of repetition. This patch adds a macro to express the conversion specifiers implemented within pp_format, making it clearer which are custom ones added by the various diagnostic_format_decoder callbacks. Doing so uncovered a few mistakes in the data (based on comparison with the source of the diagnostic_format_decoder callbacks, and the notes below), which the patch fixes: - gcc_diag_char_table didn't have 'Z', but it *is* implemented by pp_format. - removed erroneous 'G' and 'K' entries from gcc_diag_char_table: they're implemented by default_tree_printer (and thus in "tdiag") and by the C/C++ FEs, but not in pp_format. - removed "v" (lower case) from gcc_tdiag_char_table and gcc_cxxdiag_char_table Notes: pretty-print.h uses this for ATTRIBUTE_GCC_PPDIAG, used by pp_printf and pp_verbatim: whereas diagnostic-core.h uses this for ATTRIBUTE_GCC_DIAG, used by the various diagnostic functions: /* If we haven't already defined a front-end-specific diagnostics style, use the generic one. */ Hence I'm assuming that __gcc_diag__ is for use for when we don't know what kind of diagnostic_format_decoder we have, and we can only rely on pp_format's core functionality, where __gcc_tdiag__ is allowed to assume default_tree_printer. gcc/c-family/ChangeLog: * c-format.c (PP_FORMAT_CHAR_TABLE): New macro, based on existing table entries for gcc_diag_char_table, and the 'Z' entry from gcc_tdiag_char_table, changing the "chain" entry for 'Z' from &gcc_tdiag_char_table[0] to &gcc_diag_char_table[0]. (gcc_diag_char_table): Use PP_FORMAT_CHAR_TABLE, implicitly adding missing "Z" for this table. Remove erroneous "G" and "K" entries. (gcc_tdiag_char_table): Use PP_FORMAT_CHAR_TABLE. Remove "v". (gcc_cdiag_char_table): Use PP_FORMAT_CHAR_TABLE. (gcc_cxxdiag_char_table): Use PP_FORMAT_CHAR_TABLE. Remove "v". gcc/testsuite/ChangeLog: * gcc.dg/format/gcc_diag-1.c (foo): Update the %v tests for tdiag and cxxdiag. * gcc.dg/format/gcc_diag-10.c (test_diag): Update tests of %G and %K. From-SVN: r263181
Diffstat (limited to 'gcc/debug.h')
0 files changed, 0 insertions, 0 deletions