On Tue, Jan 20, 2026 at 12:57 AM Jakub Jelinek <[email protected]> wrote: > > Hi! > > Last night I was surprised because make check help.exp reported the missing > dot at the end of cobol/lang.opt description below: > > Wmove-index > Cobol Warning Var(move_index, 1) Init(1) > Warn if MOVE INDEX is used > > but has not reported > > fexec-national-charset= > Cobol Joined Var(cobol_national_charset) RejectNegative > Set the default execution character set for NATIONAL data items > > a few lines earlier. > > The problem is that help.exp verified output of > --help={common,optimizers,param,target,warnings} and just selected FEs: > --help={ada,c,c++,d,fortran,go} and no other languages. > Wmove-index above got reported because it appears in --help=warnings, > but fexec-national-charset= didn't, because it only appears in --help=cobol > > So, the following patch adds 6 further languages to what help.exp tests > and fixes the reported bugs. > > Tested on x86_64-linux, ok for trunk?
Ok. The .opt part looks obvious too > > Note, Modula-2 seems to also not capitalize most of the descriptions, > while all other *.opt files do, shall we fix that too incrementally? Yes I think so, I had thought this was tested but maybe it was not. Thanks, Andrew Pinski > > 2026-01-20 Jakub Jelinek <[email protected]> > > gcc/testsuite/ > * gcc.misc-tests/help.exp: Check for descriptions without terminating > dot or semicolon also for objc, objc++, rust, modula-2, cobol and > algol68. > gcc/rust/ > * lang.opt (frust-crate=, frust-extern=, > frust-incomplete-and-experimental-compiler-do-not-use, > frust-max-recursion-depth=, frust-crate-type=, frust-mangling=, > frust-cfg=, frust-edition=, frust-embed-metadata, > frust-metadata-output=, frust-compile-until=, > frust-name-resolution-2.0, frust-panic=, frust-overflow-checks): Add > dot at the end of the description. > gcc/cobol/ > * lang.opt (fexec-national-charset=): Add dot at the end of the > description. > gcc/algol68/ > * lang.opt (std=algol68, std=gnu68): Add dot at the end of the > description. > gcc/m2/ > * lang.opt (Wpedantic-param-names, Wpedantic-cast, Wverbose-unbounded, > Wstyle, fauto-init, fbounds, fcase, fcpp, fcpp-end, fcpp-begin, > fdebug-builtins, fd, fdebug-function-line-numbers, fdef=, > fdump-system-exports, fextended-opaque, ffloatvalue, > fgen-module-list=, findex, fiso, flocation=, fm2-debug-trace=, > fm2-dump=, fm2-dump-decl=, fm2-dump-gimple=, fm2-dump-quad=, > fm2-dump-filter=, fm2-file-offset-bits=, fm2-g, fm2-lower-case, > fm2-pathname=, fm2-pathname-root=, fm2-pathname-rootI=, fm2-plugin, > fm2-prefix=, fm2-statistics, fm2-strict-type, fm2-strict-type-reason, > fm2-whole-program, fmod=, fnil, fpim, fpim2, fpim3, fpim4, > fpositive-mod-floor-div, fpthread, fq, frange, freturn, > fruntime-modules=, fscaffold-dynamic, fscaffold-c, fscaffold-c++, > fscaffold-main, fscaffold-static, fshared, fsoft-check-all, fsources, > fswig, fuse-list=, fwideset, fwholediv, fwholevalue, save-temps, > save-temps=): Add dot at the end of the description. > > --- gcc/testsuite/gcc.misc-tests/help.exp.jj 2026-01-02 22:41:17.364552147 > +0100 > +++ gcc/testsuite/gcc.misc-tests/help.exp 2026-01-20 01:55:30.446257015 > +0100 > @@ -144,7 +144,8 @@ check_for_options c "--help=joined,undoc > # find the source a failure. > > foreach cls { "ada" "c" "c++" "d" "fortran" "go" \ > - "common" "optimizers" "param" "target" "warnings" } { > + "objc" "objc++" "rust" "modula-2" "cobol" "algol68" \ > + "common" "optimizers" "param" "target" "warnings" } { > check_for_options c "--help=$cls" "" "^ +-.*\[^:.\]$" "" > } > > --- gcc/rust/lang.opt.jj 2026-01-02 22:41:17.328552744 +0100 > +++ gcc/rust/lang.opt 2026-01-20 02:05:42.916251018 +0100 > @@ -60,11 +60,11 @@ Warn for infinitely recursive calls. > > frust-crate= > Rust Joined RejectNegative > --frust-crate=<name> Set the crate name for the compilation > +-frust-crate=<name> Set the crate name for the compilation. > > frust-extern= > Rust RejectNegative Joined > --frust-extern= Specify where an external library is located > +-frust-extern= Specify where an external library is located. > > frust-debug > Rust Var(flag_rust_debug) > @@ -76,15 +76,15 @@ Rust Joined RejectNegative > > frust-incomplete-and-experimental-compiler-do-not-use > Rust Var(flag_rust_experimental) > -Enable experimental compilation of Rust files at your own risk > +Enable experimental compilation of Rust files at your own risk. > > frust-max-recursion-depth= > Rust RejectNegative Type(int) Var(rust_max_recursion_depth) Init(64) > --frust-max-recursion-depth=<integer> > +-frust-max-recursion-depth=<integer>. > > frust-crate-type= > Rust Joined RejectNegative Enum(frust_crate_type) Var(flag_rust_crate_type) > --frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro] Crate > type to emit > +-frust-crate-type=[bin|lib|rlib|dylib|cdylib|staticlib|proc-macro] Crate > type to emit. > > Enum > Name(frust_crate_type) Type(int) UnknownError(unknown crate type: '%qs') > @@ -112,7 +112,7 @@ Enum(frust_crate_type) String(proc-macro > > frust-mangling= > Rust Joined RejectNegative Enum(frust_mangling) Var(flag_rust_mangling) > --frust-mangling=[legacy|v0] Version to use for name mangling > +-frust-mangling=[legacy|v0] Version to use for name mangling. > > Enum > Name(frust_mangling) Type(int) UnknownError(unknown rust mangling option %qs) > @@ -125,11 +125,11 @@ Enum(frust_mangling) String(v0) Value(1) > > frust-cfg= > Rust Joined RejectNegative > --frust-cfg=<name> Set a config expansion option > +-frust-cfg=<name> Set a config expansion option. > > frust-edition= > Rust Joined RejectNegative Enum(frust_edition) Var(flag_rust_edition) > --frust-edition=[2015|2018|2021] Edition to use when compiling > rust code > +-frust-edition=[2015|2018|2021] Edition to use when compiling > rust code. > > Enum > Name(frust_edition) Type(int) UnknownError(unknown rust edition %qs) > @@ -145,11 +145,11 @@ Enum(frust_edition) String(2021) Value(2 > > frust-embed-metadata > Rust Var(flag_rust_embed_metadata) > -Enable embedding metadata directly into object files > +Enable embedding metadata directly into object files. > > frust-metadata-output= > Rust Joined RejectNegative > --frust-metadata-output=<path.rox> Path to output crate metadata > +-frust-metadata-output=<path.rox> Path to output crate metadata. > > o > Rust Joined Separate > @@ -157,7 +157,7 @@ Rust Joined Separate > > frust-compile-until= > Rust Joined RejectNegative Enum(frust_compile_until) > Var(flag_rust_compile_until) > --frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end] > The pipeline will run up until this stage when compiling Rust > code > +-frust-compile-until=[ast|attributecheck|expansion|astvalidation|featuregating|nameresolution|lowering|typecheck|privacy|unsafety|const|borrowcheck|compilation|end] > The pipeline will run up until this stage when compiling Rust > code. > > Enum > Name(frust_compile_until) Type(int) UnknownError(unknown rust compile-until > %qs) > @@ -206,7 +206,7 @@ Enum(frust_compile_until) String(end) Va > > frust-name-resolution-2.0 > Rust Var(flag_name_resolution_2_0) Init(1) > -Use the temporary and experimental name resolution pipeline instead of the > stable one > +Use the temporary and experimental name resolution pipeline instead of the > stable one. > > frust-borrowcheck > Rust Var(flag_borrowcheck) > @@ -214,7 +214,7 @@ Use the WIP borrow checker. > > frust-panic= > Rust Joined RejectNegative Enum(frust_panic) Var(flag_rust_panic) > --frust-edition=[unwind|abort] Panic strategy to compile crate > with > +-frust-edition=[unwind|abort] Panic strategy to compile crate > with. > > Enum > Name(frust_panic) Type(int) UnknownError(unknown panic strategy %qs) > @@ -227,11 +227,11 @@ Enum(frust_panic) String(abort) Value(1) > > frust-overflow-checks > Rust Var(flag_overflow_checks) Init(1) > -Enable the overflow checks in code generation > +Enable the overflow checks in code generation. > > frust-assume-builtin-offset-of > Rust Var(flag_assume_builtin_offset_of) > -Define a built-in offset_of macro in the compiler and assume it is present > +Define a built-in offset_of macro in the compiler and assume it is present. > > frust-unused-check-2.0 > Rust Var(flag_unused_check_2_0) > --- gcc/cobol/lang.opt.jj 2026-01-20 01:29:54.856866624 +0100 > +++ gcc/cobol/lang.opt 2026-01-20 01:56:57.868828783 +0100 > @@ -79,7 +79,7 @@ Cobol Joined Var(cobol_charset) RejectNe > > fexec-national-charset= > Cobol Joined Var(cobol_national_charset) RejectNegative > -Set the default execution character set for NATIONAL data items > +Set the default execution character set for NATIONAL data items. > > ;; warnings > > --- gcc/algol68/lang.opt.jj 2026-01-02 22:41:16.716562890 +0100 > +++ gcc/algol68/lang.opt 2026-01-20 01:57:30.548294894 +0100 > @@ -102,11 +102,11 @@ Link the GNU Algol 68 run-time library d > > std=algol68 > Algol68 > -Compile strict Algol 68 as defined by the Revised Report > +Compile strict Algol 68 as defined by the Revised Report. > > std=gnu68 > Algol68 > -Accept GNU extensions to Algol 68 > +Accept GNU extensions to Algol 68. > > ; Stropping regimes. > > --- gcc/m2/lang.opt.jj 2026-01-02 22:41:17.249554054 +0100 > +++ gcc/m2/lang.opt 2026-01-20 02:03:25.286499494 +0100 > @@ -36,19 +36,19 @@ turns on case statement label compile ti > > Wpedantic-param-names > Modula-2 > -compiler checks to force definition module procedure parameter names with > their implementation module counterpart > +compiler checks to force definition module procedure parameter names with > their implementation module counterpart. > > Wpedantic-cast > Modula-2 > -compiler warns if a cast is being used on types of differing sizes > +compiler warns if a cast is being used on types of differing sizes. > > Wverbose-unbounded > Modula-2 > -inform user which parameters will be passed by reference > +inform user which parameters will be passed by reference. > > Wstyle > Modula-2 > -extra compile time semantic checking, typically tries to catch poor > programming style > +extra compile time semantic checking, typically tries to catch poor > programming style. > > Wuninit-variable-checking > Modula-2 > @@ -60,67 +60,67 @@ turns on compile time analysis to detect > > fauto-init > Modula-2 > -automatically initializes all pointers to NIL > +automatically initializes all pointers to NIL. > > fbounds > Modula-2 > -turns on runtime subrange, array index and indirection via NIL pointer > checking > +turns on runtime subrange, array index and indirection via NIL pointer > checking. > > fcase > Modula-2 > -turns on runtime checking to check whether a CASE statement requires an ELSE > clause when one was not specified > +turns on runtime checking to check whether a CASE statement requires an ELSE > clause when one was not specified. > > fcpp > Modula-2 > -use cpp to preprocess the module > +use cpp to preprocess the module. > > fcpp-end > Modula-2 > -passed to the preprocessor if -fcpp is used (internal switch) > +passed to the preprocessor if -fcpp is used (internal switch). > > fcpp-begin > Modula-2 > -passed to the preprocessor if -fcpp is used (internal switch) > +passed to the preprocessor if -fcpp is used (internal switch). > > fdebug-builtins > Modula-2 > -call a real function, rather than the builtin equivalent > +call a real function, rather than the builtin equivalent. > > fd > Modula-2 > -turn on internal debugging of the compiler (internal switch) > +turn on internal debugging of the compiler (internal switch). > > fdebug-function-line-numbers > Modula-2 > -turn on tracing of procedure line numbers (internal switch) > +turn on tracing of procedure line numbers (internal switch). > > fdef= > Modula-2 Joined > -recognize the specified suffix as a definition module filename > +recognize the specified suffix as a definition module filename. > > fdump-system-exports > Modula-2 > -display all inbuilt system items > +display all inbuilt system items. > > fextended-opaque > Modula-2 > -allows opaque types to be implemented as any type (a GNU Modula-2 extension) > +allows opaque types to be implemented as any type (a GNU Modula-2 extension). > > ffloatvalue > Modula-2 > -turns on runtime checking to check whether a floating point number will > exceed range > +turns on runtime checking to check whether a floating point number will > exceed range. > > fgen-module-list= > Modula-2 Joined > -create a topologically sorted module list from all dependent modules used in > the application > +create a topologically sorted module list from all dependent modules used in > the application. > > findex > Modula-2 > -turns on all range checking for numerical values > +turns on all range checking for numerical values. > > fiso > Modula-2 > -use ISO dialect of Modula-2 > +use ISO dialect of Modula-2. > > flibs= > Modula-2 Joined > @@ -128,47 +128,47 @@ specify the library order, the libraries > > flocation= > Modula-2 Joined > -set all location values to a specific value (internal switch) > +set all location values to a specific value (internal switch). > > fm2-debug-trace= > Modula-2 Joined > -turn on internal debug tracing for quad,token,line,all (internal switch) > +turn on internal debug tracing for quad,token,line,all (internal switch). > > fm2-dump= > Modula-2 Joined > -dump Modula-2 internal intemediate representation specified by: > all,quad,decl,gimple > +dump Modula-2 internal intemediate representation specified by: > all,quad,decl,gimple. > > fm2-dump-decl= > Modula-2 Joined > -dump Modula-2 decls to the filename stem specified > +dump Modula-2 decls to the filename stem specified. > > fm2-dump-gimple= > Modula-2 Joined > -dump Modula-2 gimple to the filename stem specified > +dump Modula-2 gimple to the filename stem specified. > > fm2-dump-quad= > Modula-2 Joined > -dump Modula-2 quads to the filename stem specified > +dump Modula-2 quads to the filename stem specified. > > fm2-dump-filter= > Modula-2 Joined > -filter the language dump using a comma separated list of procedures and > modules > +filter the language dump using a comma separated list of procedures and > modules. > > fm2-file-offset-bits= > Modula-2 Joined > -override the default 64 bit definition of SYSTEM.COFF_T with the argument > specified > +override the default 64 bit definition of SYSTEM.COFF_T with the argument > specified. > > fm2-g > Modula-2 > -generate extra nops to improve debugging, producing an instruction for every > code related keyword > +generate extra nops to improve debugging, producing an instruction for every > code related keyword. > > fm2-lower-case > Modula-2 > -generate error messages which render keywords in lower case > +generate error messages which render keywords in lower case. > > fm2-pathname= > Modula-2 Joined > -specify the module mangled prefix name for all modules in the following > include paths > +specify the module mangled prefix name for all modules in the following > include paths. > > fm2-pathnameI > Modula-2 Joined > @@ -176,7 +176,7 @@ Modula-2 Joined > > fm2-pathname-root= > Modula-2 Joined > -add include paths for all the library names in -flibs= to this directory root > +add include paths for all the library names in -flibs= to this directory > root. > > fm2-pathname-rootI= > Modula-2 Joined > @@ -184,27 +184,27 @@ Modula-2 Joined > > fm2-plugin > Modula-2 > -insert plugin to identify runtime errors at compiletime > +insert plugin to identify runtime errors at compiletime. > > fm2-prefix= > Modula-2 Joined > -specify the module mangled prefix name > +specify the module mangled prefix name. > > fm2-statistics > Modula-2 > -display statistics about the amount of source lines compiled and symbols used > +display statistics about the amount of source lines compiled and symbols > used. > > fm2-strict-type > Modula-2 > -experimental flag to turn on the new strict type checker > +experimental flag to turn on the new strict type checker. > > fm2-strict-type-reason > Modula-2 > -provides more detail why the types are incompatible > +provides more detail why the types are incompatible. > > fm2-whole-program > Modula-2 > -compile all implementation modules and program module at once > +compile all implementation modules and program module at once. > > fmem-report > Modula-2 > @@ -212,87 +212,87 @@ Modula-2 > > fmod= > Modula-2 Joined > -recognize the specified suffix as implementation and module filenames > +recognize the specified suffix as implementation and module filenames. > > fnil > Modula-2 > -turns on runtime checking to detect accessing data through a NIL value > pointer > +turns on runtime checking to detect accessing data through a NIL value > pointer. > > fpim > Modula-2 > -use PIM [234] dialect of Modula-2 > +use PIM [234] dialect of Modula-2. > > fpim2 > Modula-2 > -use PIM 2 dialect of Modula-2 > +use PIM 2 dialect of Modula-2. > > fpim3 > Modula-2 > -use PIM 3 dialect of Modula-2 > +use PIM 3 dialect of Modula-2. > > fpim4 > Modula-2 > -use PIM 4 dialect of Modula-2 > +use PIM 4 dialect of Modula-2. > > fpositive-mod-floor-div > Modula-2 > -force positive result from MOD and DIV result floor > +force positive result from MOD and DIV result floor. > > fpthread > Modula-2 > -link against the pthread library (default on) > +link against the pthread library (default on). > > fq > Modula-2 > -internal compiler debugging information, dump the list of quadruples > +internal compiler debugging information, dump the list of quadruples. > > frange > Modula-2 > -turns on all range checking for numerical values > +turns on all range checking for numerical values. > > freturn > Modula-2 > -turns on runtime checking for functions which finish without executing a > RETURN statement > +turns on runtime checking for functions which finish without executing a > RETURN statement. > > fruntime-modules= > Modula-2 Joined > -specify the list of runtime modules and their initialization order > +specify the list of runtime modules and their initialization order. > > fscaffold-dynamic > Modula-2 > -the modules initialization order is dynamically determined by M2RTS and > application dependencies > +the modules initialization order is dynamically determined by M2RTS and > application dependencies. > > fscaffold-c > Modula-2 > -generate a C source scaffold for the current module being compiled > +generate a C source scaffold for the current module being compiled. > > fscaffold-c++ > Modula-2 > -generate a C++ source scaffold for the current module being compiled > +generate a C++ source scaffold for the current module being compiled. > > fscaffold-main > Modula-2 > -generate the main function > +generate the main function. > > fscaffold-static > Modula-2 > -generate static scaffold initialization and finalization for every module > inside main > +generate static scaffold initialization and finalization for every module > inside main. > > fshared > Modula-2 > -generate a shared library from the module > +generate a shared library from the module. > > fsoft-check-all > Modula-2 > -turns on all software runtime checking (an abbreviation for -fnil -frange > -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue) > +turns on all software runtime checking (an abbreviation for -fnil -frange > -findex -fwholediv -fcase -freturn -fwholevalue -ffloatvalue). > > fsources > Modula-2 > -display the location of module source files as they are compiled > +display the location of module source files as they are compiled. > > fswig > Modula-2 > -create a swig interface file for the module > +create a swig interface file for the module. > > ftime-report > Modula-2 > @@ -304,7 +304,7 @@ optimize non var unbounded parameters by > > fuse-list= > Modula-2 Joined > -orders the initialization/finalizations for scaffold-static or force linking > of modules if scaffold-dynamic > +orders the initialization/finalizations for scaffold-static or force linking > of modules if scaffold-dynamic. > > fversion > Modula-2 > @@ -312,15 +312,15 @@ Modula-2 > > fwideset > Modula-2 > -link against the module M2WIDESET to perform the wideset operator, the > negative version of this option will generate a warning if this module is > required > +link against the module M2WIDESET to perform the wideset operator, the > negative version of this option will generate a warning if this module is > required. > > fwholediv > Modula-2 > -turns on all division and modulus by zero checking for ordinal values > +turns on all division and modulus by zero checking for ordinal values. > > fwholevalue > Modula-2 > -turns on runtime checking to check whether a whole number will exceed range > +turns on runtime checking to check whether a whole number will exceed range. > > static-libgm2 > Driver > @@ -469,11 +469,11 @@ Modula-2 Alias(save-temps) > > save-temps > Modula-2 > -save temporary preprocessed files > +save temporary preprocessed files. > > save-temps= > Modula-2 Joined > -save temporary preprocessed files > +save temporary preprocessed files. > > traditional-cpp > Modula-2 > > Jakub >
