gcc/Changelog: 2014-10-18 Krzesimir Nowak <qdl...@gmail.com>
* diagnostic.c (diagnostic_report_from): New function. It prints one line from include chain. (diagnostic_report_current_module): Use the above function. gcc/testsuite/ChangeLog: 2014-10-18 Krzesimir Nowak <qdl...@gmail.com> * c-c++-common/cpp/pr42014.c: New. * c-c++-common/cpp/pr42014-1.h: New. * c-c++-common/cpp/pr42014-2.h: New. * c-c++-common/cpp/pr42014-3.h: New. --- gcc/ChangeLog | 6 ++++++ gcc/diagnostic.c | 27 +++++++++++++++------------ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/c-c++-common/cpp/pr42014-1.h | 3 +++ gcc/testsuite/c-c++-common/cpp/pr42014-2.h | 2 ++ gcc/testsuite/c-c++-common/cpp/pr42014-3.h | 1 + gcc/testsuite/c-c++-common/cpp/pr42014.c | 8 ++++++++ 7 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 gcc/testsuite/c-c++-common/cpp/pr42014-1.h create mode 100644 gcc/testsuite/c-c++-common/cpp/pr42014-2.h create mode 100644 gcc/testsuite/c-c++-common/cpp/pr42014-3.h create mode 100644 gcc/testsuite/c-c++-common/cpp/pr42014.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 667da04..421dd47 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-10-18 Krzesimir Nowak <qdl...@gmail.com> + + * diagnostic.c (diagnostic_report_from): New function. It prints + one line from include chain. + (diagnostic_report_current_module): Use the above function. + 2014-10-13 Marat Zakirov <m.zaki...@samsung.com> * asan.c (instrument_derefs): BIT_FIELD_REF added. diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 881da0b..f0ac8ca 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -501,6 +501,19 @@ diagnostic_action_after_output (diagnostic_context *context, } } +static void +diagnostic_report_from (diagnostic_context *context, + const struct line_map *map, + const char *prefix) +{ + /* Do not print column, it is always zero. Also, it's quite + pointless - it does not give any useful information as there can + be only one include directive per line. */ + pp_verbatim (context->printer, + "%s from %r%s:%d%R", prefix, "locus", + LINEMAP_FILE (map), LAST_SOURCE_LINE (map)); +} + void diagnostic_report_current_module (diagnostic_context *context, location_t where) { @@ -525,21 +538,11 @@ diagnostic_report_current_module (diagnostic_context *context, location_t where) if (! MAIN_FILE_P (map)) { map = INCLUDED_FROM (line_table, map); - if (context->show_column) - pp_verbatim (context->printer, - "In file included from %r%s:%d:%d%R", "locus", - LINEMAP_FILE (map), - LAST_SOURCE_LINE (map), LAST_SOURCE_COLUMN (map)); - else - pp_verbatim (context->printer, - "In file included from %r%s:%d%R", "locus", - LINEMAP_FILE (map), LAST_SOURCE_LINE (map)); + diagnostic_report_from (context, map, "In file included"); while (! MAIN_FILE_P (map)) { map = INCLUDED_FROM (line_table, map); - pp_verbatim (context->printer, - ",\n from %r%s:%d%R", "locus", - LINEMAP_FILE (map), LAST_SOURCE_LINE (map)); + diagnostic_report_from (context, map, ",\n "); } pp_verbatim (context->printer, ":"); pp_newline (context->printer); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2134ada..fabdf7c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2014-10-18 Krzesimir Nowak <qdl...@gmail.com> + + PR preprocessor/42014 + * c-c++-common/cpp/pr42014.c: New. + * c-c++-common/cpp/pr42014-1.h: New. + * c-c++-common/cpp/pr42014-2.h: New. + * c-c++-common/cpp/pr42014-3.h: New. + 2014-09-19 Marat Zakirov <m.zaki...@samsung.com> * c-c++-common/asan/bitfield-5.c: New test. diff --git a/gcc/testsuite/c-c++-common/cpp/pr42014-1.h b/gcc/testsuite/c-c++-common/cpp/pr42014-1.h new file mode 100644 index 0000000..33f3b44 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/pr42014-1.h @@ -0,0 +1,3 @@ + + + #include "pr42014-2.h" diff --git a/gcc/testsuite/c-c++-common/cpp/pr42014-2.h b/gcc/testsuite/c-c++-common/cpp/pr42014-2.h new file mode 100644 index 0000000..8ddce8e --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/pr42014-2.h @@ -0,0 +1,2 @@ + + #include "pr42014-3.h" diff --git a/gcc/testsuite/c-c++-common/cpp/pr42014-3.h b/gcc/testsuite/c-c++-common/cpp/pr42014-3.h new file mode 100644 index 0000000..75dcf7c --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/pr42014-3.h @@ -0,0 +1 @@ +int f(foo bar); diff --git a/gcc/testsuite/c-c++-common/cpp/pr42014.c b/gcc/testsuite/c-c++-common/cpp/pr42014.c new file mode 100644 index 0000000..ebddf96 --- /dev/null +++ b/gcc/testsuite/c-c++-common/cpp/pr42014.c @@ -0,0 +1,8 @@ +/* PR preprocessor/42014 */ +/* { dg-do compile } */ + +#include "pr42014-1.h" + +/* { dg-excess-errors "In file included from .*pr42014-2.h:2," } */ +/* { dg-excess-errors " from .*pr42014-1.h:3," } */ +/* { dg-excess-errors " from .*pr42014.c:4:" } */ -- 1.9.3