diff options
author | Lewis Hyatt <lhyatt@gmail.com> | 2020-08-13 13:05:46 -0400 |
---|---|---|
committer | Giuliano Belinassi <giuliano.belinassi@usp.br> | 2020-08-17 15:08:13 -0300 |
commit | d339a789314ca0549a3fb952ff32a7395641bbab (patch) | |
tree | b1239f59329156a1a8ed5a94165e2b7af3639471 /gcc/testsuite | |
parent | 70a973ad305aea4c67a2222a95604431541ea079 (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.exp | 26 | ||||
-rw-r--r-- | gcc/testsuite/lib/prune.exp | 8 |
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 |