From e74fe492f19c8a2bdf1077af1583c74a5ecd7c98 Mon Sep 17 00:00:00 2001 From: Aldy Hernandez <aldyh@redhat.com> Date: Mon, 1 Jun 2009 16:09:33 +0000 Subject: [PATCH] diagnostic.c (diagnostic_build_prefix): Always print columns. gcc/ * diagnostic.c (diagnostic_build_prefix): Always print columns. (diagnostic_report_current_module): Print columns. * common.opt (flag_show_column): Enable by default. gcc/testsuite/ * lib/gcc-dg.exp (dg-bogus): Override dg-bogus. (process-message): Expect column numbers. * gcc.dg/va-arg-2.c: Use line 0 to indicate no column. * gcc.dg/pch/counter-2.c: Same. * gcc.dg/pch/valid-2.c: Same. * gcc.dg/pch/warn-1.c: Same. * gcc.dg/pch/valid-1.c: Same. * gcc.dg/cpp/include2a.c: Handle lack of columns. * gcc.dg/cpp/syshdr.c: Same. * gcc.dg/cpp/19940712-1.c: Same. * gcc.dg/cpp/missing-header-1.c: Same. * gcc.dg/cpp/unc4.c: Remove -fno-show-column. * gcc.dg/cpp/tr-warn3.c: Same. * gcc.dg/cpp/pr29612-2.c: Same. * gcc.dg/cpp/tr-warn4.c: Same. * gcc.dg/cpp/Wtrigraphs.c: Same. * gcc.dg/cpp/poison.c: Same. * gcc.dg/cpp/arith-3.c: Same. * gcc.dg/cpp/sysmac2.c: Same. * gcc.dg/cpp/cpp.exp: Same. * gcc.dg/cpp/tr-warn5.c: Same. * gcc.dg/cpp/include2.c: Same. * gcc.dg/cpp/Wmissingdirs.c: Same. * gcc.dg/cpp/Wmissingdirs.c: Same. * gcc.dg/cpp/tr-warn6.c: Same. * gcc.dg/cpp/Wtrigraphs-2.c: Same. * gcc.dg/cpp/macspace1.c: Same. * gcc.dg/cpp/escape-2.c: Same. * gcc.dg/cpp/assert2.c: Same. * gcc.dg/cpp/undef2.c: Same. * gcc.dg/cpp/macspace2.c: Same. * gcc.dg/cpp/tr-warn1.c: Same. * gcc.dg/cpp/extratokens2.c: Same. * gcc.dg/cpp/strify2.c: Same. * gcc.dg/cpp/Wsignprom.c: Same. * gcc.dg/cpp/redef2.c: Same. * gcc.dg/cpp/trad/trad.exp: Same. * gcc.dg/cpp/arith-1.c: Same. * gcc.dg/cpp/extratokens.c: Same. * gcc.dg/cpp/if-mpar.c: Same. gcc/cp/ * error.c (print_instantiation_partial_context): Print column numbers. libcpp/ * include/line-map.h (LAST_SOURCE_COLUMN): New. From-SVN: r148052 --- gcc/ChangeLog | 6 +++ gcc/common.opt | 4 +- gcc/cp/ChangeLog | 5 +++ gcc/cp/error.c | 23 ++++++++--- gcc/diagnostic.c | 14 +++++-- gcc/testsuite/ChangeLog | 43 +++++++++++++++++++++ gcc/testsuite/gcc.dg/cpp/19940712-1.c | 5 ++- gcc/testsuite/gcc.dg/cpp/Wmissingdirs.c | 2 +- gcc/testsuite/gcc.dg/cpp/Wsignprom.c | 2 +- gcc/testsuite/gcc.dg/cpp/Wtrigraphs-2.c | 2 +- gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c | 2 +- gcc/testsuite/gcc.dg/cpp/arith-1.c | 2 +- gcc/testsuite/gcc.dg/cpp/arith-3.c | 2 +- gcc/testsuite/gcc.dg/cpp/assert2.c | 2 +- gcc/testsuite/gcc.dg/cpp/cpp.exp | 2 +- gcc/testsuite/gcc.dg/cpp/escape-2.c | 2 +- gcc/testsuite/gcc.dg/cpp/escape.c | 2 +- gcc/testsuite/gcc.dg/cpp/extratokens.c | 2 +- gcc/testsuite/gcc.dg/cpp/extratokens2.c | 2 +- gcc/testsuite/gcc.dg/cpp/if-mpar.c | 1 - gcc/testsuite/gcc.dg/cpp/include2.c | 2 +- gcc/testsuite/gcc.dg/cpp/include2a.c | 4 +- gcc/testsuite/gcc.dg/cpp/macspace1.c | 2 +- gcc/testsuite/gcc.dg/cpp/macspace2.c | 2 +- gcc/testsuite/gcc.dg/cpp/missing-header-1.c | 3 +- gcc/testsuite/gcc.dg/cpp/poison.c | 3 +- gcc/testsuite/gcc.dg/cpp/pr29612-2.c | 2 +- gcc/testsuite/gcc.dg/cpp/redef2.c | 2 +- gcc/testsuite/gcc.dg/cpp/strify2.c | 2 +- gcc/testsuite/gcc.dg/cpp/syshdr.c | 3 +- gcc/testsuite/gcc.dg/cpp/sysmac2.c | 2 +- gcc/testsuite/gcc.dg/cpp/tr-warn1.c | 2 +- gcc/testsuite/gcc.dg/cpp/tr-warn3.c | 2 +- gcc/testsuite/gcc.dg/cpp/tr-warn4.c | 2 +- gcc/testsuite/gcc.dg/cpp/tr-warn5.c | 2 +- gcc/testsuite/gcc.dg/cpp/tr-warn6.c | 2 +- gcc/testsuite/gcc.dg/cpp/trad/trad.exp | 2 +- gcc/testsuite/gcc.dg/cpp/unc4.c | 1 - gcc/testsuite/gcc.dg/cpp/undef2.c | 4 +- gcc/testsuite/gcc.dg/pch/counter-2.c | 2 +- gcc/testsuite/gcc.dg/pch/valid-1.c | 4 +- gcc/testsuite/gcc.dg/pch/valid-2.c | 4 +- gcc/testsuite/gcc.dg/pch/warn-1.c | 4 +- gcc/testsuite/gcc.dg/va-arg-2.c | 2 +- gcc/testsuite/lib/gcc-dg.exp | 33 ++++++++++++---- libcpp/ChangeLog | 4 ++ libcpp/include/line-map.h | 2 + 47 files changed, 158 insertions(+), 66 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 86882e5def93..9789c01fb9c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-06-01 Aldy Hernandez <aldyh@redhat.com> + + * diagnostic.c (diagnostic_build_prefix): Always print columns. + (diagnostic_report_current_module): Print columns. + * common.opt (flag_show_column): Enable by default. + 2009-06-01 Luis Machado <luisgpm@br.ibm.com> * alias.c (find_base_term): Check for NULL term before returning. diff --git a/gcc/common.opt b/gcc/common.opt index c70639ec42d7..d3cbe1693324 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1049,8 +1049,8 @@ Common Report Var(flag_see) Init(0) Eliminate redundant sign extensions using LCM. fshow-column -Common C ObjC C++ ObjC++ Report Var(flag_show_column) Init(0) -Show column numbers in diagnostics, when available. Default off +Common C ObjC C++ ObjC++ Report Var(flag_show_column) Init(1) +Show column numbers in diagnostics, when available. Default on fsignaling-nans Common Report Var(flag_signaling_nans) Optimization diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index e7e223ed2a43..2aee90842eff 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2009-06-01 Aldy Hernandez <aldyh@redhat.com> + + * error.c (print_instantiation_partial_context): Print column + numbers. + 2009-05-29 Ian Lance Taylor <iant@google.com> * error.c (cp_printer): Don't use va_arg with enum type. diff --git a/gcc/cp/error.c b/gcc/cp/error.c index 004543dd2103..7be241dd02e7 100644 --- a/gcc/cp/error.c +++ b/gcc/cp/error.c @@ -2705,19 +2705,30 @@ print_instantiation_partial_context (diagnostic_context *context, struct tinst_level *t, location_t loc) { expanded_location xloc; + const char *str; for (; ; t = t->next) { xloc = expand_location (loc); if (t == NULL) break; - pp_verbatim (context->printer, _("%s:%d: instantiated from %qs\n"), - xloc.file, xloc.line, - decl_as_string_translate (t->decl, - TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE)); + str = decl_as_string_translate (t->decl, + TFF_DECL_SPECIFIERS | TFF_RETURN_TYPE); + if (flag_show_column) + pp_verbatim (context->printer, + _("%s:%d:%d: instantiated from %qs\n"), + xloc.file, xloc.line, xloc.column, str); + else + pp_verbatim (context->printer, + _("%s:%d: instantiated from %qs\n"), + xloc.file, xloc.line, str); loc = t->locus; } - pp_verbatim (context->printer, _("%s:%d: instantiated from here"), - xloc.file, xloc.line); + if (flag_show_column) + pp_verbatim (context->printer, _("%s:%d:%d: instantiated from here"), + xloc.file, xloc.line, xloc.column); + else + pp_verbatim (context->printer, _("%s:%d: instantiated from here"), + xloc.file, xloc.line); pp_base_newline (context->printer); } diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index 42a40c6f3375..3f7bab19d8b7 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -162,7 +162,7 @@ diagnostic_build_prefix (diagnostic_info *diagnostic) return (s.file == NULL ? build_message_string ("%s: %s", progname, text) - : flag_show_column && s.column != 0 + : flag_show_column ? build_message_string ("%s:%d:%d: %s", s.file, s.line, s.column, text) : build_message_string ("%s:%d: %s", s.file, s.line, text)); } @@ -244,9 +244,15 @@ diagnostic_report_current_module (diagnostic_context *context) if (! MAIN_FILE_P (map)) { map = INCLUDED_FROM (line_table, map); - pp_verbatim (context->printer, - "In file included from %s:%d", - map->to_file, LAST_SOURCE_LINE (map)); + if (flag_show_column) + pp_verbatim (context->printer, + "In file included from %s:%d:%d", + map->to_file, + LAST_SOURCE_LINE (map), LAST_SOURCE_COLUMN (map)); + else + pp_verbatim (context->printer, + "In file included from %s:%d", + map->to_file, LAST_SOURCE_LINE (map)); while (! MAIN_FILE_P (map)) { map = INCLUDED_FROM (line_table, map); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 69613d1a36db..9e10c591404d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,46 @@ +2009-06-01 Aldy Hernandez <aldyh@redhat.com> + + * lib/gcc-dg.exp (dg-bogus): Override dg-bogus. + (process-message): Expect column numbers. + * gcc.dg/va-arg-2.c: Use line 0 to indicate no column. + * gcc.dg/pch/counter-2.c: Same. + * gcc.dg/pch/valid-2.c: Same. + * gcc.dg/pch/warn-1.c: Same. + * gcc.dg/pch/valid-1.c: Same. + * gcc.dg/cpp/include2a.c: Handle lack of columns. + * gcc.dg/cpp/syshdr.c: Same. + * gcc.dg/cpp/19940712-1.c: Same. + * gcc.dg/cpp/missing-header-1.c: Same. + * gcc.dg/cpp/unc4.c: Remove -fno-show-column. + * gcc.dg/cpp/tr-warn3.c: Same. + * gcc.dg/cpp/pr29612-2.c: Same. + * gcc.dg/cpp/tr-warn4.c: Same. + * gcc.dg/cpp/Wtrigraphs.c: Same. + * gcc.dg/cpp/poison.c: Same. + * gcc.dg/cpp/arith-3.c: Same. + * gcc.dg/cpp/sysmac2.c: Same. + * gcc.dg/cpp/cpp.exp: Same. + * gcc.dg/cpp/tr-warn5.c: Same. + * gcc.dg/cpp/include2.c: Same. + * gcc.dg/cpp/Wmissingdirs.c: Same. + * gcc.dg/cpp/Wmissingdirs.c: Same. + * gcc.dg/cpp/tr-warn6.c: Same. + * gcc.dg/cpp/Wtrigraphs-2.c: Same. + * gcc.dg/cpp/macspace1.c: Same. + * gcc.dg/cpp/escape-2.c: Same. + * gcc.dg/cpp/assert2.c: Same. + * gcc.dg/cpp/undef2.c: Same. + * gcc.dg/cpp/macspace2.c: Same. + * gcc.dg/cpp/tr-warn1.c: Same. + * gcc.dg/cpp/extratokens2.c: Same. + * gcc.dg/cpp/strify2.c: Same. + * gcc.dg/cpp/Wsignprom.c: Same. + * gcc.dg/cpp/redef2.c: Same. + * gcc.dg/cpp/trad/trad.exp: Same. + * gcc.dg/cpp/arith-1.c: Same. + * gcc.dg/cpp/extratokens.c: Same. + * gcc.dg/cpp/if-mpar.c: Same. + 2009-06-01 Olivier Hainque <hainque@adacore.com> * gnat.dg/nested_float_packed.ads: New test. diff --git a/gcc/testsuite/gcc.dg/cpp/19940712-1.c b/gcc/testsuite/gcc.dg/cpp/19940712-1.c index 98bcd767966d..a79b2f5484d5 100644 --- a/gcc/testsuite/gcc.dg/cpp/19940712-1.c +++ b/gcc/testsuite/gcc.dg/cpp/19940712-1.c @@ -5,8 +5,9 @@ /* { dg-error "unterminated comment" "" { target *-*-* } 4 } */ /* { dg-error "unterminated comment" "header error" { target *-*-* } 8 } */ -#include "19940712-1.h" /* { dg-message "" } // In file included from: */ -#include "19940712-1a.h" /* { dg-message "" } // In file included from: */ +#include "19940712-1.h" +/* { dg-message "" "In file included from:" { target *-*-* } 0 } */ +#include "19940712-1a.h" #include "19940712-1b.h" /* comment start in comment error diff --git a/gcc/testsuite/gcc.dg/cpp/Wmissingdirs.c b/gcc/testsuite/gcc.dg/cpp/Wmissingdirs.c index 915aaa8de988..69b3aae3da60 100644 --- a/gcc/testsuite/gcc.dg/cpp/Wmissingdirs.c +++ b/gcc/testsuite/gcc.dg/cpp/Wmissingdirs.c @@ -1,5 +1,5 @@ /* { dg-do preprocess } */ -/* { dg-options "-std=gnu99 -I /jolly/well/better/not/exist -Wmissing-include-dirs -fno-show-column" } */ +/* { dg-options "-std=gnu99 -I /jolly/well/better/not/exist -Wmissing-include-dirs" } */ /* Test that -Wmissing-include-dirs issues a warning when a specified directory does not exist. Source Ben Elliston, 2004-05-13. */ diff --git a/gcc/testsuite/gcc.dg/cpp/Wsignprom.c b/gcc/testsuite/gcc.dg/cpp/Wsignprom.c index 7cdbccb3cac9..87d422b794fd 100644 --- a/gcc/testsuite/gcc.dg/cpp/Wsignprom.c +++ b/gcc/testsuite/gcc.dg/cpp/Wsignprom.c @@ -1,5 +1,5 @@ /* { dg-do preprocess } */ -/* { dg-options "-Wall -fshow-column" } */ +/* { dg-options "-Wall" } */ /* Test that -Wall emits the warnings about integer promotion changing the sign of an operand. */ diff --git a/gcc/testsuite/gcc.dg/cpp/Wtrigraphs-2.c b/gcc/testsuite/gcc.dg/cpp/Wtrigraphs-2.c index 43bf134842ae..8d61f2841f0f 100644 --- a/gcc/testsuite/gcc.dg/cpp/Wtrigraphs-2.c +++ b/gcc/testsuite/gcc.dg/cpp/Wtrigraphs-2.c @@ -1,5 +1,5 @@ /* { dg-do preprocess } */ -/* { dg-options "-std=c99 -Wtrigraphs -fno-show-column" } */ +/* { dg-options "-std=c99 -Wtrigraphs" } */ /* Test warnings for trigraphs in comments, with trigraphs enabled. Neil Booth. 4 May 2003. */ diff --git a/gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c b/gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c index 5ed6c98ad49e..d4be2040c183 100644 --- a/gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c +++ b/gcc/testsuite/gcc.dg/cpp/Wtrigraphs.c @@ -1,5 +1,5 @@ /* { dg-do preprocess } */ -/* { dg-options "-std=gnu99 -Wtrigraphs -fno-show-column" } */ +/* { dg-options "-std=gnu99 -Wtrigraphs" } */ /* Test we don't double warn for trigraphs immediately after preceding text. Source Neil Booth. 22 Nov 2000. */ diff --git a/gcc/testsuite/gcc.dg/cpp/arith-1.c b/gcc/testsuite/gcc.dg/cpp/arith-1.c index 85d5848d8008..99e3cd7be2e6 100644 --- a/gcc/testsuite/gcc.dg/cpp/arith-1.c +++ b/gcc/testsuite/gcc.dg/cpp/arith-1.c @@ -7,7 +7,7 @@ independent of target precision. */ /* { dg-do preprocess } */ -/* { dg-options -fno-show-column } */ +/* { dg-options "" } */ /* Test || operator and its short circuiting. */ #if 0 || 0 diff --git a/gcc/testsuite/gcc.dg/cpp/arith-3.c b/gcc/testsuite/gcc.dg/cpp/arith-3.c index cc5fd1b3bf7b..3015d31657ac 100644 --- a/gcc/testsuite/gcc.dg/cpp/arith-3.c +++ b/gcc/testsuite/gcc.dg/cpp/arith-3.c @@ -9,7 +9,7 @@ Please keep changes to arith-2.c and arith-3.c in sync. */ /* { dg-do preprocess } */ -/* { dg-options "-std=c99 -fno-show-column" } */ +/* { dg-options "-std=c99" } */ #include <limits.h> diff --git a/gcc/testsuite/gcc.dg/cpp/assert2.c b/gcc/testsuite/gcc.dg/cpp/assert2.c index 130f7f5320a1..5228bcbb3a91 100644 --- a/gcc/testsuite/gcc.dg/cpp/assert2.c +++ b/gcc/testsuite/gcc.dg/cpp/assert2.c @@ -1,6 +1,6 @@ /* Malformed assertion tests. */ /* { dg-do preprocess } */ -/* { dg-options "-fno-show-column -Wno-deprecated" } */ +/* { dg-options "-Wno-deprecated" } */ #assert /* { dg-error "without predicate" "assert w/o predicate" } */ #assert % /* { dg-error "an identifier" "assert punctuation" } */ diff --git a/gcc/testsuite/gcc.dg/cpp/cpp.exp b/gcc/testsuite/gcc.dg/cpp/cpp.exp index 1dc504e30ba8..acf0898407b5 100644 --- a/gcc/testsuite/gcc.dg/cpp/cpp.exp +++ b/gcc/testsuite/gcc.dg/cpp/cpp.exp @@ -37,7 +37,7 @@ dg-init # Main loop. dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.{c,S} ]] \ - "-fno-show-column" $DEFAULT_CFLAGS + "" $DEFAULT_CFLAGS # All done. dg-finish diff --git a/gcc/testsuite/gcc.dg/cpp/escape-2.c b/gcc/testsuite/gcc.dg/cpp/escape-2.c index e79fa91cbe9e..902fad3a2c2e 100644 --- a/gcc/testsuite/gcc.dg/cpp/escape-2.c +++ b/gcc/testsuite/gcc.dg/cpp/escape-2.c @@ -1,7 +1,7 @@ /* Copyright (C) 2001 Free Software Foundation, Inc. */ /* { dg-do compile } */ -/* { dg-options "-pedantic -std=c99 -fno-show-column" } */ +/* { dg-options "-pedantic -std=c99" } */ /* This tests various diagnostics with -pedantic about escape sequences, for both the preprocessor and the compiler. diff --git a/gcc/testsuite/gcc.dg/cpp/escape.c b/gcc/testsuite/gcc.dg/cpp/escape.c index c9dd44e43e5b..e7d5e08dd493 100644 --- a/gcc/testsuite/gcc.dg/cpp/escape.c +++ b/gcc/testsuite/gcc.dg/cpp/escape.c @@ -1,7 +1,7 @@ /* Copyright (C) 2001 Free Software Foundation, Inc. */ /* { dg-do compile } */ -/* { dg-options "-Wtraditional -std=c89 -fno-show-column" } */ +/* { dg-options "-Wtraditional -std=c89" } */ /* This tests various diagnostics with -Wtraditioanl about escape sequences, for both the preprocessor and the compiler. diff --git a/gcc/testsuite/gcc.dg/cpp/extratokens.c b/gcc/testsuite/gcc.dg/cpp/extratokens.c index d3e941bfff05..11d094af572d 100644 --- a/gcc/testsuite/gcc.dg/cpp/extratokens.c +++ b/gcc/testsuite/gcc.dg/cpp/extratokens.c @@ -1,7 +1,7 @@ /* Copyright (C) 2000, 2008 Free Software Foundation, Inc. */ /* { dg-do preprocess } */ -/* { dg-options "-fno-show-column -Wno-deprecated" } */ +/* { dg-options "-Wno-deprecated" } */ /* Tests all directives that do not permit excess tokens at the end of the line. */ diff --git a/gcc/testsuite/gcc.dg/cpp/extratokens2.c b/gcc/testsuite/gcc.dg/cpp/extratokens2.c index fe682bfa59d8..8e69a96c5b50 100644 --- a/gcc/testsuite/gcc.dg/cpp/extratokens2.c +++ b/gcc/testsuite/gcc.dg/cpp/extratokens2.c @@ -1,7 +1,7 @@ /* Copyright (C) 2002 Free Software Foundation, Inc. */ /* { dg-do preprocess } */ -/* { dg-options "-fno-show-column -Wno-endif-labels" } */ +/* { dg-options "-Wno-endif-labels" } */ /* Tests that -Wno-endif-labels correctly disables the checks done by default (and tested in extratokens.c). */ diff --git a/gcc/testsuite/gcc.dg/cpp/if-mpar.c b/gcc/testsuite/gcc.dg/cpp/if-mpar.c index 633cefcb4420..45dd78b1e673 100644 --- a/gcc/testsuite/gcc.dg/cpp/if-mpar.c +++ b/gcc/testsuite/gcc.dg/cpp/if-mpar.c @@ -4,7 +4,6 @@ missing parenthesis message. */ /* { dg-do preprocess } */ -/* { dg-options "-fshow-column" } */ #if (1 /* { dg-error "5:missing '\\)'" "missing ')' no. 1" } */ #endif diff --git a/gcc/testsuite/gcc.dg/cpp/include2.c b/gcc/testsuite/gcc.dg/cpp/include2.c index 67f1065ae8c6..de34255ec351 100644 --- a/gcc/testsuite/gcc.dg/cpp/include2.c +++ b/gcc/testsuite/gcc.dg/cpp/include2.c @@ -11,5 +11,5 @@ /* These error is No such file or directory, just once. However, this message is locale-dependent, so don't test for it. */ -/* { dg-error "silly" "" { target *-*-* } 10 } */ +/* { dg-error "silly" "" { target *-*-* } 0 } */ /* { dg-message "terminated" "" { target *-*-* } 0 } */ diff --git a/gcc/testsuite/gcc.dg/cpp/include2a.c b/gcc/testsuite/gcc.dg/cpp/include2a.c index 974f3f332630..6a11c92cff26 100644 --- a/gcc/testsuite/gcc.dg/cpp/include2a.c +++ b/gcc/testsuite/gcc.dg/cpp/include2a.c @@ -11,6 +11,6 @@ /* These error is No such file or directory, just once. However, this message is locale-dependent, so don't test for it. */ -/* { dg-error "silly" "" { target *-*-* } 10 } */ -/* { dg-error "missing" "" { target *-*-* } 10 } */ +/* { dg-error "silly" "" { target *-*-* } 0 } */ +/* { dg-error "missing" "" { target *-*-* } 0 } */ /* { dg-message "terminated" "" { target *-*-* } 0 } */ diff --git a/gcc/testsuite/gcc.dg/cpp/macspace1.c b/gcc/testsuite/gcc.dg/cpp/macspace1.c index daf14d2b1f13..d8578448b64e 100644 --- a/gcc/testsuite/gcc.dg/cpp/macspace1.c +++ b/gcc/testsuite/gcc.dg/cpp/macspace1.c @@ -1,6 +1,6 @@ /* PR preprocessor/19475 */ /* { dg-do preprocess } */ -/* { dg-options "-std=iso9899:1990 -pedantic-errors -fno-show-column" } */ +/* { dg-options "-std=iso9899:1990 -pedantic-errors" } */ #define a! /* { dg-warning "missing whitespace" } */ #define b" /* { dg-warning "missing whitespace" } */ diff --git a/gcc/testsuite/gcc.dg/cpp/macspace2.c b/gcc/testsuite/gcc.dg/cpp/macspace2.c index 7a81eceeac8b..1494fed18c3a 100644 --- a/gcc/testsuite/gcc.dg/cpp/macspace2.c +++ b/gcc/testsuite/gcc.dg/cpp/macspace2.c @@ -1,6 +1,6 @@ /* PR preprocessor/19475 */ /* { dg-do preprocess } */ -/* { dg-options "-std=iso9899:1999 -pedantic-errors -fno-show-column" } */ +/* { dg-options "-std=iso9899:1999 -pedantic-errors" } */ #define a! /* { dg-error "requires whitespace" } */ #define b" /* { dg-error "requires whitespace" } */ diff --git a/gcc/testsuite/gcc.dg/cpp/missing-header-1.c b/gcc/testsuite/gcc.dg/cpp/missing-header-1.c index 5445d4c4fec7..dbcc2b361670 100644 --- a/gcc/testsuite/gcc.dg/cpp/missing-header-1.c +++ b/gcc/testsuite/gcc.dg/cpp/missing-header-1.c @@ -2,7 +2,8 @@ /* { dg-do compile } */ /* { dg-options "" } */ -#include "nonexistent.h" /* { dg-error "nonexistent.h" } */ +#include "nonexistent.h" +/* { dg-message "nonexistent.h" "" { target *-*-* } 0 } */ /* { dg-message "terminated" "" { target *-*-* } 0 } */ /* This declaration should not receive any diagnostic. */ diff --git a/gcc/testsuite/gcc.dg/cpp/poison.c b/gcc/testsuite/gcc.dg/cpp/poison.c index d667183de316..f85405c0983e 100644 --- a/gcc/testsuite/gcc.dg/cpp/poison.c +++ b/gcc/testsuite/gcc.dg/cpp/poison.c @@ -1,5 +1,4 @@ -/* { dg-do preprocess } - { dg-options "-fno-show-column" } */ +/* { dg-do preprocess } */ #pragma GCC poison foo foo /* { dg-error "foo" "use of foo" } */ diff --git a/gcc/testsuite/gcc.dg/cpp/pr29612-2.c b/gcc/testsuite/gcc.dg/cpp/pr29612-2.c index 813eb77af13a..fff10a843b44 100644 --- a/gcc/testsuite/gcc.dg/cpp/pr29612-2.c +++ b/gcc/testsuite/gcc.dg/cpp/pr29612-2.c @@ -1,6 +1,6 @@ /* PR preprocessor/29612 */ /* { dg-do preprocess } */ -/* { dg-options "-Wtraditional -fno-show-column" } */ +/* { dg-options "-Wtraditional" } */ # 6 "pr29612-2.c" diff --git a/gcc/testsuite/gcc.dg/cpp/redef2.c b/gcc/testsuite/gcc.dg/cpp/redef2.c index 57fa3b1930b6..1dbc10033edf 100644 --- a/gcc/testsuite/gcc.dg/cpp/redef2.c +++ b/gcc/testsuite/gcc.dg/cpp/redef2.c @@ -1,7 +1,7 @@ /* Test for redefining macros with significant differences. */ /* { dg-do preprocess } - { dg-options "-ansi -Wall -fno-show-column" } */ + { dg-options "-ansi -Wall" } */ #define mac(a, b) (a) + (b) #define mac(a, b) (a) * (b) diff --git a/gcc/testsuite/gcc.dg/cpp/strify2.c b/gcc/testsuite/gcc.dg/cpp/strify2.c index 2c768dcd05ec..c24220c70e01 100644 --- a/gcc/testsuite/gcc.dg/cpp/strify2.c +++ b/gcc/testsuite/gcc.dg/cpp/strify2.c @@ -1,7 +1,7 @@ /* Copyright (C) 2000 Free Software Foundation, Inc. */ /* { dg-do run } */ -/* { dg-options "-std=c99 -pedantic-errors -fno-show-column" } */ +/* { dg-options "-std=c99 -pedantic-errors" } */ /* Tests a whole bunch of things are correctly stringified. */ diff --git a/gcc/testsuite/gcc.dg/cpp/syshdr.c b/gcc/testsuite/gcc.dg/cpp/syshdr.c index 751377393272..310d5d0d2882 100644 --- a/gcc/testsuite/gcc.dg/cpp/syshdr.c +++ b/gcc/testsuite/gcc.dg/cpp/syshdr.c @@ -8,5 +8,6 @@ /* { dg-do preprocess } */ /* { dg-error "include_next" "good error" { target *-*-* } 4 } */ -#include "syshdr1.h" /* { dg-message "" "In file included from:" } */ +#include "syshdr1.h" +/* { dg-message "" "In file included from:" { target *-*-* } 0 } */ #include "syshdr2.h" diff --git a/gcc/testsuite/gcc.dg/cpp/sysmac2.c b/gcc/testsuite/gcc.dg/cpp/sysmac2.c index 0d1efabdc073..6d493a9ed1b1 100644 --- a/gcc/testsuite/gcc.dg/cpp/sysmac2.c +++ b/gcc/testsuite/gcc.dg/cpp/sysmac2.c @@ -1,7 +1,7 @@ /* Copyright (C) 2001 Free Software Foundation, Inc. */ /* { dg-do compile } */ -/* { dg-options "-std=gnu99 -pedantic -Wtraditional -fno-show-column" } */ +/* { dg-options "-std=gnu99 -pedantic -Wtraditional" } */ /* Tests diagnostics are suppressed for some macros defined in system headers. */ diff --git a/gcc/testsuite/gcc.dg/cpp/tr-warn1.c b/gcc/testsuite/gcc.dg/cpp/tr-warn1.c index 259f92882535..37b5efe5df1c 100644 --- a/gcc/testsuite/gcc.dg/cpp/tr-warn1.c +++ b/gcc/testsuite/gcc.dg/cpp/tr-warn1.c @@ -1,6 +1,6 @@ /* Test for warnings about nontraditional directives. */ /* { dg-do preprocess } */ -/* { dg-options "-pedantic -Wtraditional -fno-show-column" } */ +/* { dg-options "-pedantic -Wtraditional" } */ /* Block 1: K+R directives should have the # indented. */ diff --git a/gcc/testsuite/gcc.dg/cpp/tr-warn3.c b/gcc/testsuite/gcc.dg/cpp/tr-warn3.c index e802b4dd0f75..33517188cd8c 100644 --- a/gcc/testsuite/gcc.dg/cpp/tr-warn3.c +++ b/gcc/testsuite/gcc.dg/cpp/tr-warn3.c @@ -3,7 +3,7 @@ warnings inside unused clauses because they are often hidden this way on purpose. However they do still require indentation for K&R. */ /* { dg-do preprocess } */ -/* { dg-options "-pedantic -Wtraditional -fno-show-column" } */ +/* { dg-options "-pedantic -Wtraditional" } */ #if 1 diff --git a/gcc/testsuite/gcc.dg/cpp/tr-warn4.c b/gcc/testsuite/gcc.dg/cpp/tr-warn4.c index 14dd8a3163e7..f5b5779bfd7f 100644 --- a/gcc/testsuite/gcc.dg/cpp/tr-warn4.c +++ b/gcc/testsuite/gcc.dg/cpp/tr-warn4.c @@ -2,7 +2,7 @@ Note, gcc should omit these warnings in system header files. By Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 8/22/2000. */ /* { dg-do preprocess } */ -/* { dg-options "-Wtraditional -fno-show-column" } */ +/* { dg-options "-Wtraditional" } */ #if 1U /* { dg-warning "traditional C rejects" "numeric constant suffix" } */ #endif diff --git a/gcc/testsuite/gcc.dg/cpp/tr-warn5.c b/gcc/testsuite/gcc.dg/cpp/tr-warn5.c index 16dcf4c0866f..6867b88c219c 100644 --- a/gcc/testsuite/gcc.dg/cpp/tr-warn5.c +++ b/gcc/testsuite/gcc.dg/cpp/tr-warn5.c @@ -2,7 +2,7 @@ Note, gcc should omit these warnings in system header files. By Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 8/22/2000. */ /* { dg-do preprocess } */ -/* { dg-options "-Wtraditional -fno-show-column" } */ +/* { dg-options "-Wtraditional" } */ #if +1 /* { dg-warning "unary plus operator" "unary plus operator" } */ #endif diff --git a/gcc/testsuite/gcc.dg/cpp/tr-warn6.c b/gcc/testsuite/gcc.dg/cpp/tr-warn6.c index e9aa851d0419..d95409ef8f90 100644 --- a/gcc/testsuite/gcc.dg/cpp/tr-warn6.c +++ b/gcc/testsuite/gcc.dg/cpp/tr-warn6.c @@ -2,7 +2,7 @@ Note, gcc should omit these warnings in system header files. By Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 9/8/2000. */ /* { dg-do preprocess } */ -/* { dg-options "-Wtraditional -fno-show-column" } */ +/* { dg-options "-Wtraditional" } */ #define foo1(h) sdf "h3" fds "h" /* { dg-warning "macro argument \"h\" would be stringified" "traditional stringification" } */ #define foo2(h2) sdf "h2" fds "h3" /* { dg-warning "macro argument \"h2\" would be stringified" "traditional stringification" } */ diff --git a/gcc/testsuite/gcc.dg/cpp/trad/trad.exp b/gcc/testsuite/gcc.dg/cpp/trad/trad.exp index 22225e519150..190cfcfdee65 100644 --- a/gcc/testsuite/gcc.dg/cpp/trad/trad.exp +++ b/gcc/testsuite/gcc.dg/cpp/trad/trad.exp @@ -37,7 +37,7 @@ dg-init # Main loop. dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] \ - "-fno-show-column" $DEFAULT_TRADCPPFLAGS + "" $DEFAULT_TRADCPPFLAGS # All done. dg-finish diff --git a/gcc/testsuite/gcc.dg/cpp/unc4.c b/gcc/testsuite/gcc.dg/cpp/unc4.c index 758e5bbc6d95..10c49e9d4db5 100644 --- a/gcc/testsuite/gcc.dg/cpp/unc4.c +++ b/gcc/testsuite/gcc.dg/cpp/unc4.c @@ -1,5 +1,4 @@ /* { dg-do preprocess } */ -/* { dg-options "-fno-show-column" } */ /* Tests for un-terminated conditional diagnostics. Copyright (c) 1999 Free Software Foundation. diff --git a/gcc/testsuite/gcc.dg/cpp/undef2.c b/gcc/testsuite/gcc.dg/cpp/undef2.c index 4e6a690dcc9c..5614e039b22b 100644 --- a/gcc/testsuite/gcc.dg/cpp/undef2.c +++ b/gcc/testsuite/gcc.dg/cpp/undef2.c @@ -1,9 +1,7 @@ /* C99 6.10.8 para 4: None of [the predefined macro names] shall be - the subject of a #define or an #undef preprocessing directive. We - pass -fno-show-column as otherwise dejagnu gets confused. */ + the subject of a #define or an #undef preprocessing directive. */ /* { dg-do preprocess } */ -/* { dg-options "-fno-show-column" } */ #undef __DATE__ /* { dg-warning "undefining" "__DATE__" } */ #undef __TIME__ /* { dg-warning "undefining" "__TIME__" } */ diff --git a/gcc/testsuite/gcc.dg/pch/counter-2.c b/gcc/testsuite/gcc.dg/pch/counter-2.c index 6dd2245d7d84..14ce24909c8f 100644 --- a/gcc/testsuite/gcc.dg/pch/counter-2.c +++ b/gcc/testsuite/gcc.dg/pch/counter-2.c @@ -8,7 +8,7 @@ #endif #include "counter-2.h" /* { dg-warning "not used because `__COUNTER__' is invalid" } */ -/* { dg-error "counter-2.h: No such file or directory" "no such file" { target *-*-* } 10 } */ +/* { dg-error "counter-2.h: No such file or directory" "no such file" { target *-*-* } 0 } */ /* { dg-error "one or more PCH files were found, but they were invalid" "invalid files" { target *-*-* } 10 } */ /* { dg-message "terminated" "" { target *-*-* } 0 } */ diff --git a/gcc/testsuite/gcc.dg/pch/valid-1.c b/gcc/testsuite/gcc.dg/pch/valid-1.c index 3ee909165914..b7f22d0dc17a 100644 --- a/gcc/testsuite/gcc.dg/pch/valid-1.c +++ b/gcc/testsuite/gcc.dg/pch/valid-1.c @@ -1,8 +1,8 @@ /* { dg-options "-I. -Winvalid-pch -g" } */ #include "valid-1.h"/* { dg-warning "created with -gnone, but used with -g" } */ -/* { dg-error "No such file" "no such file" { target *-*-* } 3 } */ -/* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */ +/* { dg-error "No such file" "no such file" { target *-*-* } 0 } */ +/* { dg-error "they were invalid" "invalid files" { target *-*-* } 0 } */ /* { dg-message "terminated" "" { target *-*-* } 0 } */ int x; diff --git a/gcc/testsuite/gcc.dg/pch/valid-2.c b/gcc/testsuite/gcc.dg/pch/valid-2.c index 34269a87960e..3d8cb1427f36 100644 --- a/gcc/testsuite/gcc.dg/pch/valid-2.c +++ b/gcc/testsuite/gcc.dg/pch/valid-2.c @@ -1,7 +1,7 @@ /* { dg-options "-I. -Winvalid-pch -fexceptions" } */ #include "valid-2.h" /* { dg-warning "settings for -fexceptions do not match" } */ -/* { dg-error "No such file" "no such file" { target *-*-* } 3 } */ -/* { dg-error "they were invalid" "invalid files" { target *-*-* } 3 } */ +/* { dg-error "No such file" "no such file" { target *-*-* } 0 } */ +/* { dg-error "they were invalid" "invalid files" { target *-*-* } 0 } */ /* { dg-message "terminated" "" { target *-*-* } 0 } */ int x; diff --git a/gcc/testsuite/gcc.dg/pch/warn-1.c b/gcc/testsuite/gcc.dg/pch/warn-1.c index 64944c776d87..1d31cef05442 100644 --- a/gcc/testsuite/gcc.dg/pch/warn-1.c +++ b/gcc/testsuite/gcc.dg/pch/warn-1.c @@ -3,8 +3,8 @@ #define DEFINED_VALUE 3 #include "warn-1.h"/* { dg-warning "not used because .DEFINED_VALUE. is defined" } */ -/* { dg-error "No such file" "no such file" { target *-*-* } 5 } */ -/* { dg-error "they were invalid" "invalid files" { target *-*-* } 5 } */ +/* { dg-error "No such file" "no such file" { target *-*-* } 0 } */ +/* { dg-error "they were invalid" "invalid files" { target *-*-* } 0 } */ /* { dg-message "terminated" "" { target *-*-* } 0 } */ diff --git a/gcc/testsuite/gcc.dg/va-arg-2.c b/gcc/testsuite/gcc.dg/va-arg-2.c index 2fd0ed97e3f5..e1c915ffc925 100644 --- a/gcc/testsuite/gcc.dg/va-arg-2.c +++ b/gcc/testsuite/gcc.dg/va-arg-2.c @@ -5,7 +5,7 @@ #include <varargs.h> /* { dg-bogus "varargs.h" "missing file" } */ -/* { dg-message "" "In file included from" { target *-*-* } 6 } */ +/* { dg-message "file included from" "file included from" { target *-*-* } 0 } */ /* { dg-error "no longer implements" "#error 1" { target *-*-* } 4 } */ /* { dg-error "Revise your code" "#error 2" { target *-*-* } 5 } */ diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index 7d00acf6d1a8..e906265e40cc 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -620,6 +620,17 @@ if { [info procs saved-dg-error] == [list] \ process-message saved-dg-error "$gcc_error_prefix" "$args" } + + # Override dg-bogus at the same time. It doesn't handle a prefix + # but its expression should include a column number. Otherwise the + # line number can match the column number for other messages, leading + # to insanity. + rename dg-bogus saved-dg-bogus + + proc dg-bogus { args } { + upvar dg-messages dg-messages + process-message saved-dg-bogus "" $args + } } # Modify the regular expression saved by a DejaGnu message directive to @@ -641,20 +652,26 @@ proc process-message { msgproc msgprefix dgargs } { return; } - # Prepend the message prefix to the regular expression and make - # it match a single line. + # Get the entry for the new message. Prepend the message prefix to + # the regular expression and make it match a single line. set newentry [lindex ${dg-messages} end] set expmsg [lindex $newentry 2] - # If we have a column... + # Handle column numbers from the specified expression (if there is + # one) and set up the search expression that will be used by DejaGnu. if [regexp "^(\[0-9\]+):" $expmsg "" column] { - # Remove "COLUMN:" + # The expression in the directive included a column number. + # Remove "COLUMN:" from the original expression and move it + # to the proper place in the search expression. regsub "^\[0-9\]+:" $expmsg "" expmsg - - # Include the column in the search expression. - set expmsg "$column: $msgprefix\[^\n]*$expmsg" + set expmsg "$column: $msgprefix\[^\n\]*$expmsg" + } elseif [string match "" [lindex $newentry 0]] { + # The specified line number is 0; don't expect a column number. + set expmsg "$msgprefix\[^\n\]*$expmsg" } else { - set expmsg "$msgprefix\[^\n]*$expmsg" + # There is no column number in the search expression, but we + # should expect one in the message itself. + set expmsg "\[0-9\]+: $msgprefix\[^\n\]*$expmsg" } set newentry [lreplace $newentry 2 2 $expmsg] diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index f8645283e0f7..7023582784a9 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,7 @@ +2009-06-01 Aldy Hernandez <aldyh@redhat.com> + + * include/line-map.h (LAST_SOURCE_COLUMN): New. + 2009-06-01 Ian Lance Taylor <iant@google.com> * include/cpp-id-data.h: Add extern "C". diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h index 962525f156b6..09e72f14d4b8 100644 --- a/libcpp/include/line-map.h +++ b/libcpp/include/line-map.h @@ -158,6 +158,8 @@ extern const struct line_map *linemap_lookup of the #include, or other directive, that caused a map change. */ #define LAST_SOURCE_LINE(MAP) \ SOURCE_LINE (MAP, LAST_SOURCE_LINE_LOCATION (MAP)) +#define LAST_SOURCE_COLUMN(MAP) \ + SOURCE_COLUMN (MAP, LAST_SOURCE_LINE_LOCATION (MAP)) #define LAST_SOURCE_LINE_LOCATION(MAP) \ ((((MAP)[1].start_location - 1 - (MAP)->start_location) \ & ~((1 << (MAP)->column_bits) - 1)) \ -- GitLab