On Tue, Nov 22, 2022 at 10:09:06AM -0500, Jason Merrill wrote:
> > Though, shall we have those [on|off] options at all?
> > Those are inconsistent with all other boolean options gcc has.
> > Every other boolean option is -fwhatever for it being on
> > and -fno-whatever for it being off, shouldn't the options be
> > without arguments and accept negatives (-fcontract-assumption-mode
> > vs. -fno-contract-assumption-mode etc.)?
> 
> True, but I think let's leave them alone for now, they'll probably all be
> replaced as the feature specification evolves.

If we don't want to support them for too long, another possibility
would be to use params for those instead of normal options,
params are understood to be more volatile than normal options and
can be removed easily (while for normal options we typically
keep them but error or them or silently ignore depending on what
the option is about).

Anyway, during testing I've missed my previous patch just changed:
-FAIL: compiler driver --help=c++ option(s): "^ +-.*[^:.]\$" absent from 
output: "  -fcontract-build-level=[off|default|audit] Specify max contract 
level to generate runtime checks for"
+FAIL: compiler driver --help=c++ option(s): "^ +-.*[^:.]\$" absent from 
output: "  -fcontract-role=<name>:<semantics> Specify the semantics for all 
levels in a role (default, review), or a custom contract role with given 
semantics (ex: opt:assume,assume,assume)"
rather than actually fixed it, the test only reports the first such problem.

This patch fixes the remaining ones.

Tested with make check-gcc RUNTESTFLAGS=help.exp and committed to trunk
as obvious.

2022-11-24  Jakub Jelinek  <ja...@redhat.com>

        * c.opt (fcontract-role=, fcontract-semantic=): Terminate descriptions
        with a dot.

--- gcc/c-family/c.opt.jj       2022-11-23 09:29:01.083548284 +0100
+++ gcc/c-family/c.opt  2022-11-24 11:42:29.582499720 +0100
@@ -1713,11 +1713,11 @@ C++ Joined RejectNegative
 
 fcontract-role=
 C++ Joined RejectNegative
--fcontract-role=<name>:<semantics>     Specify the semantics for all levels in 
a role (default, review), or a custom contract role with given semantics (ex: 
opt:assume,assume,assume)
+-fcontract-role=<name>:<semantics>     Specify the semantics for all levels in 
a role (default, review), or a custom contract role with given semantics (ex: 
opt:assume,assume,assume).
 
 fcontract-semantic=
 C++ Joined RejectNegative
--fcontract-semantic=<level>:<semantic> Specify the concrete semantics for level
+-fcontract-semantic=<level>:<semantic> Specify the concrete semantics for 
level.
 
 fcoroutines
 C++ LTO Var(flag_coroutines)

        Jakub

Reply via email to