Hi,
the patch below fixes PR/42014. Although the fix itself seems easy enough,
I have a problem with the test. Is there a way to match the output before
the "warning:" line? dg-{begin,end}-multiline-output doesn't do the job, or
at least I don't know how to convince it.
Bootstrapped on x86_64 linux.
Thanks,
Marcin
gcc/ChangeLog:
PR/42014
* diagnostic.c (diagnostic_report_current_module): Print column numbers
for all mentioned files if context->show_column.
gcc/testsuite/ChangeLog:
PR/42014
* gcc.dg/inclusion-trace-column.i: New test.
---
gcc/diagnostic.c | 12 +++++++++---
gcc/testsuite/gcc.dg/inclusion-trace-column.i | 16 ++++++++++++++++
2 files changed, 25 insertions(+), 3 deletions(-)
create mode 100644 gcc/testsuite/gcc.dg/inclusion-trace-column.i
diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c
index 8106172..05037ba 100644
--- a/gcc/diagnostic.c
+++ b/gcc/diagnostic.c
@@ -537,9 +537,15 @@ diagnostic_report_current_module (diagnostic_context
*context, location_t where)
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));
+ if (context->show_column)
+ pp_verbatim (context->printer,
+ ",\n from %r%s:%d:%d%R", "locus",
+ LINEMAP_FILE (map),
+ LAST_SOURCE_LINE (map), LAST_SOURCE_COLUMN (map));
+ else
+ pp_verbatim (context->printer,
+ ",\n from %r%s:%d%R", "locus",
+ LINEMAP_FILE (map), LAST_SOURCE_LINE (map));
}
pp_verbatim (context->printer, ":");
pp_newline (context->printer);
diff --git a/gcc/testsuite/gcc.dg/inclusion-trace-column.i
b/gcc/testsuite/gcc.dg/inclusion-trace-column.i
new file mode 100644
index 0000000..1fb8923
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/inclusion-trace-column.i
@@ -0,0 +1,16 @@
+/* { dg-do compile } */
+/* { dg-options "-fshow-column -Wreturn-type" } */
+/* { dg-begin-multiline-output "" }
+In file included from b.h:1:0,
+ from a.h:1:0,
+ from t.c:1:0:
+ { dg-end-multiline-output "" } */
+/* PR 42014 */
+# 1 "t.c"
+# 1 "a.h" 1
+# 1 "b.h" 1
+# 1 "c.h" 1
+double f () {} /* { dg-warning "reaches end" "no return" { target *-*-* } 1 }
*/
+# 1 "b.h" 2
+# 1 "a.h" 2
+# 1 "t.c" 2
--
2.8.3