This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 3 of 3] print help for undocumented options
- From: Martin Sebor <msebor at gmail dot com>
- To: Joseph Myers <joseph at codesourcery dot com>
- Cc: Eric Botcazou <ebotcazou at adacore dot com>, gcc-patches at gcc dot gnu dot org
- Date: Thu, 22 Oct 2015 15:21:23 -0600
- Subject: Re: [PATCH 3 of 3] print help for undocumented options
- Authentication-results: sourceware.org; auth=none
- References: <561E8DF1 dot 7070909 at gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1510152131170 dot 6002 at digraph dot polyomino dot org dot uk> <5627FF90 dot 1020105 at gmail dot com> <2477567 dot R8o8J52Xvm at polaris> <56291023 dot 6070403 at gmail dot com>
While fixing up the ChangeLogs for the commit (as requested below)
I noticed that a number of new options have been added with help
text with no period at the end. The attached patch fixes those
up and adds a test to help catch these problems before they creep
in again.
Martin
https://gcc.gnu.org/ml/gcc-patches/2015-10/msg02224.html
gcc/ChangeLog:
2015-10-22 Martin Sebor <msebor@redhat.com>
PR driver/68043
* config/i386/i386.opt: Add missing periods to the ends of sentences.
* config/msp430/msp430.opt: Same.
gcc/testsuite/ChangeLog:
2015-10-22 Martin Sebor <msebor@redhat.com>
PR driver/68043
* gcc.misc-tests/help.exp: Verify that option descriptions
end in periods.
* lib/options.exp (check_for_options): Use the regexp --line option.
Print unexpected match on failure.
Index: gcc/config/i386/i386.opt
===================================================================
--- gcc/config/i386/i386.opt (revision 229177)
+++ gcc/config/i386/i386.opt (working copy)
@@ -701,15 +701,15 @@
mfma4
Target Report Mask(ISA_FMA4) Var(ix86_isa_flags) Save
-Support FMA4 built-in functions and code generation
+Support FMA4 built-in functions and code generation.
mxop
Target Report Mask(ISA_XOP) Var(ix86_isa_flags) Save
-Support XOP built-in functions and code generation
+Support XOP built-in functions and code generation.
mlwp
Target Report Mask(ISA_LWP) Var(ix86_isa_flags) Save
-Support LWP built-in functions and code generation
+Support LWP built-in functions and code generation.
mabm
Target Report Mask(ISA_ABM) Var(ix86_isa_flags) Save
Index: gcc/config/msp430/msp430.opt
===================================================================
--- gcc/config/msp430/msp430.opt (revision 229177)
+++ gcc/config/msp430/msp430.opt (working copy)
@@ -83,8 +83,8 @@
msilicon-errata=
Target Joined RejectNegative Report ToLower
-Passes on a request to the assembler to enable fixes for various silicon errata
+Passes on a request to the assembler to enable fixes for various silicon errata.
msilicon-errata-warn=
Target Joined RejectNegative Report ToLower
-Passes on a request to the assembler to warn about various silicon errata
+Passes on a request to the assembler to warn about various silicon errata.
Index: gcc/testsuite/gcc.misc-tests/help.exp
===================================================================
--- gcc/testsuite/gcc.misc-tests/help.exp (revision 229177)
+++ gcc/testsuite/gcc.misc-tests/help.exp (working copy)
@@ -81,24 +81,40 @@
# Specify patterns (arguments 3 and later) that match option names
# at the beginning of the line and not when they are referenced by
# some other options later on.
-# The (?w) Tcl embedded option tells the Tcl regexp parser to treat
-# the '^' character as an anchor.
check_for_options c "--help=joined" \
- "(?w)^ *-Wformat=" "(?w)^ *-fstrict-prototype" ""
+ "^ +-Wformat=" "^ +-fstrict-prototype" ""
check_for_options c "--help=separate" \
- "(?w)^ *-MF" "(?w)^ *-fstrict-prototype" ""
+ "^ +-MF" "^ +-fstrict-prototype" ""
check_for_options c "--help=warnings,joined" \
- "(?w)^ *-Wformat=" "(?w)^ *-Wtrigraphs" ""
+ "^ +-Wformat=" "^ +-Wtrigraphs" ""
check_for_options c "--help=warnings,^joined" \
- "(?w)^ *-Wtrigraphs" "(?w)^ *-Wformat=" ""
+ "^ +-Wtrigraphs" "^ +-Wformat=" ""
check_for_options c "--help=joined,separate" \
- "(?w)^ *-I" "" ""
+ "^ +-I" "" ""
check_for_options c "--help=^joined,separate" \
- "(?w)^ *--param " "" ""
+ "^ +--param " "" ""
check_for_options c "--help=joined,^separate" \
- "(?w)^ *--help=" "" ""
+ "^ +--help=" "" ""
check_for_options c "--help=joined,undocumented" "" "" ""
+# Check to make sure the description for every option is a complete
+# sentence ending in a period. This matters not just for consistency
+# but also because other sentences may be appended to it by the help
+# subsystem. Do this one help class at a time to make it easier to
+# find the source a failure.
+
+# GCC breaks up --help output into lines at most $COLUMNS characters
+# wide (or 80 when COLUMNS is not defined), set the COLUMNS environment
+# variable to a value large enough to prevent this.
+global env
+set env(COLUMNS) 1024
+
+foreach cls { "ada" "c" "c++" "fortran" "go" \
+ "optimizers" "param" "target" "warnings" } {
+
+ check_for_options c "--help=$cls" "" "^ +-.*\[^:.\]$" ""
+}
+
# Listing only excludes gives empty results.
check_for_options c "--help=^joined,^separate" "" "" ""
Index: gcc/testsuite/lib/options.exp
===================================================================
--- gcc/testsuite/lib/options.exp (revision 229177)
+++ gcc/testsuite/lib/options.exp (working copy)
@@ -50,7 +50,7 @@
# Verify that COMPILER_PATTERRNS appear in gcc output.
foreach pattern [split $compiler_patterns "\n"] {
if {$pattern != ""} {
- if {[regexp -- "$pattern" $gcc_output]} {
+ if {[regexp -line -- "$pattern" $gcc_output]} {
pass "$test $pattern"
} else {
if {$expected_failure != ""} {
@@ -65,13 +65,15 @@
# Verify that COMPILER_NON_PATTERRNS do not appear in gcc output.
foreach pattern [split $compiler_non_patterns "\n"] {
if {$pattern != ""} {
- if {![regexp -- "$pattern" $gcc_output]} {
+ if {![regexp -line -- "$pattern" $gcc_output result]} {
pass "$test $pattern"
} else {
if {$expected_failure != ""} {
xfail "$test \"$pattern\" absent from output"
} else {
- fail "$test \"$pattern\" absent from output"
+ # Print the unexpected line that caused the failure
+ # to make it easier to find in the multiline output.
+ fail "$test \"$pattern\" absent from output: \"$result\""
}
}
}