aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorLewis Hyatt <lhyatt@gmail.com>2020-08-13 13:05:46 -0400
committerGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-17 15:08:13 -0300
commitd339a789314ca0549a3fb952ff32a7395641bbab (patch)
treeb1239f59329156a1a8ed5a94165e2b7af3639471 /gcc/testsuite
parent70a973ad305aea4c67a2222a95604431541ea079 (diff)
diagnostics: Add new option -fdiagnostics-plain-output
Adds the new option -fdiagnostics-plain-output, which is an alias for several others: -fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never The idea is that in the future, if the default behavior of diagnostics is changed to add some fancy feature or other, then the -fdiagnostics-plain-output option will also be changed accordingly so that the old behavior is preserved in the presence of this option. This allows us to use -fdiagnostics-plain-output in in the testsuite, such that the testsuite (specifically the setting of TEST_ALWAYS_FLAGS in prune.exp) does not need to be touched whenever diagnostics get a new look. This also removes the need to add workarounds to compat.exp for every new option that may be needed in a newer version of the compiler, but is not supported in older versions. gcc/ChangeLog: * common.opt: Add new option -fdiagnostics-plain-output. * doc/invoke.texi: Document it. * opts-common.c (decode_cmdline_options_to_array): Implement it. (decode_cmdline_option): Add missing const qualifier to argv. libstdc++-v3/ChangeLog: * testsuite/lib/libstdc++.exp: Use the new option -fdiagnostics-plain-output. gcc/testsuite/ChangeLog: * lib/prune.exp: Change TEST_ALWAYS_FLAGS to use -fdiagnostics-plain-output. * lib/c-compat.exp: Adapt to the prune.exp change.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/lib/c-compat.exp26
-rw-r--r--gcc/testsuite/lib/prune.exp8
2 files changed, 28 insertions, 6 deletions
diff --git a/gcc/testsuite/lib/c-compat.exp b/gcc/testsuite/lib/c-compat.exp
index 9493c214aea..2b673179115 100644
--- a/gcc/testsuite/lib/c-compat.exp
+++ b/gcc/testsuite/lib/c-compat.exp
@@ -36,24 +36,34 @@ load_lib target-libpath.exp
proc compat-use-alt-compiler { } {
global GCC_UNDER_TEST ALT_CC_UNDER_TEST
global compat_same_alt compat_alt_caret compat_alt_color compat_no_line_no
- global compat_alt_urls
+ global compat_alt_urls compat_alt_plain_output
global TEST_ALWAYS_FLAGS
# We don't need to do this if the alternate compiler is actually
# the same as the compiler under test.
if { $compat_same_alt == 0 } then {
set GCC_UNDER_TEST $ALT_CC_UNDER_TEST
+
+ # These flags are no longer added to TEST_ALWAYS_FLAGS by prune.exp
+ # because they are subsumed by -fdiagnostics-plain-output. Add them back
+ # for compatibility testing with older compilers that do not understand
+ # -fdiagnostics-plain-output.
+ set TEST_ALWAYS_FLAGS "-fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never $TEST_ALWAYS_FLAGS"
+
if { $compat_alt_caret == 0 } then {
- regsub -- "-fno-diagnostics-show-caret" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
+ regsub -all -- "-fno-diagnostics-show-caret" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
}
if { $compat_alt_color == 0 } then {
- regsub -- "-fdiagnostics-color=never" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
+ regsub -all -- "-fdiagnostics-color=never" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
}
if { $compat_alt_urls == 0 } then {
- regsub -- "-fdiagnostics-urls=never" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
+ regsub -all -- "-fdiagnostics-urls=never" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
}
if { $compat_no_line_no == 0 } then {
- regsub -- "-fno-diagnostics-show-line-numbers" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
+ regsub -all -- "-fno-diagnostics-show-line-numbers" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
+ }
+ if { $compat_alt_plain_output == 0 } then {
+ regsub -all -- "-fdiagnostics-plain-output" $TEST_ALWAYS_FLAGS "" TEST_ALWAYS_FLAGS
}
restore_gcc_exec_prefix_env_var
}
@@ -85,12 +95,14 @@ proc compat_setup_dfp { } {
global compat_alt_caret
global compat_alt_color
global compat_alt_urls
+ global compat_alt_plain_output
global compat_no_line_no
global TEST_ALWAYS_FLAGS compat_save_TEST_ALWAYS_FLAGS
set compat_alt_caret 0
set compat_alt_color 0
set compat_alt_urls 0
+ set compat_alt_plain_output 0
set compat_no_line_no 0
set compat_save_TEST_ALWAYS_FLAGS $TEST_ALWAYS_FLAGS
@@ -119,6 +131,10 @@ proc compat_setup_dfp { } {
int dummy; } "-fno-diagnostics-show-line-numbers"] != 0 } {
set compat_no_line_no 1
}
+ if { [check_no_compiler_messages_nocache compat_alt_has_plain_output object {
+ int dummy; } "-fdiagnostics-plain-output"] != 0 } {
+ set compat_alt_plain_output 1
+ }
compat-use-tst-compiler
}
diff --git a/gcc/testsuite/lib/prune.exp b/gcc/testsuite/lib/prune.exp
index 58a739684a5..190367c44e0 100644
--- a/gcc/testsuite/lib/prune.exp
+++ b/gcc/testsuite/lib/prune.exp
@@ -18,10 +18,16 @@
load_lib multiline.exp
+# Add options to TEST_ALWAYS_FLAGS so that diagnostics have the expected output
+# format. Note: You should not normally need to add more options here. If you
+# have made a change to the default diagnostic output format and are wanting to
+# undo that in the testsuite here, then please update the handling of
+# -fdiagnostics-plain-output in opts-common.c instead.
+
if ![info exists TEST_ALWAYS_FLAGS] {
set TEST_ALWAYS_FLAGS ""
}
-set TEST_ALWAYS_FLAGS "-fno-diagnostics-show-caret -fno-diagnostics-show-line-numbers -fdiagnostics-color=never -fdiagnostics-urls=never $TEST_ALWAYS_FLAGS"
+set TEST_ALWAYS_FLAGS "-fdiagnostics-plain-output $TEST_ALWAYS_FLAGS"
proc prune_gcc_output { text } {
global srcdir