On Sat, Dec 06, 2025 at 05:10:28PM -0700, Sandra Loosemore wrote:
> I'm not sure what the rationale is for having "RejectNegative" on all
> of the options that control instruction usage except for -mdouble-float,
> but with this patch the documentation matches what is in the .opt files.
I think my rational was that since the defaults are off, we just add options to
turn them on. But I could understand why the Negative form would also be
useful.
If anyone wants to patch the options to allow negative form I would not oppose
it.
> gcc/ChangeLog
> PR other/122243
> * config/or1k/elf.opt (mnewlib): Mark obsolete option as
> "Undocumented".
> * config/or1k/or1k.opt (mcmov): Don't use future tense in doc string.
> (msfimm): Likewise.
> (mshftimm): Likewise.
> * doc/invoke.texi (Option Summary) <OpenRISC Options>: Don't
> document -mnewlib.
> (OpenRISC Options): Likewise. Add @opindex entry for
> -mno-double-float. Fix more instances of incorrect use of future
> tense.
> ---
> gcc/config/or1k/elf.opt | 2 +-
> gcc/config/or1k/or1k.opt | 6 +++---
> gcc/doc/invoke.texi | 16 ++++++----------
> 3 files changed, 10 insertions(+), 14 deletions(-)
>
> diff --git a/gcc/config/or1k/elf.opt b/gcc/config/or1k/elf.opt
> index 28e960ed208..578aba3ba04 100644
> --- a/gcc/config/or1k/elf.opt
> +++ b/gcc/config/or1k/elf.opt
> @@ -28,6 +28,6 @@ Target RejectNegative Joined
> Configure the newlib board specific runtime. The default is or1ksim.
>
> mnewlib
> -Target RejectNegative
> +Target RejectNegative Undocumented
> This option is ignored; it is provided for compatibility purposes only. This
> used to select linker and preprocessor options for use with newlib.
> diff --git a/gcc/config/or1k/or1k.opt b/gcc/config/or1k/or1k.opt
> index d252de08204..9ce8b800ed5 100644
> --- a/gcc/config/or1k/or1k.opt
> +++ b/gcc/config/or1k/or1k.opt
> @@ -85,7 +85,7 @@ Enum(or1k_cmodel_type) String(large) Value(CMODEL_LARGE)
> mcmov
> Target RejectNegative Mask(CMOV)
> Enable generation of conditional move (l.cmov) instructions. By default the
> -equivalent will be generated using set and branch.
> +equivalents are generated using set and branch.
>
> mror
> Target RejectNegative Mask(ROR)
> @@ -106,11 +106,11 @@ loads are used to perform sign extension.
> msfimm
> Target RejectNegative Mask(SFIMM)
> Enable generation of compare and set flag with immediate (l.sf*i)
> instructions.
> -By default extra instructions will be generated to store the immediate to a
> +By default extra instructions are generated to store the immediate to a
> register first.
>
> mshftimm
> Target RejectNegative Mask(SHFTIMM)
> Enable generation of shift with immediate (l.srai, l.srli, l.slli)
> instructions.
> -By default extra instructions will be generated to store the immediate to a
> +By default extra instructions are generated to store the immediate to a
> register first.
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index 62afc5a66dd..f403d20bc0b 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -1285,7 +1285,7 @@ Objective-C and Objective-C++ Dialects}.
> -mmainkernel -moptimize -msoft-stack -muniform-simt -mgomp}
>
> @emph{OpenRISC Options} (@ref{OpenRISC Options})
> -@gccoptlist{-mboard=@var{name} -mnewlib -mhard-mul -mhard-div
> +@gccoptlist{-mboard=@var{name} -mhard-mul -mhard-div
> -msoft-mul -msoft-div
> -msoft-float -mhard-float -mdouble-float -munordered-float
> -mcmov -mror -mrori -msext -msfimm -mshftimm
> @@ -31580,14 +31580,9 @@ These options are defined for OpenRISC:
>
> @opindex mboard
> @item -mboard=@var{name}
> -Configure a board specific runtime. This will be passed to the linker for
> +Configure a board specific runtime. This is passed to the linker for
> newlib board library linking. The default is @code{or1ksim}.
>
> -@opindex mnewlib
> -@item -mnewlib
> -This option is ignored; it is for compatibility purposes only. This used to
> -select linker and preprocessor options for use with newlib.
> -
> @opindex msoft-div
> @opindex mhard-div
> @item -msoft-div
> @@ -31610,6 +31605,7 @@ Select software or hardware for floating point
> operations.
> The default is software.
>
> @opindex mdouble-float
> +@opindex mno-double-float
> @item -mdouble-float
> When @option{-mhard-float} is selected, enables generation of
> double-precision
> floating point instructions. By default functions from @file{libgcc} are
> used
> @@ -31625,7 +31621,7 @@ compare and set flag operations.
> @opindex mcmov
> @item -mcmov
> Enable generation of conditional move (@code{l.cmov}) instructions. By
> -default the equivalent will be generated using set and branch.
> +default the equivalents are generated using set and branch.
>
> @opindex mror
> @item -mror
> @@ -31646,13 +31642,13 @@ memory loads are used to perform sign extension.
> @opindex msfimm
> @item -msfimm
> Enable generation of compare and set flag with immediate (@code{l.sf*i})
> -instructions. By default extra instructions will be generated to store the
> +instructions. By default extra instructions are generated to store the
> immediate to a register first.
>
> @opindex mshftimm
> @item -mshftimm
> Enable generation of shift with immediate (@code{l.srai}, @code{l.srli},
> -@code{l.slli}) instructions. By default extra instructions will be generated
> +@code{l.slli}) instructions. By default extra instructions are generated
> to store the immediate to a register first.
>
> @opindex mcmodel=
These all look good to me. Thanks,
-Stafford