Message ID | Y3wC9ytEbTC0OidM@tucnak |
---|---|
State | New |
Headers | show |
Series | c++: Fix up -fcontract* options | expand |
On 11/21/22 18:00, Jakub Jelinek wrote: > Hi! > > I've noticed > +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" > error, this is due to missing dot at the end of the description. > > The second part of the first hunk should fix that, but while at it, > I find it weird that some options don't have RejectNegative, yet > for options that accept an argument a negative option looks weird > and isn't really handled. OK. > 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. > 2022-11-21 Jakub Jelinek <jakub@redhat.com> > > * c.opt (fcontract-assumption-mode=, fcontract-continuation-mode=, > fcontract-role=, fcontract-semantic=): Add RejectNegative. > (fcontract-build-level=): Terminate description with dot. > > --- gcc/c-family/c.opt.jj 2022-11-19 09:21:14.314444706 +0100 > +++ gcc/c-family/c.opt 2022-11-21 23:51:55.605736499 +0100 > @@ -1692,12 +1692,12 @@ EnumValue > Enum(on_off) String(on) Value(1) > > fcontract-assumption-mode= > -C++ Joined > +C++ Joined RejectNegative > -fcontract-assumption-mode=[on|off] Enable or disable treating axiom level contracts as assumptions (default on). > > fcontract-build-level= > C++ Joined RejectNegative > --fcontract-build-level=[off|default|audit] Specify max contract level to generate runtime checks for > +-fcontract-build-level=[off|default|audit] Specify max contract level to generate runtime checks for. > > fcontract-strict-declarations= > C++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative > @@ -1708,15 +1708,15 @@ C++ Var(flag_contract_mode) Enum(on_off) > -fcontract-mode=[on|off] Enable or disable all contract facilities (default on). > > fcontract-continuation-mode= > -C++ Joined > +C++ Joined RejectNegative > -fcontract-continuation-mode=[on|off] Enable or disable contract continuation mode (default off). > > fcontract-role= > -C++ Joined > +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-semantic= > -C++ Joined > +C++ Joined RejectNegative > -fcontract-semantic=<level>:<semantic> Specify the concrete semantics for level > > fcoroutines > > Jakub >
--- gcc/c-family/c.opt.jj 2022-11-19 09:21:14.314444706 +0100 +++ gcc/c-family/c.opt 2022-11-21 23:51:55.605736499 +0100 @@ -1692,12 +1692,12 @@ EnumValue Enum(on_off) String(on) Value(1) fcontract-assumption-mode= -C++ Joined +C++ Joined RejectNegative -fcontract-assumption-mode=[on|off] Enable or disable treating axiom level contracts as assumptions (default on). fcontract-build-level= C++ Joined RejectNegative --fcontract-build-level=[off|default|audit] Specify max contract level to generate runtime checks for +-fcontract-build-level=[off|default|audit] Specify max contract level to generate runtime checks for. fcontract-strict-declarations= C++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative @@ -1708,15 +1708,15 @@ C++ Var(flag_contract_mode) Enum(on_off) -fcontract-mode=[on|off] Enable or disable all contract facilities (default on). fcontract-continuation-mode= -C++ Joined +C++ Joined RejectNegative -fcontract-continuation-mode=[on|off] Enable or disable contract continuation mode (default off). fcontract-role= -C++ Joined +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-semantic= -C++ Joined +C++ Joined RejectNegative -fcontract-semantic=<level>:<semantic> Specify the concrete semantics for level fcoroutines