On 19/11/2025 20:07, Sandra Loosemore wrote:
> This patch undocuments ARM target-specific options that have never
> been implemented, are already marked as "Undocumented" in arm.opt
> file, and/or are presently documented as obsolete or only useful for
> back end debugging.  I've also cleaned up the option summary to list
> only one of the positive or negative forms of each option, and to
> consistently index both forms.
> 
> gcc/ChangeLog
>       PR other/122243
>       * config/arm/arm.opt (mapcs-reentrant): Mark as "Undocumented",
>       update help string for internal documentation.
>       (mapcs-stack-check): Likewise update help string.
>       (mprint-tune-info, mneon-for-64bits): Mark as "Undocumented".
>       * doc/invoke.texi (Option Summary) <ARM Options>: Remove duplicate
>       entries for negative forms and entries for options that are
>       explicitly "Undocumented".  Add missing entry for
>       -mpic-data-is-text-relative.  Fix some formatting issues.
>       (ARM Options): Remove documentation for -mapcs-stack-check,
>       -mapcs-reentrant, -mflip-thumb, -mneon-for-64-bits,
>       -mprint-tune-info, and -mverbose-cost-dump.  Add index entries
>       for -mno- option forms.  Minor editing for clarity.
> ---
>  gcc/config/arm/arm.opt |  9 ++--
>  gcc/doc/invoke.texi    | 94 +++++++++++++++---------------------------
>  2 files changed, 38 insertions(+), 65 deletions(-)
> 
> diff --git a/gcc/config/arm/arm.opt b/gcc/config/arm/arm.opt
> index caa08d120ce..f340feeb510 100644
> --- a/gcc/config/arm/arm.opt
> +++ b/gcc/config/arm/arm.opt
> @@ -72,11 +72,12 @@ Target Mask(APCS_FRAME)
>  Generate APCS conformant stack frames.
>  
>  mapcs-reentrant
> -Target Mask(APCS_REENT)
> -Generate re-entrant, PIC code.
> +Target Mask(APCS_REENT) Undocumented
> +Unimplemented option to generate re-entrant, PIC code.
>  
>  mapcs-stack-check
>  Target Mask(APCS_STACK) Undocumented
> +Unimplemented option to generate stack checking code on function entry.
>  
>  march=
>  Target Save RejectNegative Negative(march=) ToLower Joined 
> Var(arm_arch_string)
> @@ -248,7 +249,7 @@ Target Save RejectNegative Negative(mtune=) ToLower 
> Joined Var(arm_tune_string)
>  Tune code for the given processor.
>  
>  mprint-tune-info
> -Target RejectNegative Var(print_tune_info) Init(0)
> +Target RejectNegative Var(print_tune_info) Init(0) Undocumented
>  Print CPU tuning information as comment in assembler file.  This is
>  an option used only for regression testing of the compiler and not
>  intended for ordinary use in compiling code.
> @@ -302,7 +303,7 @@ Target Var(unaligned_access) Init(2) Save
>  Enable unaligned word and halfword accesses to packed data.
>  
>  mneon-for-64bits
> -Target WarnRemoved
> +Target WarnRemoved Undocumented
>  This option is deprecated and has no effect.
>  
>  mslow-flash-data
> diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
> index aa1282f9551..e31ba4e7e5a 100644
> --- a/gcc/doc/invoke.texi
> +++ b/gcc/doc/invoke.texi
> @@ -942,27 +942,22 @@ Objective-C and Objective-C++ Dialects}.
>  -mdiv-rem  -mcode-density  -mll64  -mfpu=@var{fpu}  -mrf16  -mbranch-index}
>  
>  @emph{ARM Options} (@ref{ARM Options})
> -@gccoptlist{-mapcs-frame  -mno-apcs-frame
> +@gccoptlist{-mapcs-frame  -mapcs
>  -mabi=@var{name}
> --mapcs-stack-check  -mno-apcs-stack-check
> --mapcs-reentrant  -mno-apcs-reentrant
> --mgeneral-regs-only
> --msched-prolog  -mno-sched-prolog
> +-mgeneral-regs-only  -mno-sched-prolog
>  -mlittle-endian  -mbig-endian
>  -mbe8  -mbe32
>  -mfloat-abi=@var{name}
>  -mfp16-format=@var{name}
> --mthumb-interwork  -mno-thumb-interwork
> --mcpu=@var{name}  -march=@var{name}  -mfpu=@var{name}
> --mtune=@var{name}  -mprint-tune-info
> +-mthumb-interwork
> +-mcpu=@var{name}  -march=@var{name}  -mfpu=@var{name}  -mtune=@var{name}
>  -mstructure-size-boundary=@var{n}
> --mabort-on-noreturn
> --mlong-calls  -mno-long-calls
> --msingle-pic-base  -mno-single-pic-base
> --mpic-register=@var{reg}
> +-mabort-on-noreturn  -mlong-calls
> +-msingle-pic-base  -mpic-register=@var{reg}
> +-mpic-data-is-text-relative
>  -mnop-fun-dllimport
>  -mpoke-function-name
> --mthumb  -marm  -mflip-thumb
> +-mthumb  -marm
>  -mtpcs-frame  -mtpcs-leaf-frame
>  -mcaller-super-interworking  -mcallee-super-interworking
>  -mtp=@var{name}  -mtls-dialect=@var{dialect}
> @@ -971,15 +966,14 @@ Objective-C and Objective-C++ Dialects}.
>  -mfix-cortex-a57-aes-1742098
>  -mfix-cortex-a72-aes-1655431
>  -munaligned-access
> --mneon-for-64bits
>  -mslow-flash-data
>  -masm-syntax-unified
>  -mrestrict-it
> --mverbose-cost-dump
>  -mpure-code
>  -mcmse
>  -mfix-cmse-cve-2021-35465
> --mstack-protector-guard=@var{guard} 
> -mstack-protector-guard-offset=@var{offset}
> +-mstack-protector-guard=@var{guard}
> +-mstack-protector-guard-offset=@var{offset}
>  -mfdpic
>  -mbranch-protection=@var{features}}
>  
> @@ -24081,6 +24075,7 @@ Generate code for the specified ABI@.  Permissible 
> values are: @samp{apcs-gnu},
>  @samp{atpcs}, @samp{aapcs} and @samp{aapcs-linux}.
>  
>  @opindex mapcs-frame
> +@opindex mno-apcs-frame
>  @item -mapcs-frame
>  Generate a stack frame that is compliant with the ARM Procedure Call
>  Standard for all functions, even if this is not strictly necessary for
> @@ -24093,26 +24088,8 @@ This option is deprecated.
>  @item -mapcs
>  This is a synonym for @option{-mapcs-frame} and is deprecated.
>  
> -@ignore
> -@c not currently implemented
> -@opindex mapcs-stack-check
> -@item -mapcs-stack-check
> -Generate code to check the amount of stack space available upon entry to
> -every function (that actually uses some stack space).  If there is
> -insufficient space available then either the function
> -@code{__rt_stkovf_split_small} or @code{__rt_stkovf_split_big} is
> -called, depending upon the amount of stack space required.  The runtime
> -system is required to provide these functions.  The default is
> -@option{-mno-apcs-stack-check}, since this produces smaller code.
> -
> -@c not currently implemented
> -@opindex mapcs-reentrant
> -@item -mapcs-reentrant
> -Generate reentrant, position-independent code.  The default is
> -@option{-mno-apcs-reentrant}.
> -@end ignore
> -
>  @opindex mthumb-interwork
> +@opindex mno-thumb-interwork
>  @item -mthumb-interwork
>  Generate code that supports calling between the ARM and Thumb
>  instruction sets.  Without this option, on pre-v5 architectures, the
> @@ -24121,12 +24098,14 @@ default is @option{-mno-thumb-interwork}, since 
> slightly larger code
>  is generated when @option{-mthumb-interwork} is specified.  In AAPCS
>  configurations this option is meaningless.
>  
> -@opindex mno-sched-prolog
>  @opindex msched-prolog
> -@item -mno-sched-prolog
> -Prevent the reordering of instructions in the function prologue, or the
> +@opindex mno-sched-prolog
> +@item -msched-prolog
> +@itemx -mno-sched-prolog
> +Allow or prevent the reordering of instructions in the function prologue, or 
> the
>  merging of those instruction with the instructions in the function's
> -body.  This means that all functions start with a recognizable set
> +body.  With @option{-mno-sched-prolog},
> +this means that all functions start with a recognizable set
>  of instructions (or in fact one of a choice from a small set of
>  different function prologues), and this information can be used to
>  locate the start of functions inside an executable piece of code.  The
> @@ -24890,6 +24869,7 @@ information using structures or unions.
>  This option is deprecated.
>  
>  @opindex mabort-on-noreturn
> +@opindex mno-abort-on-noreturn
>  @item -mabort-on-noreturn
>  Generate a call to the function @code{abort} at the end of a
>  @code{noreturn} function.  It is executed if the function tries to
> @@ -24924,6 +24904,7 @@ the compiler generates code to handle function calls 
> via function
>  pointers.
>  
>  @opindex msingle-pic-base
> +@opindex mno-single-pic-base
>  @item -msingle-pic-base
>  Treat the register used for PIC addressing as read-only, rather than
>  loading it in the prologue for each function.  The runtime system is
> @@ -24939,6 +24920,7 @@ determined by compiler.  For single PIC base case, 
> the default is
>  otherwise the default is @samp{R10}.
>  
>  @opindex mpic-data-is-text-relative
> +@opindex mno-pic-data-is-text-relative
>  @item -mpic-data-is-text-relative
>  Assume that the displacement between the text and data segments is fixed
>  at static link time.  This permits using PC-relative addressing
> @@ -24948,6 +24930,7 @@ disabled on such targets, it will enable 
> @option{-msingle-pic-base} by
>  default.
>  
>  @opindex mpoke-function-name
> +@opindex mno-poke-function-name
>  @item -mpoke-function-name
>  Write the name of each function into the text section, directly
>  preceding the function prologue.  The generated code is similar to this:
> @@ -24985,25 +24968,22 @@ You can also override the ARM and Thumb mode for 
> each function
>  by using the @code{target("thumb")} and @code{target("arm")} function 
> attributes
>  (@pxref{ARM Function Attributes}) or pragmas (@pxref{Function Specific 
> Option Pragmas}).
>  
> -@opindex mflip-thumb
> -@item -mflip-thumb
> -Switch ARM/Thumb modes on alternating functions.
> -This option is provided for regression testing of mixed Thumb/ARM code
> -generation, and is not intended for ordinary use in compiling code.
> -
>  @opindex mtpcs-frame
> +@opindex mno-tpcs-frame
>  @item -mtpcs-frame
>  Generate a stack frame that is compliant with the Thumb Procedure Call
>  Standard for all non-leaf functions.  (A leaf function is one that does
>  not call any other functions.)  The default is @option{-mno-tpcs-frame}.
>  
>  @opindex mtpcs-leaf-frame
> +@opindex mno-tpcs-leaf-frame
>  @item -mtpcs-leaf-frame
>  Generate a stack frame that is compliant with the Thumb Procedure Call
>  Standard for all leaf functions.  (A leaf function is one that does
>  not call any other functions.)  The default is @option{-mno-apcs-leaf-frame}.
>  
>  @opindex mcallee-super-interworking
> +@opindex mno-callee-super-interworking
>  @item -mcallee-super-interworking
>  Gives all externally visible functions in the file being compiled an ARM
>  instruction set header which switches to Thumb mode before executing the
> @@ -25012,6 +24992,7 @@ non-interworking code.  This option is not valid in 
> AAPCS configurations
>  because interworking is enabled by default.
>  
>  @opindex mcaller-super-interworking
> +@opindex mno-caller-super-interworking
>  @item -mcaller-super-interworking
>  Allows calls via function pointers (including virtual functions) to
>  execute correctly regardless of whether the target code has been
> @@ -25045,6 +25026,7 @@ library support.  Initial and local exec TLS models 
> are unaffected by
>  this option and always use the original scheme.
>  
>  @opindex mword-relocations
> +@opindex mno-word-relocations
>  @item -mword-relocations
>  Only generate absolute relocations on word-sized values (i.e.@: R_ARM_ABS32).
>  This is enabled by default on targets (uClinux, SymbianOS) where the runtime
> @@ -25052,6 +25034,7 @@ loader imposes this restriction, and when 
> @option{-fpic} or @option{-fPIC}
>  is specified. This option conflicts with @option{-mslow-flash-data}.
>  
>  @opindex mfix-cortex-m3-ldrd
> +@opindex mno-fix-cortex-m3-ldrd
>  @item -mfix-cortex-m3-ldrd
>  Some Cortex-M3 cores can cause data corruption when @code{ldrd} instructions
>  with overlapping destination and base registers are used.  This option avoids
> @@ -25084,11 +25067,8 @@ setting of this option.  If unaligned access is 
> enabled then the
>  preprocessor symbol @code{__ARM_FEATURE_UNALIGNED} is also
>  defined.
>  
> -@opindex mneon-for-64bits
> -@item -mneon-for-64bits
> -This option is deprecated and has no effect.
> -
>  @opindex mslow-flash-data
> +@opindex mno-slow-flash-data
>  @item -mslow-flash-data
>  Assume loading data from flash is slower than fetching instruction.
>  Therefore literal load is minimized for better performance.
> @@ -25096,6 +25076,7 @@ This option is only supported when compiling for 
> ARMv7 M-profile and
>  off by default. It conflicts with @option{-mword-relocations}.
>  
>  @opindex masm-syntax-unified
> +@opindex mno-asm-syntax-unified
>  @item -masm-syntax-unified
>  Assume inline assembler is using unified asm syntax.  The default is
>  currently off which implies divided syntax.  This option has no impact
> @@ -25103,24 +25084,14 @@ on Thumb2. However, this may change in future 
> releases of GCC.
>  Divided syntax should be considered deprecated.
>  
>  @opindex mrestrict-it
> +@opindex mno-restrict-it
>  @item -mrestrict-it
>  Restricts generation of IT blocks to conform to the rules of ARMv8-A.
>  IT blocks can only contain a single 16-bit instruction from a select
>  set of instructions. This option is on by default for ARMv8-A Thumb mode.
>  
> -@opindex mprint-tune-info
> -@item -mprint-tune-info
> -Print CPU tuning information as comment in assembler file.  This is
> -an option used only for regression testing of the compiler and not
> -intended for ordinary use in compiling code.  This option is disabled
> -by default.
> -
> -@opindex mverbose-cost-dump
> -@item -mverbose-cost-dump
> -Enable verbose cost model dumping in the debug dump files.  This option is
> -provided for use in debugging the compiler.
> -
>  @opindex mpure-code
> +@opindex mno-pure-code
>  @item -mpure-code
>  Do not allow constant data to be placed in code sections.
>  Additionally, when compiling for ELF object format give all text sections the
> @@ -25134,6 +25105,7 @@ Development Tools Engineering Specification", which 
> can be found on
>  @url{https://developer.arm.com/documentation/ecm0359818/latest/}.
>  
>  @opindex mfix-cmse-cve-2021-35465
> +@opindex mno-fix-cmse-cve-2021-35465
>  @item -mfix-cmse-cve-2021-35465
>  Mitigate against a potential security issue with the @code{VLLDM} instruction
>  in some M-profile devices when using CMSE (CVE-2021-365465).  This option is

Thanks, this is fine.

R.

Reply via email to