This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 3 of 3] print help for undocumented options


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\""
 		}
 	    }
 	}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]