public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH v2 0/5] A small Texinfo refinement
@ 2023-02-23 10:27 Arsen Arsenović
  2023-02-23 10:27 ` [PATCH v2 1/5] docs: Create Indices appendix Arsen Arsenović
                   ` (6 more replies)
  0 siblings, 7 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-02-23 10:27 UTC (permalink / raw)
  To: gcc-patches
  Cc: Gerald Pfeifer, Joseph Myers, Sandra Loosemore, Arsen Arsenović

Morning,

(as said in
<https://inbox.sourceware.org/gcc-patches/86ilfsemnr.fsf@aarsen.me/>)

This is a rebase + slight amendment of the previous patch series visible
at:

https://inbox.sourceware.org/gcc-patches/cover.1674777149.git.arsen@aarsen.me/

The commit "docs: Reorder @opindex to be before corresponding options"
was already applied, and so, is dropped.

To reiterate and address comments from v1:

  - OK from Iain Buclaw for the D changes:
    https://gcc.gnu.org/pipermail/gcc-patches/2023-January/610724.html
  - Thomas Schwinge noted that the commit message for 2/5 lacks context.
    This should be addressed in this revision.
    https://gcc.gnu.org/pipermail/gcc-patches/2023-February/612616.html
    His idea of automatically checking for this error pattern will be
    implemented separately, after I figure out how best to do that.  The
    code that was involved in making this patchset is too primitive to
    apply globally.

Some of the commits have been squashed into 2/5 also, as they were split
arbitrarily to avoid hitting email size constraints, but, turns out the
commits that were split weren't the problem in the first place :-).

This patchset still needs the wwwdocs change at:
https://inbox.sourceware.org/gcc-patches/20230127003224.717347-1-arsen@aarsen.me/
to add the stylesheet referenced in 5/5.

I've rerendered the updated documentation with latest development
Texinfo (as some of the changes I made for the purposes of the GCC
manual still aren't in releases) at:

  https://www.aarsen.me/~arsen/final/

... and the entire patchset can also be fetched from:

  https://git.sr.ht/~arsen/gcc texinfo_improvements

Arsen Arsenović (5):
  docs: Create Indices appendix
  **/*.texi: Reorder index entries
  doc: Add @defbuiltin family of helpers, set documentlanguage
  Update texinfo.tex, remove the @gol macro/alias
  update_web_docs_git: Update CSS reference to new manual CSS

 gcc/d/implement-d.texi                 |   66 +-
 gcc/doc/cfg.texi                       |   12 +-
 gcc/doc/cpp.texi                       |   12 +-
 gcc/doc/cppenv.texi                    |    4 +-
 gcc/doc/cppopts.texi                   |    8 +-
 gcc/doc/extend.texi                    | 2564 ++++----
 gcc/doc/gcc.texi                       |   36 +-
 gcc/doc/generic.texi                   |    2 +-
 gcc/doc/implement-c.texi               |    2 +-
 gcc/doc/include/gcc-common.texi        |   26 +-
 gcc/doc/include/texinfo.tex            | 7599 +++++++++++++++---------
 gcc/doc/install.texi                   |    6 +-
 gcc/doc/invoke.texi                    | 2854 ++++-----
 gcc/doc/md.texi                        |   25 +-
 gcc/doc/rtl.texi                       |    8 +-
 gcc/doc/sourcebuild.texi               |    4 -
 gcc/doc/tm.texi                        |    4 +-
 gcc/doc/tm.texi.in                     |    4 +-
 gcc/doc/trouble.texi                   |    8 +-
 gcc/fortran/intrinsic.texi             |  722 +--
 gcc/fortran/invoke.texi                |  284 +-
 gcc/go/gccgo.texi                      |   34 +-
 maintainer-scripts/update_web_docs_git |    2 +-
 23 files changed, 8030 insertions(+), 6256 deletions(-)

Thanks in advance, have a lovely day.
-- 
2.39.2


^ permalink raw reply	[flat|nested] 59+ messages in thread

* [PATCH v2 1/5] docs: Create Indices appendix
  2023-02-23 10:27 [PATCH v2 0/5] A small Texinfo refinement Arsen Arsenović
@ 2023-02-23 10:27 ` Arsen Arsenović
  2023-03-09  3:16   ` Sandra Loosemore
  2023-02-23 10:27 ` [PATCH v2 2/5] **/*.texi: Reorder index entries Arsen Arsenović
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-02-23 10:27 UTC (permalink / raw)
  To: gcc-patches
  Cc: Gerald Pfeifer, Joseph Myers, Sandra Loosemore, Arsen Arsenović

The GCC manual has multiple indices.  By creating an appendix which
lists them, we help makeinfo present a more accessible way for the
reader to see all the indices.

gcc/ChangeLog:

	* doc/gcc.texi: Add the Indices appendix, to make texinfo
	generate nice indices overview page.
	(@copying): Move "This file documents the use of the GNU
	compilers" into @copying.  Add quotations around cover texts.
---
 gcc/doc/gcc.texi | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi
index 7019365429d..bc7cc6e6743 100644
--- a/gcc/doc/gcc.texi
+++ b/gcc/doc/gcc.texi
@@ -40,6 +40,9 @@
 @c %**end of header
 
 @copying
+This file documents the use of the GNU compilers.
+
+@quotation
 Copyright @copyright{} 1988-2023 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
@@ -59,6 +62,7 @@ Texts being (a) (see below), and with the Back-Cover Texts being (b)
      You have freedom to copy and modify this GNU Manual, like GNU
      software.  Copies published by the Free Software Foundation raise
      funds for GNU development.
+@end quotation
 @end copying
 @ifnottex
 @dircategory Software development
@@ -71,7 +75,6 @@ Texts being (a) (see below), and with the Back-Cover Texts being (b)
 * lto-dump: (gcc) lto-dump.    @command{lto-dump}---Tool for
 dumping LTO object files.
 @end direntry
-This file documents the use of the GNU compilers.
 @sp 1
 @insertcopying
 @sp 1
@@ -159,8 +162,7 @@ object files.
 * GNU Free Documentation License:: How you can copy and share this manual.
 * Contributors::    People who have contributed to GCC.
 
-* Option Index::    Index to command line options.
-* Keyword Index::   Index of concepts and symbol names.
+* Indices::         List of indices in this manual.
 @end menu
 
 @include frontends.texi
@@ -196,19 +198,28 @@ object files.
 @c Indexes
 @c ---------------------------------------------------------------------
 
+@node Indices
+@appendix Indices
+
+@menu
+* Option Index::                Index to command line options.
+* Concept and Symbol Index::    Index of concepts and symbols names.
+@end menu
+
 @node Option Index
-@unnumbered Option Index
+@appendixsec Option Index
 
-GCC's command line options are indexed here without any initial @samp{-}
-or @samp{--}.  Where an option has both positive and negative forms
-(such as @option{-f@var{option}} and @option{-fno-@var{option}}),
-relevant entries in the manual are indexed under the most appropriate
-form; it may sometimes be useful to look up both forms.
+GCC's command line options are indexed here without any initial
+@samp{-} or @samp{--}.  Where an option has both positive and negative
+forms (such as @option{-f@var{option}} and
+@option{-fno-@var{option}}), relevant entries in the manual are
+indexed under the most appropriate form; it may sometimes be useful to
+look up both forms.
 
 @printindex op
 
-@node Keyword Index
-@unnumbered Keyword Index
+@node Concept and Symbol Index
+@appendixsec Concept and Symbol Index
 
 @printindex cp
 
-- 
2.39.2


^ permalink raw reply	[flat|nested] 59+ messages in thread

* [PATCH v2 2/5] **/*.texi: Reorder index entries
  2023-02-23 10:27 [PATCH v2 0/5] A small Texinfo refinement Arsen Arsenović
  2023-02-23 10:27 ` [PATCH v2 1/5] docs: Create Indices appendix Arsen Arsenović
@ 2023-02-23 10:27 ` Arsen Arsenović
  2023-02-23 23:50   ` Gerald Pfeifer
  2023-02-23 10:27 ` [PATCH v2 3/5] doc: Add @defbuiltin family of helpers, set documentlanguage Arsen Arsenović
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-02-23 10:27 UTC (permalink / raw)
  To: gcc-patches
  Cc: Gerald Pfeifer, Joseph Myers, Sandra Loosemore, Arsen Arsenović

This change is a generalization of r13-6292-gddf6fe375d9110.

Historically, makeinfo exhibited a bug, due to which a structure like:

  @item foo
  @cindex foo
  @cindex bar

... would be transformed into an item heading, with the first index
entry on it, followed by an item body, with the second index entry in
it.  This has often lead to index entries not linking to relevant items,
but rather, just below them.

This bug was exhibited in both Info and HTML documentation, and was most
glaringly obvious in the latter.

After a discussion with the Texinfo developers, it was decided that the
appropriate construct for this case is:

  @cindex foo
  @cindex bar
  @item foo

... which behaves correctly in newer versions, linking all the index
entries to the item itself.  This pattern also produces copiable
anchors in HTML output.

This commit fixes most indices to follow the pattern above, however,
omits relevant changes in the Ada manuals, as the algorithm described
below lead to many false positives and unwanted changes in that manual.

Much like the previous commit, this change is mostly mechanical, with a
simple script.  I have, however, gone over the patch myself also, to see
if there's anything that ought to be kept as-is.  Formatter:

  # GPL3+
  use v5.35;
  use strict;
  use warnings;

  my @lineq = ();
  my @itemq = ();
  my @indxq = ();
  my $lstin = 0;

  while (<>)
    {
      push (@lineq, $_);
      if (/^\@[a-zA-Z0-9]{1,2}index\W/)
        {
          $lstin = @lineq;
          push (@indxq, $_);
          next;
        }
      if (/^\@itemx?\W/)
        {
          $lstin = @lineq;
          push (@itemq, $_);
          next;
        }
      next if $lstin && /^\s*(\@c(omment)?\W.*)?$/;

      if (@indxq and @itemq)
        {
          print @indxq;
          print @itemq;
          print @lineq[$lstin..@lineq-1];
        }
      else
        {
          print @lineq;
        }
      @lineq = ();
      @itemq = ();
      @indxq = ();
      $lstin = 0;
    }

  if (@indxq and @itemq)
    {
      print @indxq;
      print @itemq;
      print @lineq[$lstin..@lineq-1];
    }
  else
    {
      print @lineq;
    }

  # Local Variables:
  # indent-tabs-mode: nil
  # End:

gcc/d/ChangeLog:

	* implement-d.texi: Reorder index entries around @items.

gcc/ChangeLog:

	* doc/cfg.texi: Reorder index entries around @items.
	* doc/cpp.texi: Ditto.
	* doc/cppenv.texi: Ditto.
	* doc/cppopts.texi: Ditto.
	* doc/generic.texi: Ditto.
	* doc/install.texi: Ditto.
	* doc/extend.texi: Ditto.
	* doc/invoke.texi: Ditto.
	* doc/md.texi: Ditto.
	* doc/rtl.texi: Ditto.
	* doc/tm.texi.in: Ditto.
	* doc/trouble.texi: Ditto.
	* doc/tm.texi: Regenerate.

gcc/fortran/ChangeLog:

	* invoke.texi: Reorder index entries around @items.

gcc/go/ChangeLog:

	* gccgo.texi: Reorder index entries around @items.
---
 gcc/d/implement-d.texi  |   66 +--
 gcc/doc/cfg.texi        |   12 +-
 gcc/doc/cpp.texi        |   12 +-
 gcc/doc/cppenv.texi     |    4 +-
 gcc/doc/cppopts.texi    |    8 +-
 gcc/doc/extend.texi     | 1004 +++++++++++++++++++--------------------
 gcc/doc/generic.texi    |    2 +-
 gcc/doc/install.texi    |    6 +-
 gcc/doc/invoke.texi     |  150 +++---
 gcc/doc/md.texi         |   25 +-
 gcc/doc/rtl.texi        |    8 +-
 gcc/doc/tm.texi         |    4 +-
 gcc/doc/tm.texi.in      |    4 +-
 gcc/doc/trouble.texi    |    8 +-
 gcc/fortran/invoke.texi |  204 ++++----
 gcc/go/gccgo.texi       |   34 +-
 16 files changed, 775 insertions(+), 776 deletions(-)

diff --git a/gcc/d/implement-d.texi b/gcc/d/implement-d.texi
index 6d0c1ec3661..89a17916a83 100644
--- a/gcc/d/implement-d.texi
+++ b/gcc/d/implement-d.texi
@@ -126,11 +126,11 @@ The following attributes are supported on most targets.
 
 @table @code
 
+@cindex @code{alloc_size} function attribute
+@cindex @code{alloc_size} variable attribute
 @item @@(gcc.attributes.alloc_size (@var{sizeArgIdx}))
 @itemx @@(gcc.attributes.alloc_size (@var{sizeArgIdx}, @var{numArgIdx}))
 @itemx @@(gcc.attributes.alloc_size (@var{sizeArgIdx}, @var{numArgIdx}, @var{zeroBasedNumbering}))
-@cindex @code{alloc_size} function attribute
-@cindex @code{alloc_size} variable attribute
 
 The @code{@@alloc_size} attribute may be applied to a function - or a function
 pointer variable -  that returns a pointer and takes at least one argument of
@@ -151,8 +151,8 @@ argument specifying the element count.
 void malloc_cb(@@alloc_size(1) void* function(size_t) ptr) @{ @}
 @end smallexample
 
-@item @@(gcc.attributes.always_inline)
 @cindex @code{always_inline} function attribute
+@item @@(gcc.attributes.always_inline)
 
 The @code{@@always_inline} attribute inlines the function independent of any
 restrictions that otherwise apply to inlining.  Failure to inline such a
@@ -162,8 +162,8 @@ function is diagnosed as an error.
 @@always_inline int func();
 @end smallexample
 
-@item @@(gcc.attributes.cold)
 @cindex @code{cold} function attribute
+@item @@(gcc.attributes.cold)
 
 The @code{@@cold} attribute on functions is used to inform the compiler that the
 function is unlikely to be executed.  The function is optimized for size
@@ -176,8 +176,8 @@ cold functions within code are considered to be cold too.
 @@cold int func();
 @end smallexample
 
-@item @@(gcc.attributes.flatten)
 @cindex @code{flatten} function attribute
+@item @@(gcc.attributes.flatten)
 
 The @code{@@flatten} attribute is used to inform the compiler that every call
 inside this function should be inlined, if possible.  Functions declared with
@@ -187,8 +187,8 @@ attribute @code{@@noinline} and similar are not inlined.
 @@flatten int func();
 @end smallexample
 
-@item @@(gcc.attributes.no_icf)
 @cindex @code{no_icf} function attribute
+@item @@(gcc.attributes.no_icf)
 
 The @code{@@no_icf} attribute prevents a function from being merged with
 another semantically equivalent function.
@@ -197,8 +197,8 @@ another semantically equivalent function.
 @@no_icf int func();
 @end smallexample
 
-@item @@(gcc.attributes.no_sanitize ("@var{sanitize_option}"))
 @cindex @code{no_sanitize} function attribute
+@item @@(gcc.attributes.no_sanitize ("@var{sanitize_option}"))
 
 The @code{@@no_sanitize} attribute on functions is used to inform the compiler
 that it should not do sanitization of any option mentioned in
@@ -210,8 +210,8 @@ option can be provided.
 @@no_sanitize("alignment,object-size") void func2() @{ @}
 @end smallexample
 
-@item @@(gcc.attributes.noclone)
 @cindex @code{noclone} function attribute
+@item @@(gcc.attributes.noclone)
 
 The @code{@@noclone} attribute prevents a function from being considered for
 cloning - a mechanism that produces specialized copies of functions and which
@@ -221,8 +221,8 @@ is (currently) performed by interprocedural constant propagation.
 @@noclone int func();
 @end smallexample
 
-@item @@(gcc.attributes.noinline)
 @cindex @code{noinline} function attribute
+@item @@(gcc.attributes.noinline)
 
 The @code{@@noinline} attribute prevents a function from being considered for
 inlining.  If the function does not have side effects, there are optimizations
@@ -234,8 +234,8 @@ the function call is live.  To keep such calls from being optimized away, put
 @@noinline int func();
 @end smallexample
 
-@item @@(gcc.attributes.noipa)
 @cindex @code{noipa} function attribute
+@item @@(gcc.attributes.noipa)
 
 The @code{@@noipa} attribute disables interprocedural optimizations between the
 function with this attribute and its callers, as if the body of the function is
@@ -253,8 +253,8 @@ This attribute is supported mainly for the purpose of testing the compiler.
 @@noipa int func();
 @end smallexample
 
-@item @@(gcc.attributes.noplt)
 @cindex @code{noplt} function attribute
+@item @@(gcc.attributes.noplt)
 
 The @code{@@noplt} attribute is the counterpart to option @option{-fno-plt}.
 Calls to functions marked with this attribute in position-independent code do
@@ -267,8 +267,8 @@ are marked to not use the PLT to use the GOT instead.
 @@noplt int func();
 @end smallexample
 
-@item @@(gcc.attributes.optimize (@var{arguments}))
 @cindex @code{optimize} function attribute
+@item @@(gcc.attributes.optimize (@var{arguments}))
 
 The @code{@@optimize} attribute is used to specify that a function is to be
 compiled with different optimization options than specified on the command
@@ -295,8 +295,8 @@ It is not suitable in production code.
 @@optimize("no-finite-math-only", 3) double fn7(double x);
 @end smallexample
 
-@item @@(gcc.attributes.register ("@var{registerName}"))
 @cindex @code{register} variable attribute
+@item @@(gcc.attributes.register ("@var{registerName}"))
 
 The @code{@@register} attribute specifies that a local or @code{__gshared}
 variable is to be given a register storage-class in the C99 sense of the term,
@@ -311,8 +311,8 @@ error to take the address of a register variable.
 void func() @{ @@register("r10") long r10 = 0x2a; @}
 @end smallexample
 
-@item @@(gcc.attributes.restrict)
 @cindex @code{restrict} parameter attribute
+@item @@(gcc.attributes.restrict)
 
 The @code{@@restrict} attribute specifies that a function parameter is to be
 restrict-qualified in the C99 sense of the term.  The parameter needs to boil
@@ -323,9 +323,9 @@ reference, or a @code{ref} parameter.
 void func(@@restrict ref const float[16] array);
 @end smallexample
 
-@item @@(gcc.attributes.section ("@var{sectionName}"))
 @cindex @code{section} function attribute
 @cindex @code{section} variable attribute
+@item @@(gcc.attributes.section ("@var{sectionName}"))
 
 The @code{@@section} attribute specifies that a function or variable lives in a
 particular section.  For when you need certain particular functions to appear
@@ -341,8 +341,8 @@ instead.
 @@section("stack") ubyte[10000] stack;
 @end smallexample
 
-@item @@(gcc.attributes.simd)
 @cindex @code{simd} function attribute
+@item @@(gcc.attributes.simd)
 
 The @code{@@simd} attribute enables creation of one or more function versions
 that can process multiple arguments using SIMD instructions from a single
@@ -355,8 +355,8 @@ Vector ABI document.
 @@simd double sqrt(double x);
 @end smallexample
 
-@item @@(gcc.attributes.simd_clones ("@var{mask}"))
 @cindex @code{simd_clones} function attribute
+@item @@(gcc.attributes.simd_clones ("@var{mask}"))
 
 The @code{@@simd_clones} attribute is the same as @code{@@simd}, but also
 includes a @var{mask} argument.  Valid masks values are @code{notinbranch} or
@@ -367,8 +367,8 @@ clones correspondingly.
 @@simd_clones("notinbranch") double atan2(double y, double x);
 @end smallexample
 
-@item @@(gcc.attributes.symver ("@var{arguments}"))
 @cindex @code{symver} function attribute
+@item @@(gcc.attributes.symver ("@var{arguments}"))
 
 The @code{@@symver} attribute creates a symbol version on ELF targets.
 The syntax of the string parameter is @code{"@var{name}@@@var{nodename}"}.
@@ -387,8 +387,8 @@ resolve @var{name} by the linker.
 @@symver("foo@@VERS_1") int foo_v1();
 @end smallexample
 
-@item @@(gcc.attributes.target ("@var{options}"))
 @cindex @code{target} function attribute
+@item @@(gcc.attributes.target ("@var{options}"))
 
 The @code{@@target} attribute is used to specify that a function is to be
 compiled with different target options than specified on the command line.  One
@@ -407,8 +407,8 @@ The options supported are specific to each target.
 @@target("sse3") void sse3_func();
 @end smallexample
 
-@item @@(gcc.attributes.target_clones ("@var{options}"))
 @cindex @code{target_clones} function attribute
+@item @@(gcc.attributes.target_clones ("@var{options}"))
 
 The @code{@@target_clones} attribute is used to specify that a function be
 cloned into multiple versions compiled with different target @var{options} than
@@ -423,9 +423,9 @@ a function with @code{@@target_clones} attribute.
 @@target_clones("sse4.1,avx,default") double func(double x);
 @end smallexample
 
-@item @@(gcc.attributes.used)
 @cindex @code{used} function attribute
 @cindex @code{used} variable attribute
+@item @@(gcc.attributes.used)
 
 The @code{@@used} attribute, annotated to a function or variable, means that
 code must be emitted for the function even if it appears that the function is
@@ -436,9 +436,9 @@ only in inline assembly.
 @@used __gshared int var = 0x1000;
 @end smallexample
 
-@item @@(gcc.attributes.visibility ("@var{visibilityName}"))
 @cindex @code{visibility} function attribute
 @cindex @code{visibility} variable attribute
+@item @@(gcc.attributes.visibility ("@var{visibilityName}"))
 
 The @code{@@visibility} attribute affects the linkage of the declaration to
 which it is attached.  It can be applied to variables, types, and functions.
@@ -450,9 +450,9 @@ There are four supported visibility_type values: @code{default}, @code{hidden},
 @@visibility("protected") void func() @{  @}
 @end smallexample
 
-@item @@(gcc.attributes.weak)
 @cindex @code{weak} function attribute
 @cindex @code{weak} variable attribute
+@item @@(gcc.attributes.weak)
 
 The @code{@@weak} attribute causes a declaration of an external symbol to be
 emitted as a weak symbol rather than a global.  This is primarily useful in
@@ -479,43 +479,43 @@ The following attributes are defined for compatibility with other compilers.
 
 @table @code
 
-@item @@(gcc.attributes.allocSize (@var{sizeArgIdx}))
-@itemx @@(gcc.attributes.allocSize (@var{sizeArgIdx}, @var{numArgIdx}))
-@item @@(gcc.attributes.allocSize (@var{sizeArgIdx}))
 @cindex @code{allocSize} function attribute
+@item @@(gcc.attributes.allocSize (@var{sizeArgIdx}))
+@itemx @@(gcc.attributes.allocSize (@var{sizeArgIdx}, @var{numArgIdx}))
+@item @@(gcc.attributes.allocSize (@var{sizeArgIdx}))
 
 These attributes are a synonym for
 @code{@@alloc_size(@var{sizeArgIdx}, @var{numArgIdx}, true)}.
 Unlike @code{@@alloc_size}, it uses 0-based index of the function arguments.
 
-@item @@(gcc.attributes.assumeUsed)
 @cindex @code{assumeUsed} function attribute
 @cindex @code{assumeUsed} variable attribute
+@item @@(gcc.attributes.assumeUsed)
 
 This attribute is a synonym for @code{@@used}.
 
+@cindex @code{dynamicCompile} function attribute
 @item @@(gcc.attributes.dynamicCompile)
 @itemx @@(gcc.attributes.dynamicCompileConst)
 @itemx @@(gcc.attributes.dynamicCompileEmit)
-@cindex @code{dynamicCompile} function attribute
 
 These attributes are accepted, but have no effect.
 
-@item @@(gcc.attributes.fastmath)
 @cindex @code{fastmath} function attribute
+@item @@(gcc.attributes.fastmath)
 
 This attribute is a synonym for @code{@@optimize("Ofast")}.  Explicitly sets
 "fast-math" for a function, enabling aggressive math optimizations.
 
-@item @@(gcc.attributes.hidden)
 @cindex @code{hidden} function attribute
 @cindex @code{hidden} variable attribute
+@item @@(gcc.attributes.hidden)
 
 This attribute is a synonym for @code{@@visibility("hidden")}.  Sets the
 visibility of a function or global variable to "hidden".
 
-@item @@(gcc.attributes.naked)
 @cindex @code{naked} function attribute
+@item @@(gcc.attributes.naked)
 
 This attribute is a synonym for @code{@@attribute("naked")}.  Adds GCC's
 "naked" attribute to a function, disabling function prologue / epilogue
@@ -524,14 +524,14 @@ While using extended @code{asm} or a mixture of basic @code{asm} and D code may
 appear to work, they cannot be depended upon to work reliably and are not
 supported.
 
-@item @@(gcc.attributes.noSanitize ("@var{sanitize_option}"))
 @cindex @code{noSanitize} function attribute
+@item @@(gcc.attributes.noSanitize ("@var{sanitize_option}"))
 
 This attribute is a synonym for @code{@@no_sanitize("sanitize_option")}.
 
 
-@item @@(gcc.attributes.optStrategy ("@var{strategy}"))
 @cindex @code{optStrategy} function attribute
+@item @@(gcc.attributes.optStrategy ("@var{strategy}"))
 
 This attribute is a synonym for @code{@@optimize("O0")} and
 @code{@@optimize("Os")}.  Sets the optimization strategy for a function.  Valid
diff --git a/gcc/doc/cfg.texi b/gcc/doc/cfg.texi
index fa2f5a80991..6fb9c9f48ec 100644
--- a/gcc/doc/cfg.texi
+++ b/gcc/doc/cfg.texi
@@ -269,8 +269,8 @@ These edges are used for unconditional or conditional jumps and in
 RTL also for table jumps.  They are the easiest to manipulate as they
 may be freely redirected when the flow graph is not in SSA form.
 
-@item fall-thru
 @findex EDGE_FALLTHRU, force_nonfallthru
+@item fall-thru
 Fall-thru edges are present in case where the basic block may continue
 execution to the following one without branching.  These edges have
 the @code{EDGE_FALLTHRU} flag set.  Unlike other types of edges, these
@@ -279,9 +279,9 @@ instruction stream.  The function @code{force_nonfallthru} is
 available to insert an unconditional jump in the case that redirection
 is needed.  Note that this may require creation of a new basic block.
 
-@item exception handling
 @cindex exception handling
 @findex EDGE_ABNORMAL, EDGE_EH
+@item exception handling
 Exception handling edges represent possible control transfers from a
 trapping instruction to an exception handler.  The definition of
 ``trapping'' varies.  In C++, only function calls can throw, but for
@@ -310,17 +310,17 @@ but this predicate only checks for possible memory traps, as in
 dereferencing an invalid pointer location.
 
 
-@item sibling calls
 @cindex sibling call
 @findex EDGE_ABNORMAL, EDGE_SIBCALL
+@item sibling calls
 Sibling calls or tail calls terminate the function in a non-standard
 way and thus an edge to the exit must be present.
 @code{EDGE_SIBCALL} and @code{EDGE_ABNORMAL} are set in such case.
 These edges only exist in the RTL representation.
 
-@item computed jumps
 @cindex computed jump
 @findex EDGE_ABNORMAL
+@item computed jumps
 Computed jumps contain edges to all labels in the function referenced
 from the code.  All those edges have @code{EDGE_ABNORMAL} flag set.
 The edges used to represent computed jumps often cause compile time
@@ -369,9 +369,9 @@ Be aware of that when you work on passes in that area.  There have
 been numerous examples already where the compile time for code with
 unfactored computed jumps caused some serious headaches.
 
-@item nonlocal goto handlers
 @cindex nonlocal goto handler
 @findex EDGE_ABNORMAL, EDGE_ABNORMAL_CALL
+@item nonlocal goto handlers
 GCC allows nested functions to return into caller using a @code{goto}
 to a label passed to as an argument to the callee.  The labels passed
 to nested functions contain special code to cleanup after function
@@ -380,9 +380,9 @@ receivers''.  If a function contains such nonlocal goto receivers, an
 edge from the call to the label is created with the
 @code{EDGE_ABNORMAL} and @code{EDGE_ABNORMAL_CALL} flags set.
 
-@item function entry points
 @cindex function entry point, alternate function entry point
 @findex LABEL_ALTERNATE_NAME
+@item function entry points
 By definition, execution of function starts at basic block 0, so there
 is always an edge from the @code{ENTRY_BLOCK_PTR} to basic block 0.
 There is no @code{GIMPLE} representation for alternate entry points at
diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi
index 536167445ab..b0a2ce3ac6b 100644
--- a/gcc/doc/cpp.texi
+++ b/gcc/doc/cpp.texi
@@ -292,8 +292,8 @@ roughly to the first three ``phases of translation'' described in the C
 standard.
 
 @enumerate
-@item
 @cindex line endings
+@item
 The input file is read into memory and broken into lines.
 
 Different systems use different conventions to indicate the end of a
@@ -312,8 +312,8 @@ of the file is considered to implicitly supply one.  The C standard says
 that this condition provokes undefined behavior, so GCC will emit a
 warning message.
 
-@item
 @cindex trigraphs
+@item
 @anchor{trigraphs}If trigraphs are enabled, they are replaced by their
 corresponding single characters.  By default GCC ignores trigraphs,
 but if you request a strictly conforming mode with the @option{-std}
@@ -346,9 +346,9 @@ Trigraph:       ??(  ??)  ??<  ??>  ??=  ??/  ??'  ??!  ??-
 Replacement:      [    ]    @{    @}    #    \    ^    |    ~
 @end smallexample
 
-@item
 @cindex continued lines
 @cindex backslash-newline
+@item
 Continued lines are merged into one long line.
 
 A continued line is a line which ends with a backslash, @samp{\}.  The
@@ -365,10 +365,10 @@ is still a continued line.  However, as this is usually the result of an
 editing mistake, and many compilers will not accept it as a continued
 line, GCC will warn you about it.
 
-@item
 @cindex comments
 @cindex line comments
 @cindex block comments
+@item
 All comments are replaced with single spaces.
 
 There are two kinds of comments.  @dfn{Block comments} begin with
@@ -694,8 +694,8 @@ C preprocessing directive @samp{#include}.
 Header files serve two purposes.
 
 @itemize @bullet
-@item
 @cindex system header files
+@item
 System header files declare the interfaces to parts of the operating
 system.  You include them in your program to supply the definitions and
 declarations you need to invoke system calls and libraries.
@@ -1121,8 +1121,8 @@ Header files found in directories added to the search path with the
 @option{-isystem} and @option{-idirafter} command-line options are 
 treated as system headers for the purposes of diagnostics.
 
-@item
 @findex #pragma GCC system_header
+@item
 There is also a directive, @code{@w{#pragma GCC system_header}}, which
 tells GCC to consider the rest of the current include file a system
 header, no matter where it was found.  Code that comes before the
diff --git a/gcc/doc/cppenv.texi b/gcc/doc/cppenv.texi
index 58ec4df20c7..75feaeb9141 100644
--- a/gcc/doc/cppenv.texi
+++ b/gcc/doc/cppenv.texi
@@ -44,8 +44,8 @@ See also @ref{Search Path}.
 @end ifset
 @c man begin ENVIRONMENT
 
+@cindex dependencies for make as output
 @item DEPENDENCIES_OUTPUT
-@cindex dependencies for make as output
 If this variable is set, its value specifies how to output
 dependencies for Make based on the non-system header files processed
 by the compiler.  System header files are ignored in the dependency
@@ -67,8 +67,8 @@ the options @option{-MM} and @option{-MF}
 @end ifclear
 with an optional @option{-MT} switch too.
 
+@cindex dependencies for make as output
 @item SUNPRO_DEPENDENCIES
-@cindex dependencies for make as output
 This variable is the same as @env{DEPENDENCIES_OUTPUT} (see above),
 except that system header files are not ignored, so it implies
 @option{-M} rather than @option{-MM}.  However, the dependence on the
diff --git a/gcc/doc/cppopts.texi b/gcc/doc/cppopts.texi
index 647d25239ed..872629eeb4d 100644
--- a/gcc/doc/cppopts.texi
+++ b/gcc/doc/cppopts.texi
@@ -77,9 +77,9 @@ This option is supported on GNU/Linux targets, most other Unix derivatives,
 and also on x86 Cygwin and MinGW targets.
 
 @opindex M
-@item -M
 @cindex @command{make}
 @cindex dependencies, @command{make}
+@item -M
 Instead of outputting the result of preprocessing, output a rule
 suitable for @command{make} describing the dependencies of the main
 source file.  The preprocessor outputs one @command{make} rule containing
@@ -308,15 +308,15 @@ location independent.  This option also affects
 @option{-ffile-prefix-map}.
 
 @opindex fexec-charset
-@item -fexec-charset=@var{charset}
 @cindex character set, execution
+@item -fexec-charset=@var{charset}
 Set the execution character set, used for string and character
 constants.  The default is UTF-8.  @var{charset} can be any encoding
 supported by the system's @code{iconv} library routine.
 
 @opindex fwide-exec-charset
-@item -fwide-exec-charset=@var{charset}
 @cindex character set, wide execution
+@item -fwide-exec-charset=@var{charset}
 Set the wide execution character set, used for wide string and
 character constants.  The default is one of UTF-32BE, UTF-32LE, UTF-16BE,
 or UTF-16LE, whichever corresponds to the width of @code{wchar_t} and the
@@ -326,8 +326,8 @@ by the system's @code{iconv} library routine; however, you will have
 problems with encodings that do not fit exactly in @code{wchar_t}.
 
 @opindex finput-charset
-@item -finput-charset=@var{charset}
 @cindex character set, input
+@item -finput-charset=@var{charset}
 Set the input character set, used for translation from the character
 set of the input file to the source character set used by GCC@.  If the
 locale does not specify, or GCC cannot get this information from the
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 1ae68b0f20a..0e11e43536c 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -1487,30 +1487,30 @@ to generate the right instructions to access this data without
 using (inline) assembler code, special address spaces are needed.
 
 @table @code
-@item __flash
 @cindex @code{__flash} AVR Named Address Spaces
+@item __flash
 The @code{__flash} qualifier locates data in the
 @code{.progmem.data} section. Data is read using the @code{LPM}
 instruction. Pointers to this address space are 16 bits wide.
 
-@item __flash1
-@itemx __flash2
-@itemx __flash3
-@itemx __flash4
-@itemx __flash5
 @cindex @code{__flash1} AVR Named Address Spaces
 @cindex @code{__flash2} AVR Named Address Spaces
 @cindex @code{__flash3} AVR Named Address Spaces
 @cindex @code{__flash4} AVR Named Address Spaces
 @cindex @code{__flash5} AVR Named Address Spaces
+@item __flash1
+@itemx __flash2
+@itemx __flash3
+@itemx __flash4
+@itemx __flash5
 These are 16-bit address spaces locating data in section
 @code{.progmem@var{N}.data} where @var{N} refers to
 address space @code{__flash@var{N}}.
 The compiler sets the @code{RAMPZ} segment register appropriately 
 before reading data by means of the @code{ELPM} instruction.
 
-@item __memx
 @cindex @code{__memx} AVR Named Address Spaces
+@item __memx
 This is a 24-bit address space that linearizes flash and RAM:
 If the high bit of the address is set, data is read from
 RAM using the lower two bytes as RAM address.
@@ -1664,10 +1664,10 @@ On the x86 target, variables may be declared as being relative
 to the @code{%fs} or @code{%gs} segments.
 
 @table @code
-@item __seg_fs
-@itemx __seg_gs
 @cindex @code{__seg_fs} x86 named address space
 @cindex @code{__seg_gs} x86 named address space
+@item __seg_fs
+@itemx __seg_gs
 The object is accessed with the respective segment override prefix.
 
 The respective segment base must be set via some method specific to
@@ -2658,8 +2658,8 @@ at the declaration of a function that unconditionally manipulates a buffer via
 a pointer argument.  See the @code{nonnull} attribute for more information and
 caveats.
 
-@item alias ("@var{target}")
 @cindex @code{alias} function attribute
+@item alias ("@var{target}")
 The @code{alias} attribute causes the declaration to be emitted as an alias
 for another symbol, which must have been previously declared with the same
 type, and for variables, also the same size and alignment.  Declaring an alias
@@ -2679,9 +2679,9 @@ the same translation unit.
 This attribute requires assembler and object file support,
 and may not be available on all targets.
 
-@item aligned
-@itemx aligned (@var{alignment})
 @cindex @code{aligned} function attribute
+@item aligned
+@itemx aligned (@var{alignment})
 The @code{aligned} attribute specifies a minimum alignment for
 the first instruction of the function, measured in bytes.  When specified,
 @var{alignment} must be an integer constant power of 2.  Specifying no
@@ -2709,8 +2709,8 @@ further information.
 The @code{aligned} attribute can also be used for variables and fields
 (@pxref{Variable Attributes}.)
 
-@item alloc_align (@var{position})
 @cindex @code{alloc_align} function attribute
+@item alloc_align (@var{position})
 The @code{alloc_align} attribute may be applied to a function that
 returns a pointer and takes at least one argument of an integer or
 enumerated type.
@@ -2733,9 +2733,9 @@ void* my_memalign (size_t, size_t) __attribute__ ((alloc_align (1)));
 declares that @code{my_memalign} returns memory with minimum alignment
 given by parameter 1.
 
-@item alloc_size (@var{position})
-@itemx alloc_size (@var{position-1}, @var{position-2})
 @cindex @code{alloc_size} function attribute
+@item alloc_size (@var{position})
+@itemx alloc_size (@var{position-1}, @var{position-2})
 The @code{alloc_size} attribute may be applied to a function that
 returns a pointer and takes at least one argument of an integer or
 enumerated type.
@@ -2763,8 +2763,8 @@ declares that @code{my_calloc} returns memory of the size given by
 the product of parameter 1 and 2 and that @code{my_realloc} returns memory
 of the size given by parameter 2.
 
-@item always_inline
 @cindex @code{always_inline} function attribute
+@item always_inline
 Generally, functions are not inlined unless optimization is specified.
 For functions declared inline, this attribute inlines the function
 independent of any restrictions that otherwise apply to inlining.
@@ -2773,17 +2773,17 @@ Note that if such a function is called indirectly the compiler may
 or may not inline it depending on optimization level and a failure
 to inline an indirect call may or may not be diagnosed.
 
-@item artificial
 @cindex @code{artificial} function attribute
+@item artificial
 This attribute is useful for small inline wrappers that if possible
 should appear during debugging as a unit.  Depending on the debug
 info format it either means marking the function as artificial
 or using the caller location for all instructions within the inlined
 body.
 
+@cindex @code{assume_aligned} function attribute
 @item assume_aligned (@var{alignment})
 @itemx assume_aligned (@var{alignment}, @var{offset})
-@cindex @code{assume_aligned} function attribute
 The @code{assume_aligned} attribute may be applied to a function that
 returns a pointer.  It indicates that the returned pointer is aligned
 on a boundary given by @var{alignment}.  If the attribute has two
@@ -2803,8 +2803,8 @@ declares that @code{my_alloc1} returns 16-byte aligned pointers and
 that @code{my_alloc2} returns a pointer whose value modulo 32 is equal
 to 8.
 
-@item cold
 @cindex @code{cold} function attribute
+@item cold
 The @code{cold} attribute on functions is used to inform the compiler that
 the function is unlikely to be executed.  The function is optimized for
 size rather than speed and on many targets it is placed into a special
@@ -2818,9 +2818,9 @@ of hot functions that do call marked functions in rare occasions.
 When profile feedback is available, via @option{-fprofile-use}, cold functions
 are automatically detected and this attribute is ignored.
 
-@item const
 @cindex @code{const} function attribute
 @cindex functions that have no side effects
+@item const
 Calls to functions whose return value is not affected by changes to
 the observable state of the program and that have no observable effects
 on such state other than to return a value may lend themselves to
@@ -2861,12 +2861,12 @@ from data that cannot, const functions should never take pointer or,
 in C++, reference arguments. Likewise, a function that calls a non-const
 function usually must not be const itself.
 
+@cindex @code{constructor} function attribute
+@cindex @code{destructor} function attribute
 @item constructor
 @itemx destructor
 @itemx constructor (@var{priority})
 @itemx destructor (@var{priority})
-@cindex @code{constructor} function attribute
-@cindex @code{destructor} function attribute
 The @code{constructor} attribute causes the function to be called
 automatically before execution enters @code{main ()}.  Similarly, the
 @code{destructor} attribute causes the function to be called
@@ -2894,9 +2894,9 @@ Using the argument forms of the @code{constructor} and @code{destructor}
 attributes on targets where the feature is not supported is rejected with
 an error.
 
-@item copy
-@itemx copy (@var{function})
 @cindex @code{copy} function attribute
+@item copy
+@itemx copy (@var{function})
 The @code{copy} attribute applies the set of attributes with which
 @var{function} has been declared to the declaration of the function
 to which the attribute is applied.  The attribute is designed for
@@ -2929,9 +2929,9 @@ extern __attribute__ ((alloc_size (1), malloc, nothrow))
 StrongAlias (allocate, alloc);
 @end smallexample
 
-@item deprecated
-@itemx deprecated (@var{msg})
 @cindex @code{deprecated} function attribute
+@item deprecated
+@itemx deprecated (@var{msg})
 The @code{deprecated} attribute results in a warning if the function
 is used anywhere in the source file.  This is useful when identifying
 functions that are expected to be removed in a future version of a
@@ -2957,9 +2957,9 @@ types (@pxref{Variable Attributes}, @pxref{Type Attributes}.)
 The message attached to the attribute is affected by the setting of
 the @option{-fmessage-length} option.
 
-@item unavailable
-@itemx unavailable (@var{msg})
 @cindex @code{unavailable} function attribute
+@item unavailable
+@itemx unavailable (@var{msg})
 The @code{unavailable} attribute results in an error if the function
 is used anywhere in the source file.  This is useful when identifying
 functions that have been removed from a particular variation of an
@@ -2970,10 +2970,10 @@ interface.  Other than emitting an error rather than a warning, the
 The @code{unavailable} attribute can also be used for variables and
 types (@pxref{Variable Attributes}, @pxref{Type Attributes}.)
 
-@item error ("@var{message}")
-@itemx warning ("@var{message}")
 @cindex @code{error} function attribute
 @cindex @code{warning} function attribute
+@item error ("@var{message}")
+@itemx warning ("@var{message}")
 If the @code{error} or @code{warning} attribute 
 is used on a function declaration and a call to such a function
 is not eliminated through dead code elimination or other optimizations, 
@@ -2990,8 +2990,8 @@ when using these attributes the problem is diagnosed
 earlier and with exact location of the call even in presence of inline
 functions or when not emitting debugging information.
 
-@item externally_visible
 @cindex @code{externally_visible} function attribute
+@item externally_visible
 This attribute, attached to a global variable or function, nullifies
 the effect of the @option{-fwhole-program} command-line option, so the
 object remains visible outside the current compilation unit.
@@ -3005,9 +3005,9 @@ produced by @command{gold}.
 For other linkers that cannot generate resolution file,
 explicit @code{externally_visible} attributes are still necessary.
 
+@cindex @code{fd_arg} function attribute
 @item fd_arg
 @itemx fd_arg (@var{N})
-@cindex @code{fd_arg} function attribute
 The @code{fd_arg} attribute may be applied to a function that takes an open
 file descriptor at referenced argument @var{N}.
 
@@ -3023,9 +3023,9 @@ validity before usage. Therefore, analyzer may emit
 which a function with this attribute is called with a file descriptor that has
 not been checked for validity.
 
+@cindex @code{fd_arg_read} function attribute
 @item fd_arg_read
 @itemx fd_arg_read (@var{N})
-@cindex @code{fd_arg_read} function attribute
 The @code{fd_arg_read} is identical to @code{fd_arg}, but with the additional
 requirement that it might read from the file descriptor, and thus, the file
 descriptor must not have been opened as write-only.
@@ -3034,26 +3034,26 @@ The analyzer may emit a @option{-Wanalyzer-access-mode-mismatch}
 diagnostic if it detects a code path in which a function with this
 attribute is called on a file descriptor opened with @code{O_WRONLY}.
 
+@cindex @code{fd_arg_write} function attribute
 @item fd_arg_write
 @itemx fd_arg_write (@var{N})
-@cindex @code{fd_arg_write} function attribute
 The @code{fd_arg_write} is identical to @code{fd_arg_read} except that the
 analyzer may emit a @option{-Wanalyzer-access-mode-mismatch} diagnostic if
 it detects a code path in which a function with this attribute is called on a
 file descriptor opened with @code{O_RDONLY}.
 
-@item flatten
 @cindex @code{flatten} function attribute
+@item flatten
 Generally, inlining into a function is limited.  For a function marked with
 this attribute, every call inside this function is inlined, if possible.
 Functions declared with attribute @code{noinline} and similar are not
 inlined.  Whether the function itself is considered for inlining depends
 on its size and the current inlining parameters.
 
-@item format (@var{archetype}, @var{string-index}, @var{first-to-check})
 @cindex @code{format} function attribute
 @cindex functions with @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style arguments
 @opindex Wformat
+@item format (@var{archetype}, @var{string-index}, @var{first-to-check})
 The @code{format} attribute specifies that a function takes @code{printf},
 @code{scanf}, @code{strftime} or @code{strfmon} style arguments that
 should be type-checked against a format string.  For example, the
@@ -3127,9 +3127,9 @@ The target may also provide additional types of format checks.
 @xref{Target Format Checks,,Format Checks Specific to Particular
 Target Machines}.
 
-@item format_arg (@var{string-index})
 @cindex @code{format_arg} function attribute
 @opindex Wformat-nonliteral
+@item format_arg (@var{string-index})
 The @code{format_arg} attribute specifies that a function takes one or
 more format strings for a @code{printf}, @code{scanf}, @code{strftime} or
 @code{strfmon} style function and modifies it (for example, to translate
@@ -3188,8 +3188,8 @@ The target may also allow additional types in @code{format-arg} attributes.
 @xref{Target Format Checks,,Format Checks Specific to Particular
 Target Machines}.
 
-@item gnu_inline
 @cindex @code{gnu_inline} function attribute
+@item gnu_inline
 This attribute should be used with a function that is also declared
 with the @code{inline} keyword.  It directs GCC to treat the function
 as if it were defined in gnu90 mode even when compiling in C99 or
@@ -3226,8 +3226,8 @@ In C++, this attribute does not depend on @code{extern} in any way,
 but it still requires the @code{inline} keyword to enable its special
 behavior.
 
-@item hot
 @cindex @code{hot} function attribute
+@item hot
 The @code{hot} attribute on a function is used to inform the compiler that
 the function is a hot spot of the compiled program.  The function is
 optimized more aggressively and on many targets it is placed into a special
@@ -3237,10 +3237,10 @@ improving locality.
 When profile feedback is available, via @option{-fprofile-use}, hot functions
 are automatically detected and this attribute is ignored.
 
-@item ifunc ("@var{resolver}")
 @cindex @code{ifunc} function attribute
 @cindex indirect functions
 @cindex functions that are dynamically resolved
+@item ifunc ("@var{resolver}")
 The @code{ifunc} attribute is used to mark a function as an indirect
 function using the STT_GNU_IFUNC symbol type extension to the ELF
 standard.  This allows the resolution of the symbol value to be
@@ -3337,8 +3337,8 @@ entry and exit sequences that differ from those from regular
 functions.  The exact syntax and behavior are target-specific;
 refer to the following subsections for details.
 
-@item leaf
 @cindex @code{leaf} function attribute
+@item leaf
 Calls to external functions with this attribute must return to the
 current compilation unit only by return or by exception handling.  In
 particular, a leaf function is not allowed to invoke callback functions
@@ -3374,11 +3374,11 @@ units into one, for example, by using the link-time optimization.  For
 this reason the attribute is not allowed on types to annotate indirect
 calls.
 
+@cindex @code{malloc} function attribute
+@cindex functions that behave like malloc
 @item malloc
 @item malloc (@var{deallocator})
 @item malloc (@var{deallocator}, @var{ptr-index})
-@cindex @code{malloc} function attribute
-@cindex functions that behave like malloc
 Attribute @code{malloc} indicates that a function is @code{malloc}-like,
 i.e., that the pointer @var{P} returned by the function cannot alias any
 other pointer valid when the function returns, and moreover no
@@ -3490,29 +3490,29 @@ pointer.  If this is not the case, the deallocator can be marked with
 a @option{-Wanalyzer-possible-null-argument} diagnostic for code paths
 in which the deallocator is called with NULL.
 
-@item no_icf
 @cindex @code{no_icf} function attribute
+@item no_icf
 This function attribute prevents a functions from being merged with another
 semantically equivalent function.
 
-@item no_instrument_function
 @cindex @code{no_instrument_function} function attribute
 @opindex finstrument-functions
 @opindex p
 @opindex pg
+@item no_instrument_function
 If any of @option{-finstrument-functions}, @option{-p}, or @option{-pg} are 
 given, profiling function calls are
 generated at entry and exit of most user-compiled functions.
 Functions with this attribute are not so instrumented.
 
-@item no_profile_instrument_function
 @cindex @code{no_profile_instrument_function} function attribute
+@item no_profile_instrument_function
 The @code{no_profile_instrument_function} attribute on functions is used
 to inform the compiler that it should not process any profile feedback based
 optimization code instrumentation.
 
-@item no_reorder
 @cindex @code{no_reorder} function attribute
+@item no_reorder
 Do not reorder functions or variables marked @code{no_reorder}
 against each other or top level assembler statements the executable.
 The actual order in the program will depend on the linker command
@@ -3521,8 +3521,8 @@ This has a similar effect
 as the @option{-fno-toplevel-reorder} option, but only applies to the
 marked symbols.
 
-@item no_sanitize ("@var{sanitize_option}")
 @cindex @code{no_sanitize} function attribute
+@item no_sanitize ("@var{sanitize_option}")
 The @code{no_sanitize} attribute on functions is used
 to inform the compiler that it should not do sanitization of any option
 mentioned in @var{sanitize_option}.  A list of values acceptable by
@@ -3535,9 +3535,9 @@ void __attribute__ ((no_sanitize ("alignment,object-size")))
 g () @{ /* @r{Do something.} */; @}
 @end smallexample
 
+@cindex @code{no_sanitize_address} function attribute
 @item no_sanitize_address
 @itemx no_address_safety_analysis
-@cindex @code{no_sanitize_address} function attribute
 The @code{no_sanitize_address} attribute on functions is used
 to inform the compiler that it should not instrument memory accesses
 in the function when compiling with the @option{-fsanitize=address} option.
@@ -3545,47 +3545,47 @@ The @code{no_address_safety_analysis} is a deprecated alias of the
 @code{no_sanitize_address} attribute, new code should use
 @code{no_sanitize_address}.
 
-@item no_sanitize_thread
 @cindex @code{no_sanitize_thread} function attribute
+@item no_sanitize_thread
 The @code{no_sanitize_thread} attribute on functions is used
 to inform the compiler that it should not instrument memory accesses
 in the function when compiling with the @option{-fsanitize=thread} option.
 
-@item no_sanitize_undefined
 @cindex @code{no_sanitize_undefined} function attribute
+@item no_sanitize_undefined
 The @code{no_sanitize_undefined} attribute on functions is used
 to inform the compiler that it should not check for undefined behavior
 in the function when compiling with the @option{-fsanitize=undefined} option.
 
-@item no_sanitize_coverage
 @cindex @code{no_sanitize_coverage} function attribute
+@item no_sanitize_coverage
 The @code{no_sanitize_coverage} attribute on functions is used
 to inform the compiler that it should not do coverage-guided
 fuzzing code instrumentation (@option{-fsanitize-coverage}).
 
-@item no_split_stack
 @cindex @code{no_split_stack} function attribute
 @opindex fsplit-stack
+@item no_split_stack
 If @option{-fsplit-stack} is given, functions have a small
 prologue which decides whether to split the stack.  Functions with the
 @code{no_split_stack} attribute do not have that prologue, and thus
 may run with only a small amount of stack space available.
 
-@item no_stack_limit
 @cindex @code{no_stack_limit} function attribute
+@item no_stack_limit
 This attribute locally overrides the @option{-fstack-limit-register}
 and @option{-fstack-limit-symbol} command-line options; it has the effect
 of disabling stack limit checking in the function it applies to.
 
-@item noclone
 @cindex @code{noclone} function attribute
+@item noclone
 This function attribute prevents a function from being considered for
 cloning---a mechanism that produces specialized copies of functions
 and which is (currently) performed by interprocedural constant
 propagation.
 
-@item noinline
 @cindex @code{noinline} function attribute
+@item noinline
 This function attribute prevents a function from being considered for
 inlining.
 @c Don't enumerate the optimizations by name here; we try to be
@@ -3602,8 +3602,8 @@ asm ("");
 (@pxref{Extended Asm}) in the called function, to serve as a special
 side effect.
 
-@item noipa
 @cindex @code{noipa} function attribute
+@item noipa
 Disable interprocedural optimizations between the function with this
 attribute and its callers, as if the body of the function is not available
 when optimizing callers and the callers are unavailable when optimizing
@@ -3615,10 +3615,10 @@ including those that do not have an attribute suitable for disabling
 them individually.  This attribute is supported mainly for the purpose
 of testing the compiler.
 
-@item nonnull
-@itemx nonnull (@var{arg-index}, @dots{})
 @cindex @code{nonnull} function attribute
 @cindex functions with non-null pointer arguments
+@item nonnull
+@itemx nonnull (@var{arg-index}, @dots{})
 The @code{nonnull} attribute may be applied to a function that takes at
 least one argument of a pointer type.  It indicates that the referenced
 arguments must be non-null pointers.  For instance, the declaration:
@@ -3672,8 +3672,8 @@ my_memcpy (void *dest, const void *src, size_t len)
         __attribute__((nonnull));
 @end smallexample
 
-@item noplt
 @cindex @code{noplt} function attribute
+@item noplt
 The @code{noplt} attribute is the counterpart to option @option{-fno-plt}.
 Calls to functions marked with this attribute in position-independent code
 do not use the PLT.
@@ -3702,9 +3702,9 @@ in position-independent code.
 In position-dependent code, a few targets also convert calls to
 functions that are marked to not use the PLT to use the GOT instead.
 
-@item noreturn
 @cindex @code{noreturn} function attribute
 @cindex functions that never return
+@item noreturn
 A few standard library functions, such as @code{abort} and @code{exit},
 cannot return.  GCC knows this automatically.  Some programs define
 their own functions that never return.  You can declare them
@@ -3742,17 +3742,17 @@ restored before calling the @code{noreturn} function.
 It does not make sense for a @code{noreturn} function to have a return
 type other than @code{void}.
 
-@item nothrow
 @cindex @code{nothrow} function attribute
+@item nothrow
 The @code{nothrow} attribute is used to inform the compiler that a
 function cannot throw an exception.  For example, most functions in
 the standard C library can be guaranteed not to throw an exception
 with the notable exceptions of @code{qsort} and @code{bsearch} that
 take function pointer arguments.
 
+@cindex @code{optimize} function attribute
 @item optimize (@var{level}, @dots{})
 @item optimize (@var{string}, @dots{})
-@cindex @code{optimize} function attribute
 The @code{optimize} attribute is used to specify that a function is to
 be compiled with different optimization options than specified on the
 command line.  The optimize attribute arguments of a function behave
@@ -3780,9 +3780,9 @@ specified by the attribute necessarily has an effect on the function.
 The @code{optimize} attribute should be used for debugging purposes only.
 It is not suitable in production code.
 
-@item patchable_function_entry
 @cindex @code{patchable_function_entry} function attribute
 @cindex extra NOP instructions at the function entry point
+@item patchable_function_entry
 In case the target's text segment can be made writable at run time by
 any means, padding the function entry with a number of NOPs can be
 used to provide a universal tool for instrumentation.
@@ -3801,9 +3801,9 @@ instrumentation on all functions that are part of the instrumentation
 framework with the attribute @code{patchable_function_entry (0)}
 to prevent recursion.
 
-@item pure
 @cindex @code{pure} function attribute
 @cindex functions that have no side effects
+@item pure
 
 Calls to functions that have no observable effects on the state of
 the program other than to return a value may lend themselves to optimizations
@@ -3851,8 +3851,8 @@ diagnosed.  Because a pure function cannot have any observable side
 effects it does not make sense for such a function to return @code{void}.
 Declaring such a function is diagnosed.
 
-@item returns_nonnull
 @cindex @code{returns_nonnull} function attribute
+@item returns_nonnull
 The @code{returns_nonnull} attribute specifies that the function
 return value should be a non-null pointer.  For instance, the declaration:
 
@@ -3865,9 +3865,9 @@ mymalloc (size_t len) __attribute__((returns_nonnull));
 lets the compiler optimize callers based on the knowledge
 that the return value will never be null.
 
-@item returns_twice
 @cindex @code{returns_twice} function attribute
 @cindex functions that return more than once
+@item returns_twice
 The @code{returns_twice} attribute tells the compiler that a function may
 return more than one time.  The compiler ensures that all registers
 are dead before calling such a function and emits a warning about
@@ -3876,9 +3876,9 @@ function.  Examples of such functions are @code{setjmp} and @code{vfork}.
 The @code{longjmp}-like counterpart of such function, if any, might need
 to be marked with the @code{noreturn} attribute.
 
-@item section ("@var{section-name}")
 @cindex @code{section} function attribute
 @cindex functions in arbitrary sections
+@item section ("@var{section-name}")
 Normally, the compiler places the code it generates in the @code{text} section.
 Sometimes, however, you need additional sections, or you need certain
 particular functions to appear in special sections.  The @code{section}
@@ -3897,9 +3897,9 @@ attribute is not available on all platforms.
 If you need to map the entire contents of a module to a particular
 section, consider using the facilities of the linker instead.
 
+@cindex @code{sentinel} function attribute
 @item sentinel
 @itemx sentinel (@var{position})
-@cindex @code{sentinel} function attribute
 This function attribute indicates that an argument in a call to the function
 is expected to be an explicit @code{NULL}.  The attribute is only valid on
 variadic functions.  By default, the sentinel is expected to be the last
@@ -3926,9 +3926,9 @@ a copy that redefines NULL appropriately.
 The warnings for missing or incorrect sentinels are enabled with
 @option{-Wformat}.
 
+@cindex @code{simd} function attribute
 @item simd
 @itemx simd("@var{mask}")
-@cindex @code{simd} function attribute
 This attribute enables creation of one or more function versions that
 can process multiple arguments using SIMD instructions from a
 single invocation.  Specifying this attribute allows compiler to
@@ -3947,18 +3947,18 @@ If the attribute is specified and @code{#pragma omp declare simd} is
 present on a declaration and the @option{-fopenmp} or @option{-fopenmp-simd}
 switch is specified, then the attribute is ignored.
 
-@item stack_protect
 @cindex @code{stack_protect} function attribute
+@item stack_protect
 This attribute adds stack protection code to the function if 
 flags @option{-fstack-protector}, @option{-fstack-protector-strong}
 or @option{-fstack-protector-explicit} are set.
 
-@item no_stack_protector
 @cindex @code{no_stack_protector} function attribute
+@item no_stack_protector
 This attribute prevents stack protection code for the function.
 
+@cindex @code{target} function attribute
 @item target (@var{string}, @dots{})
-@cindex @code{target} function attribute
 Multiple target back ends implement the @code{target} attribute
 to specify that a function is to
 be compiled with different target options than specified on the
@@ -4001,8 +4001,8 @@ Function Attributes}, @ref{PowerPC Function Attributes},
 @ref{Nios II Function Attributes}, and @ref{S/390 Function Attributes}
 for details.
 
-@item symver ("@var{name2}@@@var{nodename}")
 @cindex @code{symver} function attribute
+@item symver ("@var{name2}@@@var{nodename}")
 On ELF targets this attribute creates a symbol version.  The @var{name2} part
 of the parameter is the actual name of the symbol by which it will be
 externally referenced.  The @code{nodename} portion should be the name of a
@@ -4053,8 +4053,8 @@ addition to creating a symbol version (as if
 @code{"@var{name2}@@@var{nodename}"} was used) the version will be also used
 to resolve @var{name2} by the linker.
 
-@item tainted_args
 @cindex @code{tainted_args} function attribute
+@item tainted_args
 The @code{tainted_args} attribute is used to specify that a function is called
 in a way that requires sanitization of its arguments, such as a system
 call in an operating system kernel.  Such a function can be considered part
@@ -4073,8 +4073,8 @@ potentially issuing warnings guarded by
 @option{-Wanalyzer-tainted-offset},
 and @option{-Wanalyzer-tainted-size}.
 
-@item target_clones (@var{options})
 @cindex @code{target_clones} function attribute
+@item target_clones (@var{options})
 The @code{target_clones} attribute is used to specify that a function
 be cloned into multiple versions compiled with different target options
 than specified on the command line.  The supported options and restrictions
@@ -4101,14 +4101,14 @@ from a @code{target_clone} caller will not lead to copying
 If you want to enforce such behaviour,
 we recommend declaring the calling function with the @code{flatten} attribute?
 
-@item unused
 @cindex @code{unused} function attribute
+@item unused
 This attribute, attached to a function, means that the function is meant
 to be possibly unused.  GCC does not produce a warning for this
 function.
 
-@item used
 @cindex @code{used} function attribute
+@item used
 This attribute, attached to a function, means that code must be emitted
 for the function even if it appears that the function is not referenced.
 This is useful, for example, when the function is referenced only in
@@ -4118,8 +4118,8 @@ When applied to a member function of a C++ class template, the
 attribute also means that the function is instantiated if the
 class itself is instantiated.
 
-@item retain
 @cindex @code{retain} function attribute
+@item retain
 For ELF targets that support the GNU or FreeBSD OSABIs, this attribute
 will save the function from linker garbage collection.  To support
 this behavior, functions that have not been placed in specific sections
@@ -4128,8 +4128,8 @@ option), will be placed in new, unique sections.
 
 This additional functionality requires Binutils version 2.36 or later.
 
-@item visibility ("@var{visibility_type}")
 @cindex @code{visibility} function attribute
+@item visibility ("@var{visibility_type}")
 This attribute affects the linkage of the declaration to which it is attached.
 It can be applied to variables (@pxref{Common Variable Attributes}) and types
 (@pxref{Common Type Attributes}) as well as functions.
@@ -4233,8 +4233,8 @@ visibility of their template.
 If both the template and enclosing class have explicit visibility, the
 visibility from the template is used.
 
-@item warn_unused_result
 @cindex @code{warn_unused_result} function attribute
+@item warn_unused_result
 The @code{warn_unused_result} attribute causes a warning to be emitted
 if a caller of the function with this attribute does not use its
 return value.  This is useful for functions where not checking
@@ -4254,8 +4254,8 @@ int foo ()
 @noindent
 results in warning on line 5.
 
-@item weak
 @cindex @code{weak} function attribute
+@item weak
 The @code{weak} attribute causes a declaration of an external symbol
 to be emitted as a weak symbol rather than a global.  This is primarily
 useful in defining library functions that can be overridden in user code,
@@ -4265,9 +4265,9 @@ designates a variable it must also have the same size and alignment as
 the weak symbol.  Weak symbols are supported for ELF targets, and also
 for a.out targets when using the GNU assembler and linker.
 
+@cindex @code{weakref} function attribute
 @item weakref
 @itemx weakref ("@var{target}")
-@cindex @code{weakref} function attribute
 The @code{weakref} attribute marks a declaration as a weak reference.
 Without arguments, it should be accompanied by an @code{alias} attribute
 naming the target symbol.  Alternatively, @var{target} may be given as
@@ -4310,8 +4310,8 @@ performing a link with relocatable output (i.e.@: @code{ld -r}) on them.
 A declaration to which @code{weakref} is attached and that is associated
 with a named @code{target} must be @code{static}.
 
-@item zero_call_used_regs ("@var{choice}")
 @cindex @code{zero_call_used_regs} function attribute
+@item zero_call_used_regs ("@var{choice}")
 
 The @code{zero_call_used_regs} attribute causes the compiler to zero
 a subset of all call-used registers@footnote{A ``call-used'' register
@@ -4409,85 +4409,85 @@ similar command-line options (@pxref{AArch64 Options}), but on a
 per-function basis.
 
 @table @code
-@item general-regs-only
 @cindex @code{general-regs-only} function attribute, AArch64
+@item general-regs-only
 Indicates that no floating-point or Advanced SIMD registers should be
 used when generating code for this function.  If the function explicitly
 uses floating-point code, then the compiler gives an error.  This is
 the same behavior as that of the command-line option
 @option{-mgeneral-regs-only}.
 
-@item fix-cortex-a53-835769
 @cindex @code{fix-cortex-a53-835769} function attribute, AArch64
+@item fix-cortex-a53-835769
 Indicates that the workaround for the Cortex-A53 erratum 835769 should be
 applied to this function.  To explicitly disable the workaround for this
 function specify the negated form: @code{no-fix-cortex-a53-835769}.
 This corresponds to the behavior of the command line options
 @option{-mfix-cortex-a53-835769} and @option{-mno-fix-cortex-a53-835769}.
 
-@item cmodel=
 @cindex @code{cmodel=} function attribute, AArch64
+@item cmodel=
 Indicates that code should be generated for a particular code model for
 this function.  The behavior and permissible arguments are the same as
 for the command line option @option{-mcmodel=}.
 
+@cindex @code{strict-align} function attribute, AArch64
 @item strict-align
 @itemx no-strict-align
-@cindex @code{strict-align} function attribute, AArch64
 @code{strict-align} indicates that the compiler should not assume that unaligned
 memory references are handled by the system.  To allow the compiler to assume
 that aligned memory references are handled by the system, the inverse attribute
 @code{no-strict-align} can be specified.  The behavior is same as for the
 command-line option @option{-mstrict-align} and @option{-mno-strict-align}.
 
-@item omit-leaf-frame-pointer
 @cindex @code{omit-leaf-frame-pointer} function attribute, AArch64
+@item omit-leaf-frame-pointer
 Indicates that the frame pointer should be omitted for a leaf function call.
 To keep the frame pointer, the inverse attribute
 @code{no-omit-leaf-frame-pointer} can be specified.  These attributes have
 the same behavior as the command-line options @option{-momit-leaf-frame-pointer}
 and @option{-mno-omit-leaf-frame-pointer}.
 
-@item tls-dialect=
 @cindex @code{tls-dialect=} function attribute, AArch64
+@item tls-dialect=
 Specifies the TLS dialect to use for this function.  The behavior and
 permissible arguments are the same as for the command-line option
 @option{-mtls-dialect=}.
 
-@item arch=
 @cindex @code{arch=} function attribute, AArch64
+@item arch=
 Specifies the architecture version and architectural extensions to use
 for this function.  The behavior and permissible arguments are the same as
 for the @option{-march=} command-line option.
 
-@item tune=
 @cindex @code{tune=} function attribute, AArch64
+@item tune=
 Specifies the core for which to tune the performance of this function.
 The behavior and permissible arguments are the same as for the @option{-mtune=}
 command-line option.
 
-@item cpu=
 @cindex @code{cpu=} function attribute, AArch64
+@item cpu=
 Specifies the core for which to tune the performance of this function and also
 whose architectural features to use.  The behavior and valid arguments are the
 same as for the @option{-mcpu=} command-line option.
 
-@item sign-return-address
 @cindex @code{sign-return-address} function attribute, AArch64
+@item sign-return-address
 Select the function scope on which return address signing will be applied.  The
 behavior and permissible arguments are the same as for the command-line option
 @option{-msign-return-address=}.  The default value is @code{none}.  This
 attribute is deprecated.  The @code{branch-protection} attribute should
 be used instead.
 
-@item branch-protection
 @cindex @code{branch-protection} function attribute, AArch64
+@item branch-protection
 Select the function scope on which branch protection will be applied.  The
 behavior and permissible arguments are the same as for the command-line option
 @option{-mbranch-protection=}.  The default value is @code{none}.
 
-@item outline-atomics
 @cindex @code{outline-atomics} function attribute, AArch64
+@item outline-atomics
 Enable or disable calls to out-of-line helpers to implement atomic operations.
 This corresponds to the behavior of the command line options
 @option{-moutline-atomics} and @option{-mno-outline-atomics}.
@@ -4569,8 +4569,8 @@ architectural feature rules specified above.
 These function attributes are supported by the AMD GCN back end:
 
 @table @code
-@item amdgpu_hsa_kernel
 @cindex @code{amdgpu_hsa_kernel} function attribute, AMD GCN
+@item amdgpu_hsa_kernel
 This attribute indicates that the corresponding function should be compiled as
 a kernel function, that is an entry point that can be invoked from the host
 via the HSA runtime library.  By default functions are only callable only from
@@ -4659,8 +4659,8 @@ OpenACC/OpenMP).
 These function attributes are supported by the ARC back end:
 
 @table @code
-@item interrupt
 @cindex @code{interrupt} function attribute, ARC
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -4677,13 +4677,13 @@ Permissible values for this parameter are: @w{@code{ilink1}} and
 @w{@code{ilink2}} for ARCv1 architecture, and @w{@code{ilink}} and
 @w{@code{firq}} for ARCv2 architecture.
 
-@item long_call
-@itemx medium_call
-@itemx short_call
 @cindex @code{long_call} function attribute, ARC
 @cindex @code{medium_call} function attribute, ARC
 @cindex @code{short_call} function attribute, ARC
 @cindex indirect calls, ARC
+@item long_call
+@itemx medium_call
+@itemx short_call
 These attributes specify how a particular function is called.
 These attributes override the
 @option{-mlong-calls} and @option{-mmedium-calls} (@pxref{ARC Options})
@@ -4700,26 +4700,26 @@ attribute will always be close enough to be called with a conditional
 branch-and-link instruction, which has a 21-bit offset from
 the call site.
 
-@item jli_always
 @cindex @code{jli_always} function attribute, ARC
+@item jli_always
 Forces a particular function to be called using @code{jli}
 instruction.  The @code{jli} instruction makes use of a table stored
 into @code{.jlitab} section, which holds the location of the functions
 which are addressed using this instruction.
 
-@item jli_fixed
 @cindex @code{jli_fixed} function attribute, ARC
+@item jli_fixed
 Identical like the above one, but the location of the function in the
 @code{jli} table is known and given as an attribute parameter.
 
-@item secure_call
 @cindex @code{secure_call} function attribute, ARC
+@item secure_call
 This attribute allows one to mark secure-code functions that are
 callable from normal mode.  The location of the secure call function
 into the @code{sjli} table needs to be passed as argument.
 
-@item naked
 @cindex @code{naked} function attribute, ARC
+@item naked
 This attribute allows the compiler to construct the requisite function
 declaration, while allowing the body of the function to be assembly
 code.  The specified function will not have prologue/epilogue
@@ -4738,16 +4738,16 @@ These function attributes are supported for ARM targets:
 
 @table @code
 
-@item general-regs-only
 @cindex @code{general-regs-only} function attribute, ARM
+@item general-regs-only
 Indicates that no floating-point or Advanced SIMD registers should be
 used when generating code for this function.  If the function explicitly
 uses floating-point code, then the compiler gives an error.  This is
 the same behavior as that of the command-line option
 @option{-mgeneral-regs-only}.
 
-@item interrupt
 @cindex @code{interrupt} function attribute, ARM
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -4767,16 +4767,16 @@ Permissible values for this parameter are: @code{IRQ}, @code{FIQ},
 On ARMv7-M the interrupt type is ignored, and the attribute means the function
 may be called with a word-aligned stack pointer.
 
-@item isr
 @cindex @code{isr} function attribute, ARM
+@item isr
 Use this attribute on ARM to write Interrupt Service Routines. This is an
 alias to the @code{interrupt} attribute above.
 
-@item long_call
-@itemx short_call
 @cindex @code{long_call} function attribute, ARM
 @cindex @code{short_call} function attribute, ARM
 @cindex indirect calls, ARM
+@item long_call
+@itemx short_call
 These attributes specify how a particular function is called.
 These attributes override the
 @option{-mlong-calls} (@pxref{ARM Options})
@@ -4787,8 +4787,8 @@ calling sequence.   The @code{short_call} attribute always places
 the offset to the function from the call site into the @samp{BL}
 instruction directly.
 
-@item naked
 @cindex @code{naked} function attribute, ARM
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -4798,8 +4798,8 @@ prologue/epilogue sequences generated by the compiler. Only basic
 basic @code{asm} and C code may appear to work, they cannot be
 depended upon to work reliably and are not supported.
 
-@item pcs
 @cindex @code{pcs} function attribute, ARM
+@item pcs
 
 The @code{pcs} attribute can be used to control the calling convention
 used for a function on ARM.  The attribute takes an argument that specifies
@@ -4820,33 +4820,33 @@ double f2d (float) __attribute__((pcs("aapcs")));
 Variadic functions always use the @code{"aapcs"} calling convention and
 the compiler rejects attempts to specify an alternative.
 
-@item target (@var{options})
 @cindex @code{target} function attribute
+@item target (@var{options})
 As discussed in @ref{Common Function Attributes}, this attribute 
 allows specification of target-specific compilation options.
 
 On ARM, the following options are allowed:
 
 @table @samp
-@item thumb
 @cindex @code{target("thumb")} function attribute, ARM
+@item thumb
 Force code generation in the Thumb (T16/T32) ISA, depending on the
 architecture level.
 
-@item arm
 @cindex @code{target("arm")} function attribute, ARM
+@item arm
 Force code generation in the ARM (A32) ISA.
 
 Functions from different modes can be inlined in the caller's mode.
 
-@item fpu=
 @cindex @code{target("fpu=")} function attribute, ARM
+@item fpu=
 Specifies the fpu for which to tune the performance of this function.
 The behavior and permissible arguments are the same as for the @option{-mfpu=}
 command-line option.
 
-@item arch=
 @cindex @code{arch=} function attribute, ARM
+@item arch=
 Specifies the architecture version and architectural extensions to use
 for this function.  The behavior and permissible arguments are the same as
 for the @option{-march=} command-line option.
@@ -4889,8 +4889,8 @@ without modifying an existing @option{-march=} or @option{-mcpu} option.
 These function attributes are supported by the AVR back end:
 
 @table @code
-@item interrupt
 @cindex @code{interrupt} function attribute, AVR
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -4904,8 +4904,8 @@ that does not insert a @code{SEI} instruction.  If both @code{signal} and
 @code{interrupt} are specified for the same function, @code{signal}
 is silently ignored.
 
-@item naked
 @cindex @code{naked} function attribute, AVR
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -4915,8 +4915,8 @@ prologue/epilogue sequences generated by the compiler. Only basic
 basic @code{asm} and C code may appear to work, they cannot be
 depended upon to work reliably and are not supported.
 
-@item no_gccisr
 @cindex @code{no_gccisr} function attribute, AVR
+@item no_gccisr
 Do not use @code{__gcc_isr} pseudo instructions in a function with
 the @code{interrupt} or @code{signal} attribute aka. interrupt
 service routine (ISR).
@@ -4942,10 +4942,10 @@ expects (parts of) the prologue code as outlined above to be present.
 To disable @code{__gcc_isr} generation for the whole compilation unit,
 there is option @option{-mno-gas-isr-prologues}, @pxref{AVR Options}.
 
-@item OS_main
-@itemx OS_task
 @cindex @code{OS_main} function attribute, AVR
 @cindex @code{OS_task} function attribute, AVR
+@item OS_main
+@itemx OS_task
 On AVR, functions with the @code{OS_main} or @code{OS_task} attribute
 do not save/restore any call-saved register in their prologue/epilogue.
 
@@ -4970,8 +4970,8 @@ or a frame pointer whereas @code{OS_main} and @code{OS_task} do this
 as needed.
 @end itemize
 
-@item signal
 @cindex @code{signal} function attribute, AVR
+@item signal
 Use this attribute on the AVR to indicate that the specified
 function is an interrupt handler.  The compiler generates function
 entry and exit sequences suitable for use in an interrupt handler when this
@@ -4997,47 +4997,47 @@ These function attributes are supported by the Blackfin back end:
 
 @table @code
 
-@item exception_handler
 @cindex @code{exception_handler} function attribute
 @cindex exception handler functions, Blackfin
+@item exception_handler
 Use this attribute on the Blackfin to indicate that the specified function
 is an exception handler.  The compiler generates function entry and
 exit sequences suitable for use in an exception handler when this
 attribute is present.
 
-@item interrupt_handler
 @cindex @code{interrupt_handler} function attribute, Blackfin
+@item interrupt_handler
 Use this attribute to
 indicate that the specified function is an interrupt handler.  The compiler
 generates function entry and exit sequences suitable for use in an
 interrupt handler when this attribute is present.
 
-@item kspisusp
 @cindex @code{kspisusp} function attribute, Blackfin
 @cindex User stack pointer in interrupts on the Blackfin
+@item kspisusp
 When used together with @code{interrupt_handler}, @code{exception_handler}
 or @code{nmi_handler}, code is generated to load the stack pointer
 from the USP register in the function prologue.
 
-@item l1_text
 @cindex @code{l1_text} function attribute, Blackfin
+@item l1_text
 This attribute specifies a function to be placed into L1 Instruction
 SRAM@. The function is put into a specific section named @code{.l1.text}.
 With @option{-mfdpic}, function calls with a such function as the callee
 or caller uses inlined PLT.
 
-@item l2
 @cindex @code{l2} function attribute, Blackfin
+@item l2
 This attribute specifies a function to be placed into L2
 SRAM. The function is put into a specific section named
 @code{.l2.text}. With @option{-mfdpic}, callers of such functions use
 an inlined PLT.
 
-@item longcall
-@itemx shortcall
 @cindex indirect calls, Blackfin
 @cindex @code{longcall} function attribute, Blackfin
 @cindex @code{shortcall} function attribute, Blackfin
+@item longcall
+@itemx shortcall
 The @code{longcall} attribute
 indicates that the function might be far away from the call site and
 require a different (more expensive) calling sequence.  The
@@ -5045,24 +5045,24 @@ require a different (more expensive) calling sequence.  The
 enough for the shorter calling sequence to be used.  These attributes
 override the @option{-mlongcall} switch.
 
-@item nesting
 @cindex @code{nesting} function attribute, Blackfin
 @cindex Allow nesting in an interrupt handler on the Blackfin processor
+@item nesting
 Use this attribute together with @code{interrupt_handler},
 @code{exception_handler} or @code{nmi_handler} to indicate that the function
 entry code should enable nested interrupts or exceptions.
 
-@item nmi_handler
 @cindex @code{nmi_handler} function attribute, Blackfin
 @cindex NMI handler functions on the Blackfin processor
+@item nmi_handler
 Use this attribute on the Blackfin to indicate that the specified function
 is an NMI handler.  The compiler generates function entry and
 exit sequences suitable for use in an NMI handler when this
 attribute is present.
 
-@item saveall
 @cindex @code{saveall} function attribute, Blackfin
 @cindex save all registers on the Blackfin
+@item saveall
 Use this attribute to indicate that
 all registers except the stack pointer should be saved in the prologue
 regardless of whether they are used or not.
@@ -5074,8 +5074,8 @@ regardless of whether they are used or not.
 These function attributes are supported by the BPF back end:
 
 @table @code
-@item kernel_helper
 @cindex @code{kernel helper}, function attribute, BPF
+@item kernel_helper
 use this attribute to indicate the specified function declaration is a
 kernel helper.  The helper function is passed as an argument to the
 attribute.  Example:
@@ -5092,10 +5092,10 @@ int bpf_probe_read (void *dst, int size, const void *unsafe_ptr)
 These function attributes are supported by the C-SKY back end:
 
 @table @code
-@item interrupt
-@itemx isr
 @cindex @code{interrupt} function attribute, C-SKY
 @cindex @code{isr} function attribute, C-SKY
+@item interrupt
+@itemx isr
 Use these attributes to indicate that the specified function
 is an interrupt handler.
 The compiler generates function entry and exit sequences suitable for
@@ -5105,8 +5105,8 @@ Use of these options requires the @option{-mistack} command-line option
 to enable support for the necessary interrupt stack instructions.  They
 are ignored with a warning otherwise.  @xref{C-SKY Options}.
 
-@item naked
 @cindex @code{naked} function attribute, C-SKY
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -5124,22 +5124,22 @@ depended upon to work reliably and are not supported.
 These function attributes are supported by the Epiphany back end:
 
 @table @code
-@item disinterrupt
 @cindex @code{disinterrupt} function attribute, Epiphany
+@item disinterrupt
 This attribute causes the compiler to emit
 instructions to disable interrupts for the duration of the given
 function.
 
-@item forwarder_section
 @cindex @code{forwarder_section} function attribute, Epiphany
+@item forwarder_section
 This attribute modifies the behavior of an interrupt handler.
 The interrupt handler may be in external memory which cannot be
 reached by a branch instruction, so generate a local memory trampoline
 to transfer control.  The single parameter identifies the section where
 the trampoline is placed.
 
-@item interrupt
 @cindex @code{interrupt} function attribute, Epiphany
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -5179,11 +5179,11 @@ void __attribute__ ((interrupt ("dma0, dma1"),
   external_dma_handler ();
 @end smallexample
 
-@item long_call
-@itemx short_call
 @cindex @code{long_call} function attribute, Epiphany
 @cindex @code{short_call} function attribute, Epiphany
 @cindex indirect calls, Epiphany
+@item long_call
+@itemx short_call
 These attributes specify how a particular function is called.
 These attributes override the
 @option{-mlong-calls} (@pxref{Adapteva Epiphany Options})
@@ -5197,8 +5197,8 @@ command-line switch and @code{#pragma long_calls} settings.
 These function attributes are available for H8/300 targets:
 
 @table @code
-@item function_vector
 @cindex @code{function_vector} function attribute, H8/300
+@item function_vector
 Use this attribute on the H8/300, H8/300H, and H8S to indicate 
 that the specified function should be called through the function vector.
 Calling a function through the function vector reduces code size; however,
@@ -5206,16 +5206,16 @@ the function vector has a limited size (maximum 128 entries on the H8/300
 and 64 entries on the H8/300H and H8S)
 and shares space with the interrupt vector.
 
-@item interrupt_handler
 @cindex @code{interrupt_handler} function attribute, H8/300
+@item interrupt_handler
 Use this attribute on the H8/300, H8/300H, and H8S to
 indicate that the specified function is an interrupt handler.  The compiler
 generates function entry and exit sequences suitable for use in an
 interrupt handler when this attribute is present.
 
-@item saveall
 @cindex @code{saveall} function attribute, H8/300
 @cindex save all registers on the H8/300, H8/300H, and H8S
+@item saveall
 Use this attribute on the H8/300, H8/300H, and H8S to indicate that
 all registers except the stack pointer should be saved in the prologue
 regardless of whether they are used or not.
@@ -5227,16 +5227,16 @@ regardless of whether they are used or not.
 These function attributes are supported on IA-64 targets:
 
 @table @code
-@item syscall_linkage
 @cindex @code{syscall_linkage} function attribute, IA-64
+@item syscall_linkage
 This attribute is used to modify the IA-64 calling convention by marking
 all input registers as live at all function exits.  This makes it possible
 to restart a system call after an interrupt without having to save/restore
 the input registers.  This also prevents kernel data from leaking into
 application code.
 
-@item version_id
 @cindex @code{version_id} function attribute, IA-64
+@item version_id
 This IA-64 HP-UX attribute, attached to a global variable or function, renames a
 symbol to contain a version string, thus allowing for function level
 versioning.  HP-UX system header files may use function level versioning
@@ -5256,21 +5256,21 @@ Calls to @code{foo} are mapped to calls to @code{foo@{20040821@}}.
 These function attributes are supported by the M32C back end:
 
 @table @code
-@item bank_switch
 @cindex @code{bank_switch} function attribute, M32C
+@item bank_switch
 When added to an interrupt handler with the M32C port, causes the
 prologue and epilogue to use bank switching to preserve the registers
 rather than saving them on the stack.
 
-@item fast_interrupt
 @cindex @code{fast_interrupt} function attribute, M32C
+@item fast_interrupt
 Use this attribute on the M32C port to indicate that the specified
 function is a fast interrupt handler.  This is just like the
 @code{interrupt} attribute, except that @code{freit} is used to return
 instead of @code{reit}.
 
-@item function_vector
 @cindex @code{function_vector} function attribute, M16C/M32C
+@item function_vector
 On M16C/M32C targets, the @code{function_vector} attribute declares a
 special page subroutine call function. Use of this attribute reduces
 the code size by 2 bytes for each call generated to the
@@ -5305,8 +5305,8 @@ then be sure to write this declaration in both files.
 
 This attribute is ignored for R8C target.
 
-@item interrupt
 @cindex @code{interrupt} function attribute, M32C
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -5319,16 +5319,16 @@ when this attribute is present.
 These function attributes are supported by the M32R/D back end:
 
 @table @code
-@item interrupt
 @cindex @code{interrupt} function attribute, M32R/D
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
 when this attribute is present.
 
-@item model (@var{model-name})
 @cindex @code{model} function attribute, M32R/D
 @cindex function addressability on the M32R/D
+@item model (@var{model-name})
 
 On the M32R/D, use this attribute to set the addressability of an
 object, and of the code generated for a function.  The identifier
@@ -5355,17 +5355,17 @@ generates the much slower @code{seth/add3/jl} instruction sequence).
 These function attributes are supported by the m68k back end:
 
 @table @code
-@item interrupt
-@itemx interrupt_handler
 @cindex @code{interrupt} function attribute, m68k
 @cindex @code{interrupt_handler} function attribute, m68k
+@item interrupt
+@itemx interrupt_handler
 Use this attribute to
 indicate that the specified function is an interrupt handler.  The compiler
 generates function entry and exit sequences suitable for use in an
 interrupt handler when this attribute is present.  Either name may be used.
 
-@item interrupt_thread
 @cindex @code{interrupt_thread} function attribute, fido
+@item interrupt_thread
 Use this attribute on fido, a subarchitecture of the m68k, to indicate
 that the specified function is an interrupt handler that is designed
 to run as a thread.  The compiler omits generate prologue/epilogue
@@ -5379,8 +5379,8 @@ instruction.  This attribute is available only on fido.
 These function attributes are supported by the MCORE back end:
 
 @table @code
-@item naked
 @cindex @code{naked} function attribute, MCORE
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -5397,17 +5397,17 @@ depended upon to work reliably and are not supported.
 These function attributes are supported on MicroBlaze targets:
 
 @table @code
-@item save_volatiles
 @cindex @code{save_volatiles} function attribute, MicroBlaze
+@item save_volatiles
 Use this attribute to indicate that the function is
 an interrupt handler.  All volatile registers (in addition to non-volatile
 registers) are saved in the function prologue.  If the function is a leaf
 function, only volatiles used by the function are saved.  A normal function
 return is generated instead of a return from interrupt.
 
-@item break_handler
 @cindex @code{break_handler} function attribute, MicroBlaze
 @cindex break handler functions
+@item break_handler
 Use this attribute to indicate that
 the specified function is a break handler.  The compiler generates function
 entry and exit sequences suitable for use in an break handler when this
@@ -5418,10 +5418,10 @@ the @code{rtbd} instead of @code{rtsd}.
 void f () __attribute__ ((break_handler));
 @end smallexample
 
-@item interrupt_handler
-@itemx fast_interrupt 
 @cindex @code{interrupt_handler} function attribute, MicroBlaze
 @cindex @code{fast_interrupt} function attribute, MicroBlaze
+@item interrupt_handler
+@itemx fast_interrupt
 These attributes indicate that the specified function is an interrupt
 handler.  Use the @code{fast_interrupt} attribute to indicate handlers
 used in low-latency interrupt mode, and @code{interrupt_handler} for
@@ -5437,9 +5437,9 @@ The following attributes are available on Microsoft Windows and Symbian OS
 targets.
 
 @table @code
-@item dllexport
 @cindex @code{dllexport} function attribute
 @cindex @code{__declspec(dllexport)}
+@item dllexport
 On Microsoft Windows targets and Symbian OS targets the
 @code{dllexport} attribute causes the compiler to provide a global
 pointer to a pointer in a DLL, so that it can be referenced with the
@@ -5473,9 +5473,9 @@ including the symbol in the DLL's export table such as using a
 @file{.def} file with an @code{EXPORTS} section or, with GNU ld, using
 the @option{--export-all} linker flag.
 
-@item dllimport
 @cindex @code{dllimport} function attribute
 @cindex @code{__declspec(dllimport)}
+@item dllimport
 On Microsoft Windows and Symbian OS targets, the @code{dllimport}
 attribute causes the compiler to reference a function or variable via
 a global pointer to a pointer that is set up by the DLL exporting the
@@ -5534,8 +5534,8 @@ for functions by setting the @option{-mnop-fun-dllimport} flag.
 These function attributes are supported by the MIPS back end:
 
 @table @code
-@item interrupt
 @cindex @code{interrupt} function attribute, MIPS
+@item interrupt
 Use this attribute to indicate that the specified function is an interrupt
 handler.  The compiler generates function entry and exit sequences suitable
 for use in an interrupt handler when this attribute is present.
@@ -5552,20 +5552,20 @@ all interrupts from sw0 up to and including the specified interrupt vector.
 You can use the following attributes to modify the behavior
 of an interrupt handler:
 @table @code
-@item use_shadow_register_set
 @cindex @code{use_shadow_register_set} function attribute, MIPS
+@item use_shadow_register_set
 Assume that the handler uses a shadow register set, instead of
 the main general-purpose registers.  An optional argument @code{intstack} is
 supported to indicate that the shadow register set contains a valid stack
 pointer.
 
-@item keep_interrupts_masked
 @cindex @code{keep_interrupts_masked} function attribute, MIPS
+@item keep_interrupts_masked
 Keep interrupts masked for the whole function.  Without this attribute,
 GCC tries to reenable interrupts for as much of the function as it can.
 
-@item use_debug_exception_return
 @cindex @code{use_debug_exception_return} function attribute, MIPS
+@item use_debug_exception_return
 Return using the @code{deret} instruction.  Interrupt handlers that don't
 have this attribute return using @code{eret} instead.
 @end table
@@ -5589,15 +5589,15 @@ void __attribute__ ((interrupt("eic"))) v8 ();
 void __attribute__ ((interrupt("vector=hw3"))) v9 ();
 @end smallexample
 
-@item long_call
-@itemx short_call
-@itemx near
-@itemx far
 @cindex indirect calls, MIPS
 @cindex @code{long_call} function attribute, MIPS
 @cindex @code{short_call} function attribute, MIPS
 @cindex @code{near} function attribute, MIPS
 @cindex @code{far} function attribute, MIPS
+@item long_call
+@itemx short_call
+@itemx near
+@itemx far
 These attributes specify how a particular function is called on MIPS@.
 The attributes override the @option{-mlong-calls} (@pxref{MIPS Options})
 command-line switch.  The @code{long_call} and @code{far} attributes are
@@ -5608,10 +5608,10 @@ attributes are synonyms, and have the opposite
 effect; they specify that non-PIC calls should be made using the more
 efficient @code{jal} instruction.
 
-@item mips16
-@itemx nomips16
 @cindex @code{mips16} function attribute, MIPS
 @cindex @code{nomips16} function attribute, MIPS
+@item mips16
+@itemx nomips16
 
 On MIPS targets, you can use the @code{mips16} and @code{nomips16}
 function attributes to locally select or turn off MIPS16 code generation.
@@ -5627,10 +5627,10 @@ not that within individual functions.  Mixed MIPS16 and non-MIPS16 code
 may interact badly with some GCC extensions such as @code{__builtin_apply}
 (@pxref{Constructing Calls}).
 
-@item micromips, MIPS
-@itemx nomicromips, MIPS
 @cindex @code{micromips} function attribute
 @cindex @code{nomicromips} function attribute
+@item micromips, MIPS
+@itemx nomicromips, MIPS
 
 On MIPS targets, you can use the @code{micromips} and @code{nomicromips}
 function attributes to locally select or turn off microMIPS code generation.
@@ -5647,8 +5647,8 @@ not that within individual functions.  Mixed microMIPS and non-microMIPS code
 may interact badly with some GCC extensions such as @code{__builtin_apply}
 (@pxref{Constructing Calls}).
 
-@item nocompression
 @cindex @code{nocompression} function attribute, MIPS
+@item nocompression
 On MIPS targets, you can use the @code{nocompression} function attribute
 to locally turn off MIPS16 and microMIPS code generation.  This attribute
 overrides the @option{-mips16} and @option{-mmicromips} options on the
@@ -5661,8 +5661,8 @@ command line (@pxref{MIPS Options}).
 These function attributes are supported by the MSP430 back end:
 
 @table @code
-@item critical
 @cindex @code{critical} function attribute, MSP430
+@item critical
 Critical functions disable interrupts upon entry and restore the
 previous interrupt state upon exit.  Critical functions cannot also
 have the @code{naked}, @code{reentrant} or @code{interrupt} attributes.
@@ -5672,8 +5672,8 @@ The MSP430 hardware ensures that interrupts are disabled on entry to
 on exit. The @code{critical} attribute is therefore redundant on
 @code{interrupt} functions.
 
-@item interrupt
 @cindex @code{interrupt} function attribute, MSP430
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -5688,8 +5688,8 @@ match up with appropriate entries in the linker script.  By default
 the names @code{watchdog} for vector 26, @code{nmi} for vector 30 and
 @code{reset} for vector 31 are recognized.
 
-@item naked
 @cindex @code{naked} function attribute, MSP430
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -5699,26 +5699,26 @@ prologue/epilogue sequences generated by the compiler. Only basic
 basic @code{asm} and C code may appear to work, they cannot be
 depended upon to work reliably and are not supported.
 
-@item reentrant
 @cindex @code{reentrant} function attribute, MSP430
+@item reentrant
 Reentrant functions disable interrupts upon entry and enable them
 upon exit.  Reentrant functions cannot also have the @code{naked}
 or @code{critical} attributes.  They can have the @code{interrupt}
 attribute.
 
-@item wakeup
 @cindex @code{wakeup} function attribute, MSP430
+@item wakeup
 This attribute only applies to interrupt functions.  It is silently
 ignored if applied to a non-interrupt function.  A wakeup interrupt
 function will rouse the processor from any low-power state that it
 might be in when the function exits.
 
-@item lower
-@itemx upper
-@itemx either
 @cindex @code{lower} function attribute, MSP430
 @cindex @code{upper} function attribute, MSP430
 @cindex @code{either} function attribute, MSP430
+@item lower
+@itemx upper
+@itemx either
 On the MSP430 target these attributes can be used to specify whether
 the function or variable should be placed into low memory, high
 memory, or the placement should be left to the linker to decide.  The
@@ -5752,43 +5752,43 @@ easier to pack regions.
 These function attributes are supported by the NDS32 back end:
 
 @table @code
-@item exception
 @cindex @code{exception} function attribute
 @cindex exception handler functions, NDS32
+@item exception
 Use this attribute on the NDS32 target to indicate that the specified function
 is an exception handler.  The compiler will generate corresponding sections
 for use in an exception handler.
 
-@item interrupt
 @cindex @code{interrupt} function attribute, NDS32
+@item interrupt
 On NDS32 target, this attribute indicates that the specified function
 is an interrupt handler.  The compiler generates corresponding sections
 for use in an interrupt handler.  You can use the following attributes
 to modify the behavior:
 @table @code
-@item nested
 @cindex @code{nested} function attribute, NDS32
+@item nested
 This interrupt service routine is interruptible.
-@item not_nested
 @cindex @code{not_nested} function attribute, NDS32
+@item not_nested
 This interrupt service routine is not interruptible.
-@item nested_ready
 @cindex @code{nested_ready} function attribute, NDS32
+@item nested_ready
 This interrupt service routine is interruptible after @code{PSW.GIE}
 (global interrupt enable) is set.  This allows interrupt service routine to
 finish some short critical code before enabling interrupts.
-@item save_all
 @cindex @code{save_all} function attribute, NDS32
+@item save_all
 The system will help save all registers into stack before entering
 interrupt handler.
-@item partial_save
 @cindex @code{partial_save} function attribute, NDS32
+@item partial_save
 The system will help save caller registers into stack before entering
 interrupt handler.
 @end table
 
-@item naked
 @cindex @code{naked} function attribute, NDS32
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -5798,19 +5798,19 @@ prologue/epilogue sequences generated by the compiler. Only basic
 basic @code{asm} and C code may appear to work, they cannot be
 depended upon to work reliably and are not supported.
 
-@item reset
 @cindex @code{reset} function attribute, NDS32
 @cindex reset handler functions
+@item reset
 Use this attribute on the NDS32 target to indicate that the specified function
 is a reset handler.  The compiler will generate corresponding sections
 for use in a reset handler.  You can use the following attributes
 to provide extra exception handling:
 @table @code
-@item nmi
 @cindex @code{nmi} function attribute, NDS32
+@item nmi
 Provide a user-defined function to handle NMI exception.
-@item warm
 @cindex @code{warm} function attribute, NDS32
+@item warm
 Provide a user-defined function to handle warm reset exception.
 @end table
 @end table
@@ -5821,18 +5821,18 @@ Provide a user-defined function to handle warm reset exception.
 These function attributes are supported by the Nios II back end:
 
 @table @code
-@item target (@var{options})
 @cindex @code{target} function attribute
+@item target (@var{options})
 As discussed in @ref{Common Function Attributes}, this attribute 
 allows specification of target-specific compilation options.
 
 When compiling for Nios II, the following options are allowed:
 
 @table @samp
-@item custom-@var{insn}=@var{N}
-@itemx no-custom-@var{insn}
 @cindex @code{target("custom-@var{insn}=@var{N}")} function attribute, Nios II
 @cindex @code{target("no-custom-@var{insn}")} function attribute, Nios II
+@item custom-@var{insn}=@var{N}
+@itemx no-custom-@var{insn}
 Each @samp{custom-@var{insn}=@var{N}} attribute locally enables use of a
 custom instruction with encoding @var{N} when generating code that uses 
 @var{insn}.  Similarly, @samp{no-custom-@var{insn}} locally inhibits use of
@@ -5842,8 +5842,8 @@ These target attributes correspond to the
 command-line options, and support the same set of @var{insn} keywords.
 @xref{Nios II Options}, for more information.
 
-@item custom-fpu-cfg=@var{name}
 @cindex @code{target("custom-fpu-cfg=@var{name}")} function attribute, Nios II
+@item custom-fpu-cfg=@var{name}
 This attribute corresponds to the @option{-mcustom-fpu-cfg=@var{name}}
 command-line option, to select a predefined set of custom instructions
 named @var{name}.
@@ -5857,8 +5857,8 @@ named @var{name}.
 These function attributes are supported by the Nvidia PTX back end:
 
 @table @code
-@item kernel
 @cindex @code{kernel} attribute, Nvidia PTX
+@item kernel
 This attribute indicates that the corresponding function should be compiled
 as a kernel function, which can be invoked from the host via the CUDA RT 
 library.
@@ -5873,11 +5873,11 @@ Kernel functions must have @code{void} return type.
 These function attributes are supported by the PowerPC back end:
 
 @table @code
-@item longcall
-@itemx shortcall
 @cindex indirect calls, PowerPC
 @cindex @code{longcall} function attribute, PowerPC
 @cindex @code{shortcall} function attribute, PowerPC
+@item longcall
+@itemx shortcall
 The @code{longcall} attribute
 indicates that the function might be far away from the call site and
 require a different (more expensive) calling sequence.  The
@@ -5889,169 +5889,169 @@ the @code{#pragma longcall} setting.
 @xref{RS/6000 and PowerPC Options}, for more information on whether long
 calls are necessary.
 
-@item target (@var{options})
 @cindex @code{target} function attribute
+@item target (@var{options})
 As discussed in @ref{Common Function Attributes}, this attribute 
 allows specification of target-specific compilation options.
 
 On the PowerPC, the following options are allowed:
 
 @table @samp
-@item altivec
-@itemx no-altivec
 @cindex @code{target("altivec")} function attribute, PowerPC
+@item altivec
+@itemx no-altivec
 Generate code that uses (does not use) AltiVec instructions.  In
 32-bit code, you cannot enable AltiVec instructions unless
 @option{-mabi=altivec} is used on the command line.
 
+@cindex @code{target("cmpb")} function attribute, PowerPC
 @item cmpb
 @itemx no-cmpb
-@cindex @code{target("cmpb")} function attribute, PowerPC
 Generate code that uses (does not use) the compare bytes instruction
 implemented on the POWER6 processor and other processors that support
 the PowerPC V2.05 architecture.
 
+@cindex @code{target("dlmzb")} function attribute, PowerPC
 @item dlmzb
 @itemx no-dlmzb
-@cindex @code{target("dlmzb")} function attribute, PowerPC
 Generate code that uses (does not use) the string-search @samp{dlmzb}
 instruction on the IBM 405, 440, 464 and 476 processors.  This instruction is
 generated by default when targeting those processors.
 
+@cindex @code{target("fprnd")} function attribute, PowerPC
 @item fprnd
 @itemx no-fprnd
-@cindex @code{target("fprnd")} function attribute, PowerPC
 Generate code that uses (does not use) the FP round to integer
 instructions implemented on the POWER5+ processor and other processors
 that support the PowerPC V2.03 architecture.
 
-@item hard-dfp
-@itemx no-hard-dfp
 @cindex @code{target("hard-dfp")} function attribute, PowerPC
+@item hard-dfp
+@itemx no-hard-dfp
 Generate code that uses (does not use) the decimal floating-point
 instructions implemented on some POWER processors.
 
-@item isel
-@itemx no-isel
 @cindex @code{target("isel")} function attribute, PowerPC
+@item isel
+@itemx no-isel
 Generate code that uses (does not use) ISEL instruction.
 
+@cindex @code{target("mfcrf")} function attribute, PowerPC
 @item mfcrf
 @itemx no-mfcrf
-@cindex @code{target("mfcrf")} function attribute, PowerPC
 Generate code that uses (does not use) the move from condition
 register field instruction implemented on the POWER4 processor and
 other processors that support the PowerPC V2.01 architecture.
 
+@cindex @code{target("mulhw")} function attribute, PowerPC
 @item mulhw
 @itemx no-mulhw
-@cindex @code{target("mulhw")} function attribute, PowerPC
 Generate code that uses (does not use) the half-word multiply and
 multiply-accumulate instructions on the IBM 405, 440, 464 and 476 processors.
 These instructions are generated by default when targeting those
 processors.
 
+@cindex @code{target("multiple")} function attribute, PowerPC
 @item multiple
 @itemx no-multiple
-@cindex @code{target("multiple")} function attribute, PowerPC
 Generate code that uses (does not use) the load multiple word
 instructions and the store multiple word instructions.
 
+@cindex @code{target("update")} function attribute, PowerPC
 @item update
 @itemx no-update
-@cindex @code{target("update")} function attribute, PowerPC
 Generate code that uses (does not use) the load or store instructions
 that update the base register to the address of the calculated memory
 location.
 
+@cindex @code{target("popcntb")} function attribute, PowerPC
 @item popcntb
 @itemx no-popcntb
-@cindex @code{target("popcntb")} function attribute, PowerPC
 Generate code that uses (does not use) the popcount and double-precision
 FP reciprocal estimate instruction implemented on the POWER5
 processor and other processors that support the PowerPC V2.02
 architecture.
 
+@cindex @code{target("popcntd")} function attribute, PowerPC
 @item popcntd
 @itemx no-popcntd
-@cindex @code{target("popcntd")} function attribute, PowerPC
 Generate code that uses (does not use) the popcount instruction
 implemented on the POWER7 processor and other processors that support
 the PowerPC V2.06 architecture.
 
+@cindex @code{target("powerpc-gfxopt")} function attribute, PowerPC
 @item powerpc-gfxopt
 @itemx no-powerpc-gfxopt
-@cindex @code{target("powerpc-gfxopt")} function attribute, PowerPC
 Generate code that uses (does not use) the optional PowerPC
 architecture instructions in the Graphics group, including
 floating-point select.
 
+@cindex @code{target("powerpc-gpopt")} function attribute, PowerPC
 @item powerpc-gpopt
 @itemx no-powerpc-gpopt
-@cindex @code{target("powerpc-gpopt")} function attribute, PowerPC
 Generate code that uses (does not use) the optional PowerPC
 architecture instructions in the General Purpose group, including
 floating-point square root.
 
+@cindex @code{target("recip-precision")} function attribute, PowerPC
 @item recip-precision
 @itemx no-recip-precision
-@cindex @code{target("recip-precision")} function attribute, PowerPC
 Assume (do not assume) that the reciprocal estimate instructions
 provide higher-precision estimates than is mandated by the PowerPC
 ABI.
 
+@cindex @code{target("string")} function attribute, PowerPC
 @item string
 @itemx no-string
-@cindex @code{target("string")} function attribute, PowerPC
 Generate code that uses (does not use) the load string instructions
 and the store string word instructions to save multiple registers and
 do small block moves.
 
-@item vsx
-@itemx no-vsx
 @cindex @code{target("vsx")} function attribute, PowerPC
+@item vsx
+@itemx no-vsx
 Generate code that uses (does not use) vector/scalar (VSX)
 instructions, and also enable the use of built-in functions that allow
 more direct access to the VSX instruction set.  In 32-bit code, you
 cannot enable VSX or AltiVec instructions unless
 @option{-mabi=altivec} is used on the command line.
 
+@cindex @code{target("friz")} function attribute, PowerPC
 @item friz
 @itemx no-friz
-@cindex @code{target("friz")} function attribute, PowerPC
 Generate (do not generate) the @code{friz} instruction when the
 @option{-funsafe-math-optimizations} option is used to optimize
 rounding a floating-point value to 64-bit integer and back to floating
 point.  The @code{friz} instruction does not return the same value if
 the floating-point number is too large to fit in an integer.
 
+@cindex @code{target("avoid-indexed-addresses")} function attribute, PowerPC
 @item avoid-indexed-addresses
 @itemx no-avoid-indexed-addresses
-@cindex @code{target("avoid-indexed-addresses")} function attribute, PowerPC
 Generate code that tries to avoid (not avoid) the use of indexed load
 or store instructions.
 
+@cindex @code{target("paired")} function attribute, PowerPC
 @item paired
 @itemx no-paired
-@cindex @code{target("paired")} function attribute, PowerPC
 Generate code that uses (does not use) the generation of PAIRED simd
 instructions.
 
-@item longcall
-@itemx no-longcall
 @cindex @code{target("longcall")} function attribute, PowerPC
+@item longcall
+@itemx no-longcall
 Generate code that assumes (does not assume) that all calls are far
 away so that a longer more expensive calling sequence is required.
 
-@item cpu=@var{CPU}
 @cindex @code{target("cpu=@var{CPU}")} function attribute, PowerPC
+@item cpu=@var{CPU}
 Specify the architecture to generate code for when compiling the
 function.  If you select the @code{target("cpu=power7")} attribute when
 generating 32-bit code, VSX and AltiVec instructions are not generated
 unless you use the @option{-mabi=altivec} option on the command line.
 
-@item tune=@var{TUNE}
 @cindex @code{target("tune=@var{TUNE}")} function attribute, PowerPC
+@item tune=@var{TUNE}
 Specify the architecture to tune for when compiling the function.  If
 you do not specify the @code{target("tune=@var{TUNE}")} attribute and
 you do specify the @code{target("cpu=@var{CPU}")} attribute,
@@ -6070,8 +6070,8 @@ callee has a subset of the target options of the caller.
 These function attributes are supported by the RISC-V back end:
 
 @table @code
-@item naked
 @cindex @code{naked} function attribute, RISC-V
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -6081,8 +6081,8 @@ prologue/epilogue sequences generated by the compiler. Only basic
 basic @code{asm} and C code may appear to work, they cannot be
 depended upon to work reliably and are not supported.
 
-@item interrupt
 @cindex @code{interrupt} function attribute, RISC-V
+@item interrupt
 Use this attribute to indicate that the specified function is an interrupt
 handler.  The compiler generates function entry and exit sequences suitable
 for use in an interrupt handler when this attribute is present.
@@ -6105,10 +6105,10 @@ and @code{machine}.  If there is no parameter, then it defaults to
 These function attributes are supported by the RL78 back end:
 
 @table @code
-@item interrupt
-@itemx brk_interrupt
 @cindex @code{interrupt} function attribute, RL78
 @cindex @code{brk_interrupt} function attribute, RL78
+@item interrupt
+@itemx brk_interrupt
 These attributes indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -6118,8 +6118,8 @@ Use @code{brk_interrupt} instead of @code{interrupt} for
 handlers intended to be used with the @code{BRK} opcode (i.e.@: those
 that must end with @code{RETB} instead of @code{RETI}).
 
-@item naked
 @cindex @code{naked} function attribute, RL78
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -6136,15 +6136,15 @@ depended upon to work reliably and are not supported.
 These function attributes are supported by the RX back end:
 
 @table @code
-@item fast_interrupt
 @cindex @code{fast_interrupt} function attribute, RX
+@item fast_interrupt
 Use this attribute on the RX port to indicate that the specified
 function is a fast interrupt handler.  This is just like the
 @code{interrupt} attribute, except that @code{freit} is used to return
 instead of @code{reit}.
 
-@item interrupt
 @cindex @code{interrupt} function attribute, RX
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -6172,8 +6172,8 @@ void __attribute__ ((interrupt (RXD1_VECT,RXD2_VECT,"dct","$default")))
 	txd1_handler ();
 @end smallexample
 
-@item naked
 @cindex @code{naked} function attribute, RX
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -6183,8 +6183,8 @@ prologue/epilogue sequences generated by the compiler. Only basic
 basic @code{asm} and C code may appear to work, they cannot be
 depended upon to work reliably and are not supported.
 
-@item vector
 @cindex @code{vector} function attribute, RX
+@item vector
 This RX attribute is similar to the @code{interrupt} attribute, including its
 parameters, but does not make the function an interrupt-handler type
 function (i.e.@: it retains the normal C function calling ABI).  See the
@@ -6197,8 +6197,8 @@ function (i.e.@: it retains the normal C function calling ABI).  See the
 These function attributes are supported on the S/390:
 
 @table @code
-@item hotpatch (@var{halfwords-before-function-label},@var{halfwords-after-function-label})
 @cindex @code{hotpatch} function attribute, S/390
+@item hotpatch (@var{halfwords-before-function-label},@var{halfwords-after-function-label})
 
 On S/390 System z targets, you can use this function attribute to
 make GCC generate a ``hot-patching'' function prologue.  If the
@@ -6211,8 +6211,8 @@ both arguments the maximum allowed value is 1000000.
 
 If both arguments are zero, hotpatching is disabled.
 
-@item target (@var{options})
 @cindex @code{target} function attribute
+@item target (@var{options})
 As discussed in @ref{Common Function Attributes}, this attribute
 allows specification of target-specific compilation options.
 
@@ -6262,9 +6262,9 @@ does not undefine the @code{__VEC__} macro.
 These function attributes are supported on the SH family of processors:
 
 @table @code
-@item function_vector
 @cindex @code{function_vector} function attribute, SH
 @cindex calling functions through the function vector on SH2A
+@item function_vector
 On SH2A targets, this attribute declares a function to be called using the
 TBR relative addressing mode.  The argument to this attribute is the entry
 number of the same function in a vector table containing all the TBR
@@ -6281,27 +6281,27 @@ saves at least 8 bytes of code; and if other successive calls are being
 made to the same function, it saves 2 bytes of code per each of these
 calls.
 
-@item interrupt_handler
 @cindex @code{interrupt_handler} function attribute, SH
+@item interrupt_handler
 Use this attribute to
 indicate that the specified function is an interrupt handler.  The compiler
 generates function entry and exit sequences suitable for use in an
 interrupt handler when this attribute is present.
 
-@item nosave_low_regs
 @cindex @code{nosave_low_regs} function attribute, SH
+@item nosave_low_regs
 Use this attribute on SH targets to indicate that an @code{interrupt_handler}
 function should not save and restore registers R0..R7.  This can be used on SH3*
 and SH4* targets that have a second R0..R7 register bank for non-reentrant
 interrupt handlers.
 
-@item renesas
 @cindex @code{renesas} function attribute, SH
+@item renesas
 On SH targets this attribute specifies that the function or struct follows the
 Renesas ABI.
 
-@item resbank
 @cindex @code{resbank} function attribute, SH
+@item resbank
 On the SH2A target, this attribute enables the high-speed register
 saving and restoration using a register bank for @code{interrupt_handler}
 routines.  Saving to the bank is performed automatically after the CPU
@@ -6313,8 +6313,8 @@ vector table address offset are saved into a register bank.  Register
 banks are stacked in first-in last-out (FILO) sequence.  Restoration
 from the bank is executed by issuing a RESBANK instruction.
 
-@item sp_switch
 @cindex @code{sp_switch} function attribute, SH
+@item sp_switch
 Use this attribute on the SH to indicate an @code{interrupt_handler}
 function should switch to an alternate stack.  It expects a string
 argument that names a global variable holding the address of the
@@ -6326,14 +6326,14 @@ void f () __attribute__ ((interrupt_handler,
                           sp_switch ("alt_stack")));
 @end smallexample
 
-@item trap_exit
 @cindex @code{trap_exit} function attribute, SH
+@item trap_exit
 Use this attribute on the SH for an @code{interrupt_handler} to return using
 @code{trapa} instead of @code{rte}.  This attribute expects an integer
 argument specifying the trap number to be used.
 
-@item trapa_handler
 @cindex @code{trapa_handler} function attribute, SH
+@item trapa_handler
 On SH targets this function attribute is similar to @code{interrupt_handler}
 but it does not save and restore all registers.
 @end table
@@ -6350,10 +6350,10 @@ but it does not save and restore all registers.
 The V850 back end supports these function attributes:
 
 @table @code
-@item interrupt
-@itemx interrupt_handler
 @cindex @code{interrupt} function attribute, V850
 @cindex @code{interrupt_handler} function attribute, V850
+@item interrupt
+@itemx interrupt_handler
 Use these attributes to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -6366,8 +6366,8 @@ when either attribute is present.
 These function attributes are supported by the Visium back end:
 
 @table @code
-@item interrupt
 @cindex @code{interrupt} function attribute, Visium
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -6380,18 +6380,18 @@ when this attribute is present.
 These function attributes are supported by the x86 back end:
 
 @table @code
-@item cdecl
 @cindex @code{cdecl} function attribute, x86-32
 @cindex functions that pop the argument stack on x86-32
 @opindex mrtd
+@item cdecl
 On the x86-32 targets, the @code{cdecl} attribute causes the compiler to
 assume that the calling function pops off the stack space used to
 pass arguments.  This is
 useful to override the effects of the @option{-mrtd} switch.
 
-@item fastcall
 @cindex @code{fastcall} function attribute, x86-32
 @cindex functions that pop the argument stack on x86-32
+@item fastcall
 On x86-32 targets, the @code{fastcall} attribute causes the compiler to
 pass the first argument (if of integral type) in the register ECX and
 the second argument (if of integral type) in the register EDX@.  Subsequent
@@ -6399,9 +6399,9 @@ and other typed arguments are passed on the stack.  The called function
 pops the arguments off the stack.  If the number of arguments is variable all
 arguments are pushed on the stack.
 
-@item thiscall
 @cindex @code{thiscall} function attribute, x86-32
 @cindex functions that pop the argument stack on x86-32
+@item thiscall
 On x86-32 targets, the @code{thiscall} attribute causes the compiler to
 pass the first argument (if of integral type) in the register ECX.
 Subsequent and other typed arguments are passed on the stack. The called
@@ -6412,10 +6412,10 @@ The @code{thiscall} attribute is intended for C++ non-static member functions.
 As a GCC extension, this calling convention can be used for C functions
 and for static member methods.
 
-@item ms_abi
-@itemx sysv_abi
 @cindex @code{ms_abi} function attribute, x86
 @cindex @code{sysv_abi} function attribute, x86
+@item ms_abi
+@itemx sysv_abi
 
 On 32-bit and 64-bit x86 targets, you can use an ABI attribute
 to indicate which calling convention should be used for a function.  The
@@ -6428,8 +6428,8 @@ is the System V ELF ABI.
 Note, the @code{ms_abi} attribute for Microsoft Windows 64-bit targets currently
 requires the @option{-maccumulate-outgoing-args} option.
 
-@item callee_pop_aggregate_return (@var{number})
 @cindex @code{callee_pop_aggregate_return} function attribute, x86
+@item callee_pop_aggregate_return (@var{number})
 
 On x86-32 targets, you can use this attribute to control how
 aggregates are returned in memory.  If the caller is responsible for
@@ -6442,16 +6442,16 @@ stack for hidden pointer.  However, on x86-32 Microsoft Windows targets,
 the compiler assumes that the
 caller pops the stack for hidden pointer.
 
-@item ms_hook_prologue
 @cindex @code{ms_hook_prologue} function attribute, x86
+@item ms_hook_prologue
 
 On 32-bit and 64-bit x86 targets, you can use
 this function attribute to make GCC generate the ``hot-patching'' function
 prologue used in Win32 API functions in Microsoft Windows XP Service Pack 2
 and newer.
 
-@item naked
 @cindex @code{naked} function attribute, x86
+@item naked
 This attribute allows the compiler to construct the
 requisite function declaration, while allowing the body of the
 function to be assembly code. The specified function will not have
@@ -6461,9 +6461,9 @@ prologue/epilogue sequences generated by the compiler. Only basic
 basic @code{asm} and C code may appear to work, they cannot be
 depended upon to work reliably and are not supported.
 
-@item regparm (@var{number})
 @cindex @code{regparm} function attribute, x86
 @cindex functions that are passed arguments in registers on x86-32
+@item regparm (@var{number})
 On x86-32 targets, the @code{regparm} attribute causes the compiler to
 pass arguments number one to @var{number} if they are of integral type
 in registers EAX, EDX, and ECX instead of on the stack.  Functions that
@@ -6481,31 +6481,31 @@ safe since the loaders there save EAX, EDX and ECX.  (Lazy binding can be
 disabled with the linker or the loader if desired, to avoid the
 problem.)
 
-@item sseregparm
 @cindex @code{sseregparm} function attribute, x86
+@item sseregparm
 On x86-32 targets with SSE support, the @code{sseregparm} attribute
 causes the compiler to pass up to 3 floating-point arguments in
 SSE registers instead of on the stack.  Functions that take a
 variable number of arguments continue to pass all of their
 floating-point arguments on the stack.
 
-@item force_align_arg_pointer
 @cindex @code{force_align_arg_pointer} function attribute, x86
+@item force_align_arg_pointer
 On x86 targets, the @code{force_align_arg_pointer} attribute may be
 applied to individual function definitions, generating an alternate
 prologue and epilogue that realigns the run-time stack if necessary.
 This supports mixing legacy codes that run with a 4-byte aligned stack
 with modern codes that keep a 16-byte stack for SSE compatibility.
 
-@item stdcall
 @cindex @code{stdcall} function attribute, x86-32
 @cindex functions that pop the argument stack on x86-32
+@item stdcall
 On x86-32 targets, the @code{stdcall} attribute causes the compiler to
 assume that the called function pops off the stack space used to
 pass arguments, unless it takes a variable number of arguments.
 
-@item no_caller_saved_registers
 @cindex @code{no_caller_saved_registers} function attribute, x86
+@item no_caller_saved_registers
 Use this attribute to indicate that the specified function has no
 caller-saved registers. That is, all registers are callee-saved. For
 example, this attribute can be used for a function called from an
@@ -6515,8 +6515,8 @@ the EFLAGS register.  Since GCC doesn't preserve SSE, MMX nor x87
 states, the GCC option @option{-mgeneral-regs-only} should be used to
 compile functions with @code{no_caller_saved_registers} attribute.
 
-@item interrupt
 @cindex @code{interrupt} function attribute, x86
+@item interrupt
 Use this attribute to indicate that the specified function is an
 interrupt handler or an exception handler (depending on parameters passed
 to the function, explained further).  The compiler generates function
@@ -6577,544 +6577,544 @@ Exception handlers should only be used for exceptions that push an error
 code; you should use an interrupt handler in other cases.  The system
 will crash if the wrong kind of handler is used.
 
-@item target (@var{options})
 @cindex @code{target} function attribute
+@item target (@var{options})
 As discussed in @ref{Common Function Attributes}, this attribute 
 allows specification of target-specific compilation options.
 
 On the x86, the following options are allowed:
 @table @samp
+@cindex @code{target("3dnow")} function attribute, x86
 @item 3dnow
 @itemx no-3dnow
-@cindex @code{target("3dnow")} function attribute, x86
 Enable/disable the generation of the 3DNow!@: instructions.
 
+@cindex @code{target("3dnowa")} function attribute, x86
 @item 3dnowa
 @itemx no-3dnowa
-@cindex @code{target("3dnowa")} function attribute, x86
 Enable/disable the generation of the enhanced 3DNow!@: instructions.
 
+@cindex @code{target("abm")} function attribute, x86
 @item abm
 @itemx no-abm
-@cindex @code{target("abm")} function attribute, x86
 Enable/disable the generation of the advanced bit instructions.
 
+@cindex @code{target("adx")} function attribute, x86
 @item adx
 @itemx no-adx
-@cindex @code{target("adx")} function attribute, x86
 Enable/disable the generation of the ADX instructions.
 
-@item aes
-@itemx no-aes
 @cindex @code{target("aes")} function attribute, x86
+@item aes
+@itemx no-aes
 Enable/disable the generation of the AES instructions.
 
-@item avx
-@itemx no-avx
 @cindex @code{target("avx")} function attribute, x86
+@item avx
+@itemx no-avx
 Enable/disable the generation of the AVX instructions.
 
-@item avx2
-@itemx no-avx2
 @cindex @code{target("avx2")} function attribute, x86
+@item avx2
+@itemx no-avx2
 Enable/disable the generation of the AVX2 instructions.
 
-@item avx5124fmaps
-@itemx no-avx5124fmaps
 @cindex @code{target("avx5124fmaps")} function attribute, x86
+@item avx5124fmaps
+@itemx no-avx5124fmaps
 Enable/disable the generation of the AVX5124FMAPS instructions.
 
-@item avx5124vnniw
-@itemx no-avx5124vnniw
 @cindex @code{target("avx5124vnniw")} function attribute, x86
+@item avx5124vnniw
+@itemx no-avx5124vnniw
 Enable/disable the generation of the AVX5124VNNIW instructions.
 
-@item avx512bitalg
-@itemx no-avx512bitalg
 @cindex @code{target("avx512bitalg")} function attribute, x86
+@item avx512bitalg
+@itemx no-avx512bitalg
 Enable/disable the generation of the AVX512BITALG instructions.
 
-@item avx512bw
-@itemx no-avx512bw
 @cindex @code{target("avx512bw")} function attribute, x86
+@item avx512bw
+@itemx no-avx512bw
 Enable/disable the generation of the AVX512BW instructions.
 
-@item avx512cd
-@itemx no-avx512cd
 @cindex @code{target("avx512cd")} function attribute, x86
+@item avx512cd
+@itemx no-avx512cd
 Enable/disable the generation of the AVX512CD instructions.
 
-@item avx512dq
-@itemx no-avx512dq
 @cindex @code{target("avx512dq")} function attribute, x86
+@item avx512dq
+@itemx no-avx512dq
 Enable/disable the generation of the AVX512DQ instructions.
 
-@item avx512er
-@itemx no-avx512er
 @cindex @code{target("avx512er")} function attribute, x86
+@item avx512er
+@itemx no-avx512er
 Enable/disable the generation of the AVX512ER instructions.
 
-@item avx512f
-@itemx no-avx512f
 @cindex @code{target("avx512f")} function attribute, x86
+@item avx512f
+@itemx no-avx512f
 Enable/disable the generation of the AVX512F instructions.
 
-@item avx512ifma
-@itemx no-avx512ifma
 @cindex @code{target("avx512ifma")} function attribute, x86
+@item avx512ifma
+@itemx no-avx512ifma
 Enable/disable the generation of the AVX512IFMA instructions.
 
-@item avx512pf
-@itemx no-avx512pf
 @cindex @code{target("avx512pf")} function attribute, x86
+@item avx512pf
+@itemx no-avx512pf
 Enable/disable the generation of the AVX512PF instructions.
 
-@item avx512vbmi
-@itemx no-avx512vbmi
 @cindex @code{target("avx512vbmi")} function attribute, x86
+@item avx512vbmi
+@itemx no-avx512vbmi
 Enable/disable the generation of the AVX512VBMI instructions.
 
-@item avx512vbmi2
-@itemx no-avx512vbmi2
 @cindex @code{target("avx512vbmi2")} function attribute, x86
+@item avx512vbmi2
+@itemx no-avx512vbmi2
 Enable/disable the generation of the AVX512VBMI2 instructions.
 
-@item avx512vl
-@itemx no-avx512vl
 @cindex @code{target("avx512vl")} function attribute, x86
+@item avx512vl
+@itemx no-avx512vl
 Enable/disable the generation of the AVX512VL instructions.
 
-@item avx512vnni
-@itemx no-avx512vnni
 @cindex @code{target("avx512vnni")} function attribute, x86
+@item avx512vnni
+@itemx no-avx512vnni
 Enable/disable the generation of the AVX512VNNI instructions.
 
-@item avx512vpopcntdq
-@itemx no-avx512vpopcntdq
 @cindex @code{target("avx512vpopcntdq")} function attribute, x86
+@item avx512vpopcntdq
+@itemx no-avx512vpopcntdq
 Enable/disable the generation of the AVX512VPOPCNTDQ instructions.
 
-@item bmi
-@itemx no-bmi
 @cindex @code{target("bmi")} function attribute, x86
+@item bmi
+@itemx no-bmi
 Enable/disable the generation of the BMI instructions.
 
-@item bmi2
-@itemx no-bmi2
 @cindex @code{target("bmi2")} function attribute, x86
+@item bmi2
+@itemx no-bmi2
 Enable/disable the generation of the BMI2 instructions.
 
+@cindex @code{target("cldemote")} function attribute, x86
 @item cldemote
 @itemx no-cldemote
-@cindex @code{target("cldemote")} function attribute, x86
 Enable/disable the generation of the CLDEMOTE instructions.
 
+@cindex @code{target("clflushopt")} function attribute, x86
 @item clflushopt
 @itemx no-clflushopt
-@cindex @code{target("clflushopt")} function attribute, x86
 Enable/disable the generation of the CLFLUSHOPT instructions.
 
+@cindex @code{target("clwb")} function attribute, x86
 @item clwb
 @itemx no-clwb
-@cindex @code{target("clwb")} function attribute, x86
 Enable/disable the generation of the CLWB instructions.
 
+@cindex @code{target("clzero")} function attribute, x86
 @item clzero
 @itemx no-clzero
-@cindex @code{target("clzero")} function attribute, x86
 Enable/disable the generation of the CLZERO instructions.
 
+@cindex @code{target("crc32")} function attribute, x86
 @item crc32
 @itemx no-crc32
-@cindex @code{target("crc32")} function attribute, x86
 Enable/disable the generation of the CRC32 instructions.
 
+@cindex @code{target("cx16")} function attribute, x86
 @item cx16
 @itemx no-cx16
-@cindex @code{target("cx16")} function attribute, x86
 Enable/disable the generation of the CMPXCHG16B instructions.
 
-@item default
 @cindex @code{target("default")} function attribute, x86
+@item default
 @xref{Function Multiversioning}, where it is used to specify the
 default function version.
 
+@cindex @code{target("f16c")} function attribute, x86
 @item f16c
 @itemx no-f16c
-@cindex @code{target("f16c")} function attribute, x86
 Enable/disable the generation of the F16C instructions.
 
-@item fma
-@itemx no-fma
 @cindex @code{target("fma")} function attribute, x86
+@item fma
+@itemx no-fma
 Enable/disable the generation of the FMA instructions.
 
-@item fma4
-@itemx no-fma4
 @cindex @code{target("fma4")} function attribute, x86
+@item fma4
+@itemx no-fma4
 Enable/disable the generation of the FMA4 instructions.
 
+@cindex @code{target("fsgsbase")} function attribute, x86
 @item fsgsbase
 @itemx no-fsgsbase
-@cindex @code{target("fsgsbase")} function attribute, x86
 Enable/disable the generation of the FSGSBASE instructions.
 
+@cindex @code{target("fxsr")} function attribute, x86
 @item fxsr
 @itemx no-fxsr
-@cindex @code{target("fxsr")} function attribute, x86
 Enable/disable the generation of the FXSR instructions.
 
-@item gfni
-@itemx no-gfni
 @cindex @code{target("gfni")} function attribute, x86
+@item gfni
+@itemx no-gfni
 Enable/disable the generation of the GFNI instructions.
 
+@cindex @code{target("hle")} function attribute, x86
 @item hle
 @itemx no-hle
-@cindex @code{target("hle")} function attribute, x86
 Enable/disable the generation of the HLE instruction prefixes.
 
+@cindex @code{target("lwp")} function attribute, x86
 @item lwp
 @itemx no-lwp
-@cindex @code{target("lwp")} function attribute, x86
 Enable/disable the generation of the LWP instructions.
 
+@cindex @code{target("lzcnt")} function attribute, x86
 @item lzcnt
 @itemx no-lzcnt
-@cindex @code{target("lzcnt")} function attribute, x86
 Enable/disable the generation of the LZCNT instructions.
 
-@item mmx
-@itemx no-mmx
 @cindex @code{target("mmx")} function attribute, x86
+@item mmx
+@itemx no-mmx
 Enable/disable the generation of the MMX instructions.
 
+@cindex @code{target("movbe")} function attribute, x86
 @item movbe
 @itemx no-movbe
-@cindex @code{target("movbe")} function attribute, x86
 Enable/disable the generation of the MOVBE instructions.
 
+@cindex @code{target("movdir64b")} function attribute, x86
 @item movdir64b
 @itemx no-movdir64b
-@cindex @code{target("movdir64b")} function attribute, x86
 Enable/disable the generation of the MOVDIR64B instructions.
 
+@cindex @code{target("movdiri")} function attribute, x86
 @item movdiri
 @itemx no-movdiri
-@cindex @code{target("movdiri")} function attribute, x86
 Enable/disable the generation of the MOVDIRI instructions.
 
+@cindex @code{target("mwait")} function attribute, x86
 @item mwait
 @itemx no-mwait
-@cindex @code{target("mwait")} function attribute, x86
 Enable/disable the generation of the MWAIT and MONITOR instructions.
 
+@cindex @code{target("mwaitx")} function attribute, x86
 @item mwaitx
 @itemx no-mwaitx
-@cindex @code{target("mwaitx")} function attribute, x86
 Enable/disable the generation of the MWAITX instructions.
 
-@item pclmul
-@itemx no-pclmul
 @cindex @code{target("pclmul")} function attribute, x86
+@item pclmul
+@itemx no-pclmul
 Enable/disable the generation of the PCLMUL instructions.
 
+@cindex @code{target("pconfig")} function attribute, x86
 @item pconfig
 @itemx no-pconfig
-@cindex @code{target("pconfig")} function attribute, x86
 Enable/disable the generation of the PCONFIG instructions.
 
+@cindex @code{target("pku")} function attribute, x86
 @item pku
 @itemx no-pku
-@cindex @code{target("pku")} function attribute, x86
 Enable/disable the generation of the PKU instructions.
 
-@item popcnt
-@itemx no-popcnt
 @cindex @code{target("popcnt")} function attribute, x86
+@item popcnt
+@itemx no-popcnt
 Enable/disable the generation of the POPCNT instruction.
 
+@cindex @code{target("prefetchwt1")} function attribute, x86
 @item prefetchwt1
 @itemx no-prefetchwt1
-@cindex @code{target("prefetchwt1")} function attribute, x86
 Enable/disable the generation of the PREFETCHWT1 instructions.
 
+@cindex @code{target("prfchw")} function attribute, x86
 @item prfchw
 @itemx no-prfchw
-@cindex @code{target("prfchw")} function attribute, x86
 Enable/disable the generation of the PREFETCHW instruction.
 
+@cindex @code{target("ptwrite")} function attribute, x86
 @item ptwrite
 @itemx no-ptwrite
-@cindex @code{target("ptwrite")} function attribute, x86
 Enable/disable the generation of the PTWRITE instructions.
 
+@cindex @code{target("rdpid")} function attribute, x86
 @item rdpid
 @itemx no-rdpid
-@cindex @code{target("rdpid")} function attribute, x86
 Enable/disable the generation of the RDPID instructions.
 
+@cindex @code{target("rdrnd")} function attribute, x86
 @item rdrnd
 @itemx no-rdrnd
-@cindex @code{target("rdrnd")} function attribute, x86
 Enable/disable the generation of the RDRND instructions.
 
+@cindex @code{target("rdseed")} function attribute, x86
 @item rdseed
 @itemx no-rdseed
-@cindex @code{target("rdseed")} function attribute, x86
 Enable/disable the generation of the RDSEED instructions.
 
+@cindex @code{target("rtm")} function attribute, x86
 @item rtm
 @itemx no-rtm
-@cindex @code{target("rtm")} function attribute, x86
 Enable/disable the generation of the RTM instructions.
 
+@cindex @code{target("sahf")} function attribute, x86
 @item sahf
 @itemx no-sahf
-@cindex @code{target("sahf")} function attribute, x86
 Enable/disable the generation of the SAHF instructions.
 
+@cindex @code{target("sgx")} function attribute, x86
 @item sgx
 @itemx no-sgx
-@cindex @code{target("sgx")} function attribute, x86
 Enable/disable the generation of the SGX instructions.
 
+@cindex @code{target("sha")} function attribute, x86
 @item sha
 @itemx no-sha
-@cindex @code{target("sha")} function attribute, x86
 Enable/disable the generation of the SHA instructions.
 
+@cindex @code{target("shstk")} function attribute, x86
 @item shstk
 @itemx no-shstk
-@cindex @code{target("shstk")} function attribute, x86
 Enable/disable the shadow stack built-in functions from CET.
 
-@item sse
-@itemx no-sse
 @cindex @code{target("sse")} function attribute, x86
+@item sse
+@itemx no-sse
 Enable/disable the generation of the SSE instructions.
 
-@item sse2
-@itemx no-sse2
 @cindex @code{target("sse2")} function attribute, x86
+@item sse2
+@itemx no-sse2
 Enable/disable the generation of the SSE2 instructions.
 
-@item sse3
-@itemx no-sse3
 @cindex @code{target("sse3")} function attribute, x86
+@item sse3
+@itemx no-sse3
 Enable/disable the generation of the SSE3 instructions.
 
+@cindex @code{target("sse4")} function attribute, x86
 @item sse4
 @itemx no-sse4
-@cindex @code{target("sse4")} function attribute, x86
 Enable/disable the generation of the SSE4 instructions (both SSE4.1
 and SSE4.2).
 
-@item sse4.1
-@itemx no-sse4.1
 @cindex @code{target("sse4.1")} function attribute, x86
+@item sse4.1
+@itemx no-sse4.1
 Enable/disable the generation of the SSE4.1 instructions.
 
-@item sse4.2
-@itemx no-sse4.2
 @cindex @code{target("sse4.2")} function attribute, x86
+@item sse4.2
+@itemx no-sse4.2
 Enable/disable the generation of the SSE4.2 instructions.
 
-@item sse4a
-@itemx no-sse4a
 @cindex @code{target("sse4a")} function attribute, x86
+@item sse4a
+@itemx no-sse4a
 Enable/disable the generation of the SSE4A instructions.
 
-@item ssse3
-@itemx no-ssse3
 @cindex @code{target("ssse3")} function attribute, x86
+@item ssse3
+@itemx no-ssse3
 Enable/disable the generation of the SSSE3 instructions.
 
+@cindex @code{target("tbm")} function attribute, x86
 @item tbm
 @itemx no-tbm
-@cindex @code{target("tbm")} function attribute, x86
 Enable/disable the generation of the TBM instructions.
 
+@cindex @code{target("vaes")} function attribute, x86
 @item vaes
 @itemx no-vaes
-@cindex @code{target("vaes")} function attribute, x86
 Enable/disable the generation of the VAES instructions.
 
-@item vpclmulqdq
-@itemx no-vpclmulqdq
 @cindex @code{target("vpclmulqdq")} function attribute, x86
+@item vpclmulqdq
+@itemx no-vpclmulqdq
 Enable/disable the generation of the VPCLMULQDQ instructions.
 
+@cindex @code{target("waitpkg")} function attribute, x86
 @item waitpkg
 @itemx no-waitpkg
-@cindex @code{target("waitpkg")} function attribute, x86
 Enable/disable the generation of the WAITPKG instructions.
 
+@cindex @code{target("wbnoinvd")} function attribute, x86
 @item wbnoinvd
 @itemx no-wbnoinvd
-@cindex @code{target("wbnoinvd")} function attribute, x86
 Enable/disable the generation of the WBNOINVD instructions.
 
-@item xop
-@itemx no-xop
 @cindex @code{target("xop")} function attribute, x86
+@item xop
+@itemx no-xop
 Enable/disable the generation of the XOP instructions.
 
+@cindex @code{target("xsave")} function attribute, x86
 @item xsave
 @itemx no-xsave
-@cindex @code{target("xsave")} function attribute, x86
 Enable/disable the generation of the XSAVE instructions.
 
+@cindex @code{target("xsavec")} function attribute, x86
 @item xsavec
 @itemx no-xsavec
-@cindex @code{target("xsavec")} function attribute, x86
 Enable/disable the generation of the XSAVEC instructions.
 
+@cindex @code{target("xsaveopt")} function attribute, x86
 @item xsaveopt
 @itemx no-xsaveopt
-@cindex @code{target("xsaveopt")} function attribute, x86
 Enable/disable the generation of the XSAVEOPT instructions.
 
+@cindex @code{target("xsaves")} function attribute, x86
 @item xsaves
 @itemx no-xsaves
-@cindex @code{target("xsaves")} function attribute, x86
 Enable/disable the generation of the XSAVES instructions.
 
+@cindex @code{target("amx-tile")} function attribute, x86
 @item amx-tile
 @itemx no-amx-tile
-@cindex @code{target("amx-tile")} function attribute, x86
 Enable/disable the generation of the AMX-TILE instructions.
 
+@cindex @code{target("amx-int8")} function attribute, x86
 @item amx-int8
 @itemx no-amx-int8
-@cindex @code{target("amx-int8")} function attribute, x86
 Enable/disable the generation of the AMX-INT8 instructions.
 
+@cindex @code{target("amx-bf16")} function attribute, x86
 @item amx-bf16
 @itemx no-amx-bf16
-@cindex @code{target("amx-bf16")} function attribute, x86
 Enable/disable the generation of the AMX-BF16 instructions.
 
+@cindex @code{target("uintr")} function attribute, x86
 @item uintr
 @itemx no-uintr
-@cindex @code{target("uintr")} function attribute, x86
 Enable/disable the generation of the UINTR instructions.
 
+@cindex @code{target("hreset")} function attribute, x86
 @item hreset
 @itemx no-hreset
-@cindex @code{target("hreset")} function attribute, x86
 Enable/disable the generation of the HRESET instruction.
 
+@cindex @code{target("kl")} function attribute, x86
 @item kl
 @itemx no-kl
-@cindex @code{target("kl")} function attribute, x86
 Enable/disable the generation of the KEYLOCKER instructions.
 
+@cindex @code{target("widekl")} function attribute, x86
 @item widekl
 @itemx no-widekl
-@cindex @code{target("widekl")} function attribute, x86
 Enable/disable the generation of the WIDEKL instructions.
 
+@cindex @code{target("avxvnni")} function attribute, x86
 @item avxvnni
 @itemx no-avxvnni
-@cindex @code{target("avxvnni")} function attribute, x86
 Enable/disable the generation of the AVXVNNI instructions.
 
+@cindex @code{target("avxifma")} function attribute, x86
 @item avxifma
 @itemx no-avxifma
-@cindex @code{target("avxifma")} function attribute, x86
 Enable/disable the generation of the AVXIFMA instructions.
 
+@cindex @code{target("avxvnniint8")} function attribute, x86
 @item avxvnniint8
 @itemx no-avxvnniint8
-@cindex @code{target("avxvnniint8")} function attribute, x86
 Enable/disable the generation of the AVXVNNIINT8 instructions.
 
+@cindex @code{target("avxneconvert")} function attribute, x86
 @item avxneconvert
 @itemx no-avxneconvert
-@cindex @code{target("avxneconvert")} function attribute, x86
 Enable/disable the generation of the AVXNECONVERT instructions.
 
+@cindex @code{target("cmpccxadd")} function attribute, x86
 @item cmpccxadd
 @itemx no-cmpccxadd
-@cindex @code{target("cmpccxadd")} function attribute, x86
 Enable/disable the generation of the CMPccXADD instructions.
 
+@cindex @code{target("amx-fp16")} function attribute, x86
 @item amx-fp16
 @itemx no-amx-fp16
-@cindex @code{target("amx-fp16")} function attribute, x86
 Enable/disable the generation of the AMX-FP16 instructions.
 
+@cindex @code{target("prefetchi")} function attribute, x86
 @item prefetchi
 @itemx no-prefetchi
-@cindex @code{target("prefetchi")} function attribute, x86
 Enable/disable the generation of the PREFETCHI instructions.
 
+@cindex @code{target("raoint")} function attribute, x86
 @item raoint
 @itemx no-raoint
-@cindex @code{target("raoint")} function attribute, x86
 Enable/disable the generation of the RAOINT instructions.
 
+@cindex @code{target("cld")} function attribute, x86
 @item cld
 @itemx no-cld
-@cindex @code{target("cld")} function attribute, x86
 Enable/disable the generation of the CLD before string moves.
 
+@cindex @code{target("fancy-math-387")} function attribute, x86
 @item fancy-math-387
 @itemx no-fancy-math-387
-@cindex @code{target("fancy-math-387")} function attribute, x86
 Enable/disable the generation of the @code{sin}, @code{cos}, and
 @code{sqrt} instructions on the 387 floating-point unit.
 
+@cindex @code{target("ieee-fp")} function attribute, x86
 @item ieee-fp
 @itemx no-ieee-fp
-@cindex @code{target("ieee-fp")} function attribute, x86
 Enable/disable the generation of floating point that depends on IEEE arithmetic.
 
+@cindex @code{target("inline-all-stringops")} function attribute, x86
 @item inline-all-stringops
 @itemx no-inline-all-stringops
-@cindex @code{target("inline-all-stringops")} function attribute, x86
 Enable/disable inlining of string operations.
 
+@cindex @code{target("inline-stringops-dynamically")} function attribute, x86
 @item inline-stringops-dynamically
 @itemx no-inline-stringops-dynamically
-@cindex @code{target("inline-stringops-dynamically")} function attribute, x86
 Enable/disable the generation of the inline code to do small string
 operations and calling the library routines for large operations.
 
+@cindex @code{target("align-stringops")} function attribute, x86
 @item align-stringops
 @itemx no-align-stringops
-@cindex @code{target("align-stringops")} function attribute, x86
 Do/do not align destination of inlined string operations.
 
+@cindex @code{target("recip")} function attribute, x86
 @item recip
 @itemx no-recip
-@cindex @code{target("recip")} function attribute, x86
 Enable/disable the generation of RCPSS, RCPPS, RSQRTSS and RSQRTPS
 instructions followed an additional Newton-Raphson step instead of
 doing a floating-point division.
 
-@item general-regs-only
 @cindex @code{target("general-regs-only")} function attribute, x86
+@item general-regs-only
 Generate code which uses only the general registers.
 
-@item arch=@var{ARCH}
 @cindex @code{target("arch=@var{ARCH}")} function attribute, x86
+@item arch=@var{ARCH}
 Specify the architecture to generate code for in compiling the function.
 
-@item tune=@var{TUNE}
 @cindex @code{target("tune=@var{TUNE}")} function attribute, x86
+@item tune=@var{TUNE}
 Specify the architecture to tune for in compiling the function.
 
-@item fpmath=@var{FPMATH}
 @cindex @code{target("fpmath=@var{FPMATH}")} function attribute, x86
+@item fpmath=@var{FPMATH}
 Specify which floating-point unit to use.  You must specify the
 @code{target("fpmath=sse,387")} option as
 @code{target("fpmath=sse+387")} because the comma would separate
 different options.
 
-@item prefer-vector-width=@var{OPT}
 @cindex @code{prefer-vector-width} function attribute, x86
+@item prefer-vector-width=@var{OPT}
 On x86 targets, the @code{prefer-vector-width} attribute informs the
 compiler to use @var{OPT}-bit vector width in instructions
 instead of the default on the selected platform.
@@ -7142,8 +7142,8 @@ a function declared with @code{target("sse3")} can inline a function
 with @code{target("sse2")}, since @code{-msse3} implies @code{-msse2}.
 @end table
 
-@item indirect_branch("@var{choice}")
 @cindex @code{indirect_branch} function attribute, x86
+@item indirect_branch("@var{choice}")
 On x86 targets, the @code{indirect_branch} attribute causes the compiler
 to convert indirect call and jump with @var{choice}.  @samp{keep}
 keeps indirect call and jump unmodified.  @samp{thunk} converts indirect
@@ -7152,8 +7152,8 @@ indirect call and jump to inlined call and return thunk.
 @samp{thunk-extern} converts indirect call and jump to external call
 and return thunk provided in a separate object file.
 
-@item function_return("@var{choice}")
 @cindex @code{function_return} function attribute, x86
+@item function_return("@var{choice}")
 On x86 targets, the @code{function_return} attribute causes the compiler
 to convert function return with @var{choice}.  @samp{keep} keeps function
 return unmodified.  @samp{thunk} converts function return to call and
@@ -7161,8 +7161,8 @@ return thunk.  @samp{thunk-inline} converts function return to inlined
 call and return thunk.  @samp{thunk-extern} converts function return to
 external call and return thunk provided in a separate object file.
 
-@item nocf_check
 @cindex @code{nocf_check} function attribute
+@item nocf_check
 The @code{nocf_check} attribute on a function is used to inform the
 compiler that the function's prologue should not be instrumented when
 compiled with the @option{-fcf-protection=branch} option.  The
@@ -7218,36 +7218,36 @@ foo (void)
 @}
 @end smallexample
 
-@item cf_check
 @cindex @code{cf_check} function attribute, x86
+@item cf_check
 
 The @code{cf_check} attribute on a function is used to inform the
 compiler that ENDBR instruction should be placed at the function
 entry when @option{-fcf-protection=branch} is enabled.
 
-@item indirect_return
 @cindex @code{indirect_return} function attribute, x86
+@item indirect_return
 
 The @code{indirect_return} attribute can be applied to a function,
 as well as variable or type of function pointer to inform the
 compiler that the function may return via indirect branch.
 
-@item fentry_name("@var{name}")
 @cindex @code{fentry_name} function attribute, x86
+@item fentry_name("@var{name}")
 On x86 targets, the @code{fentry_name} attribute sets the function to
 call on function entry when function instrumentation is enabled
 with @option{-pg -mfentry}. When @var{name} is nop then a 5 byte
 nop sequence is generated.
 
-@item fentry_section("@var{name}")
 @cindex @code{fentry_section} function attribute, x86
+@item fentry_section("@var{name}")
 On x86 targets, the @code{fentry_section} attribute sets the name
 of the section to record function entry instrumentation calls in when
 enabled with @option{-pg -mrecord-mcount}
 
-@item nodirect_extern_access
 @cindex @code{nodirect_extern_access} function attribute
 @opindex mno-direct-extern-access
+@item nodirect_extern_access
 This attribute, attached to a global variable or function, is the
 counterpart to option @option{-mno-direct-extern-access}.
 
@@ -7259,8 +7259,8 @@ counterpart to option @option{-mno-direct-extern-access}.
 These function attributes are supported by the Xstormy16 back end:
 
 @table @code
-@item interrupt
 @cindex @code{interrupt} function attribute, Xstormy16
+@item interrupt
 Use this attribute to indicate
 that the specified function is an interrupt handler.  The compiler generates
 function entry and exit sequences suitable for use in an interrupt handler
@@ -7313,8 +7313,8 @@ The following attributes are supported on most targets.
 
 @table @code
 
-@item alias ("@var{target}")
 @cindex @code{alias} variable attribute
+@item alias ("@var{target}")
 The @code{alias} variable attribute causes the declaration to be emitted
 as an alias for another symbol known as an @dfn{alias target}.  Except
 for top-level qualifiers the alias target must have the same type as
@@ -7479,9 +7479,9 @@ When both the attribute and the option present at the same time, the level of
 the strictness for the specific trailing array field is determined by the
 attribute.
 
-@item alloc_size (@var{position})
-@itemx alloc_size (@var{position-1}, @var{position-2})
 @cindex @code{alloc_size} variable attribute
+@item alloc_size (@var{position})
+@itemx alloc_size (@var{position-1}, @var{position-2})
 The @code{alloc_size} variable attribute may be applied to the declaration
 of a pointer to a function that returns a pointer and takes at least one
 argument of an integer type.  It indicates that the returned pointer points
@@ -7507,8 +7507,8 @@ is given by the product of arguments 1 and 2, and similarly, that
 @code{malloc_ptr}, like the standard C function @code{malloc},
 returns an object whose size is given by argument 1 to the function.
 
-@item cleanup (@var{cleanup_function})
 @cindex @code{cleanup} variable attribute
+@item cleanup (@var{cleanup_function})
 The @code{cleanup} attribute runs a function when the variable goes
 out of scope.  This attribute can only be applied to auto function
 scope variables; it may not be applied to parameters or variables
@@ -7523,12 +7523,12 @@ does not allow the exception to be caught, only to perform an action.
 It is undefined what happens if @var{cleanup_function} does not
 return normally.
 
-@item common
-@itemx nocommon
 @cindex @code{common} variable attribute
 @cindex @code{nocommon} variable attribute
 @opindex fcommon
 @opindex fno-common
+@item common
+@itemx nocommon
 The @code{common} attribute requests GCC to place a variable in
 ``common'' storage.  The @code{nocommon} attribute requests the
 opposite---to allocate space for it directly.
@@ -7536,9 +7536,9 @@ opposite---to allocate space for it directly.
 These attributes override the default chosen by the
 @option{-fno-common} and @option{-fcommon} flags respectively.
 
-@item copy
-@itemx copy (@var{variable})
 @cindex @code{copy} variable attribute
+@item copy
+@itemx copy (@var{variable})
 The @code{copy} attribute applies the set of attributes with which
 @var{variable} has been declared to the declaration of the variable
 to which the attribute is applied.  The attribute is designed for
@@ -7553,9 +7553,9 @@ but not attributes that affect a symbol's linkage or visibility such as
 attribute is also not copied.  @xref{Common Function Attributes}.
 @xref{Common Type Attributes}.
 
-@item deprecated
-@itemx deprecated (@var{msg})
 @cindex @code{deprecated} variable attribute
+@item deprecated
+@itemx deprecated (@var{msg})
 The @code{deprecated} attribute results in a warning if the variable
 is used anywhere in the source file.  This is useful when identifying
 variables that are expected to be removed in a future version of a
@@ -7582,9 +7582,9 @@ types (@pxref{Common Function Attributes},
 The message attached to the attribute is affected by the setting of
 the @option{-fmessage-length} option.
 
-@item unavailable
-@itemx unavailable (@var{msg})
 @cindex @code{unavailable} variable attribute
+@item unavailable
+@itemx unavailable (@var{msg})
 The @code{unavailable} attribute indicates that the variable so marked
 is not available, if it is used anywhere in the source file.  It behaves
 in the same manner as the @code{deprecated} attribute except that the
@@ -7598,8 +7598,8 @@ The @code{unavailable} attribute can also be used for functions and
 types (@pxref{Common Function Attributes},
 @pxref{Common Type Attributes}).
 
-@item mode (@var{mode})
 @cindex @code{mode} variable attribute
+@item mode (@var{mode})
 This attribute specifies the data type for the declaration---whichever
 type corresponds to the mode @var{mode}.  This in effect lets you
 request an integer or floating-point type according to its width.
@@ -7611,8 +7611,8 @@ indicate the mode corresponding to a one-byte integer, @code{word} or
 @code{__word__} for the mode of a one-word integer, and @code{pointer}
 or @code{__pointer__} for the mode used to represent pointers.
 
-@item nonstring
 @cindex @code{nonstring} variable attribute
+@item nonstring
 The @code{nonstring} variable attribute specifies that an object or member
 declaration with type array of @code{char}, @code{signed char}, or
 @code{unsigned char}, or pointer to such a type is intended to store
@@ -7646,8 +7646,8 @@ int f (struct Data *pd, const char *s)
 @}
 @end smallexample
 
-@item packed
 @cindex @code{packed} variable attribute
+@item packed
 The @code{packed} attribute specifies that a structure member should have
 the smallest possible alignment---one bit for a bit-field and one byte
 otherwise, unless a larger value is specified with the @code{aligned}
@@ -7670,8 +7670,8 @@ been fixed in GCC 4.4 but the change can lead to differences in the
 structure layout.  See the documentation of
 @option{-Wpacked-bitfield-compat} for more information.
 
-@item section ("@var{section-name}")
 @cindex @code{section} variable attribute
+@item section ("@var{section-name}")
 Normally, the compiler places the objects it generates in sections like
 @code{data} and @code{bss}.  Sometimes, however, you need additional sections,
 or you need certain particular variables to appear in special sections,
@@ -7719,8 +7719,8 @@ attribute is not available on all platforms.
 If you need to map the entire contents of a module to a particular
 section, consider using the facilities of the linker instead.
 
-@item tls_model ("@var{tls_model}")
 @cindex @code{tls_model} variable attribute
+@item tls_model ("@var{tls_model}")
 The @code{tls_model} attribute sets thread-local storage model
 (@pxref{Thread-Local}) of a particular @code{__thread} variable,
 overriding @option{-ftls-model=} command-line switch on a per-variable
@@ -7730,14 +7730,14 @@ The @var{tls_model} argument should be one of @code{global-dynamic},
 
 Not all targets support this attribute.
 
-@item unused
 @cindex @code{unused} variable attribute
+@item unused
 This attribute, attached to a variable or structure field, means that
 the variable or field is meant to be possibly unused.  GCC does not
 produce a warning for this variable or field.
 
-@item used
 @cindex @code{used} variable attribute
+@item used
 This attribute, attached to a variable with static storage, means that
 the variable must be emitted even if it appears that the variable is not
 referenced.
@@ -7746,8 +7746,8 @@ When applied to a static data member of a C++ class template, the
 attribute also means that the member is instantiated if the
 class itself is instantiated.
 
-@item retain
 @cindex @code{retain} variable attribute
+@item retain
 For ELF targets that support the GNU or FreeBSD OSABIs, this attribute
 will save the variable from linker garbage collection.  To support
 this behavior, variables that have not been placed in specific sections
@@ -7756,8 +7756,8 @@ will be placed in new, unique sections.
 
 This additional functionality requires Binutils version 2.36 or later.
 
-@item uninitialized
 @cindex @code{uninitialized} variable attribute
+@item uninitialized
 This attribute, attached to a variable with automatic storage, means that
 the variable should not be automatically initialized by the compiler when
 the option @code{-ftrivial-auto-var-init} presents.
@@ -7772,8 +7772,8 @@ overhead.
 This attribute has no effect when the option @code{-ftrivial-auto-var-init}
 does not present.
 
-@item vector_size (@var{bytes})
 @cindex @code{vector_size} variable attribute
+@item vector_size (@var{bytes})
 This attribute specifies the vector size for the type of the declared
 variable, measured in bytes.  The type to which it applies is known as
 the @dfn{base type}.  The @var{bytes} argument must be a positive
@@ -7806,19 +7806,19 @@ struct S  __attribute__ ((vector_size (16))) foo;
 is invalid even if the size of the structure is the same as the size of
 the @code{int}.
 
-@item visibility ("@var{visibility_type}")
 @cindex @code{visibility} variable attribute
+@item visibility ("@var{visibility_type}")
 This attribute affects the linkage of the declaration to which it is attached.
 The @code{visibility} attribute is described in
 @ref{Common Function Attributes}.
 
-@item weak
 @cindex @code{weak} variable attribute
+@item weak
 The @code{weak} attribute is described in
 @ref{Common Function Attributes}.
 
-@item noinit
 @cindex @code{noinit} variable attribute
+@item noinit
 Any data with the @code{noinit} attribute will not be initialized by
 the C runtime startup code, or the program loader.  Not initializing
 data in this way can reduce program startup times.
@@ -7827,8 +7827,8 @@ This attribute is specific to ELF targets and relies on the linker
 script to place sections with the @code{.noinit} prefix in the right
 location.
 
-@item persistent
 @cindex @code{persistent} variable attribute
+@item persistent
 Any data with the @code{persistent} attribute will not be initialized by
 the C runtime startup code, but will be initialized by the program
 loader.  This enables the value of the variable to @samp{persist}
@@ -7839,8 +7839,8 @@ script to place the sections with the @code{.persistent} prefix in the
 right location.  Specifically, some type of non-volatile, writeable
 memory is required.
 
-@item objc_nullability (@var{nullability kind}) @r{(Objective-C and Objective-C++ only)}
 @cindex @code{objc_nullability} variable attribute
+@item objc_nullability (@var{nullability kind}) @r{(Objective-C and Objective-C++ only)}
 This attribute applies to pointer variables only.  It allows marking the
 pointer with one of four possible values describing the conditions under
 which the pointer might have a @code{nil} value. In most cases, the
@@ -7871,8 +7871,8 @@ getter will never validly return @code{nil}.
 @subsection ARC Variable Attributes
 
 @table @code
-@item aux
 @cindex @code{aux} variable attribute, ARC
+@item aux
 The @code{aux} attribute is used to directly access the ARC's
 auxiliary register space from C.  The auxilirary register number is
 given via attribute argument.
@@ -7883,8 +7883,8 @@ given via attribute argument.
 @subsection AVR Variable Attributes
 
 @table @code
-@item progmem
 @cindex @code{progmem} variable attribute, AVR
+@item progmem
 The @code{progmem} attribute is used on the AVR to place read-only
 data in the non-volatile program memory (flash). The @code{progmem}
 attribute accomplishes this by putting respective variables into a
@@ -7957,9 +7957,9 @@ at all.
 
 @end table
 
+@cindex @code{io} variable attribute, AVR
 @item io
 @itemx io (@var{addr})
-@cindex @code{io} variable attribute, AVR
 Variables with the @code{io} attribute are used to address
 memory-mapped peripherals in the io address range.
 If an address is specified, the variable
@@ -7982,17 +7982,17 @@ Example:
 extern volatile int porta __attribute__((io));
 @end smallexample
 
+@cindex @code{io_low} variable attribute, AVR
 @item io_low
 @itemx io_low (@var{addr})
-@cindex @code{io_low} variable attribute, AVR
 This is like the @code{io} attribute, but additionally it informs the
 compiler that the object lies in the lower half of the I/O area,
 allowing the use of @code{cbi}, @code{sbi}, @code{sbic} and @code{sbis}
 instructions.
 
+@cindex @code{address} variable attribute, AVR
 @item address
 @itemx address (@var{addr})
-@cindex @code{address} variable attribute, AVR
 Variables with the @code{address} attribute are used to address
 memory-mapped peripherals that may lie outside the io address range.
 
@@ -8000,8 +8000,8 @@ memory-mapped peripherals that may lie outside the io address range.
 volatile int porta __attribute__((address (0x600)));
 @end smallexample
 
-@item absdata
 @cindex @code{absdata} variable attribute, AVR
+@item absdata
 Variables in static storage and with the @code{absdata} attribute can
 be accessed by the @code{LDS} and @code{STS} instructions which take
 absolute addresses.
@@ -8037,20 +8037,20 @@ See also the @option{-mabsdata} @ref{AVR Options,command-line option}.
 Three attributes are currently defined for the Blackfin.
 
 @table @code
-@item l1_data
-@itemx l1_data_A
-@itemx l1_data_B
 @cindex @code{l1_data} variable attribute, Blackfin
 @cindex @code{l1_data_A} variable attribute, Blackfin
 @cindex @code{l1_data_B} variable attribute, Blackfin
+@item l1_data
+@itemx l1_data_A
+@itemx l1_data_B
 Use these attributes on the Blackfin to place the variable into L1 Data SRAM.
 Variables with @code{l1_data} attribute are put into the specific section
 named @code{.l1.data}. Those with @code{l1_data_A} attribute are put into
 the specific section named @code{.l1.data.A}. Those with @code{l1_data_B}
 attribute are put into the specific section named @code{.l1.data.B}.
 
-@item l2
 @cindex @code{l2} variable attribute, Blackfin
+@item l2
 Use this attribute on the Blackfin to place the variable into L2 SRAM.
 Variables with @code{l2} attribute are put into the specific section
 named @code{.l2.data}.
@@ -8062,9 +8062,9 @@ named @code{.l2.data}.
 These variable attributes are available for H8/300 targets:
 
 @table @code
-@item eightbit_data
 @cindex @code{eightbit_data} variable attribute, H8/300
 @cindex eight-bit data on the H8/300, H8/300H, and H8S
+@item eightbit_data
 Use this attribute on the H8/300, H8/300H, and H8S to indicate that the specified
 variable should be placed into the eight-bit data section.
 The compiler generates more efficient code for certain operations
@@ -8074,9 +8074,9 @@ on data in the eight-bit data area.  Note the eight-bit data area is limited to
 You must use GAS and GLD from GNU binutils version 2.7 or later for
 this attribute to work correctly.
 
-@item tiny_data
 @cindex @code{tiny_data} variable attribute, H8/300
 @cindex tiny data section on the H8/300H and H8S
+@item tiny_data
 Use this attribute on the H8/300H and H8S to indicate that the specified
 variable should be placed into the tiny data section.
 The compiler generates more efficient code for loads and stores
@@ -8091,8 +8091,8 @@ slightly under 32KB of data.
 The IA-64 back end supports the following variable attribute:
 
 @table @code
-@item model (@var{model-name})
 @cindex @code{model} variable attribute, IA-64
+@item model (@var{model-name})
 
 On IA-64, use this attribute to set the addressability of an object.
 At present, the only supported identifier for @var{model-name} is
@@ -8110,8 +8110,8 @@ defined by shared libraries.
 One attribute is currently defined for the LoongArch.
 
 @table @code
-@item model("@var{name}")
 @cindex @code{model} variable attribute, LoongArch
+@item model("@var{name}")
 Use this attribute on the LoongArch to use a different code model for
 addressing this variable, than the code model specified by the global
 @option{-mcmodel} option.  This attribute is mostly useful if a
@@ -8126,9 +8126,9 @@ specially.  Currently the only supported values of @var{name} are
 One attribute is currently defined for the M32R/D@.
 
 @table @code
-@item model (@var{model-name})
 @cindex @code{model-name} variable attribute, M32R/D
 @cindex variable addressability on the M32R/D
+@item model (@var{model-name})
 Use this attribute on the M32R/D to set the addressability of an object.
 The identifier @var{model-name} is one of @code{small}, @code{medium},
 or @code{large}, representing each of the code models.
@@ -8149,15 +8149,15 @@ You can use these attributes on Microsoft Windows targets.
 attributes available on all x86 targets.
 
 @table @code
-@item dllimport
-@itemx dllexport
 @cindex @code{dllimport} variable attribute
 @cindex @code{dllexport} variable attribute
+@item dllimport
+@itemx dllexport
 The @code{dllimport} and @code{dllexport} attributes are described in
 @ref{Microsoft Windows Function Attributes}.
 
-@item selectany
 @cindex @code{selectany} variable attribute
+@item selectany
 The @code{selectany} attribute causes an initialized global variable to
 have link-once semantics.  When multiple definitions of the variable are
 encountered by the linker, the first is selected and the remainder are
@@ -8177,8 +8177,8 @@ targets.  You can use @code{__declspec (selectany)} as a synonym for
 @code{__attribute__ ((selectany))} for compatibility with other
 compilers.
 
-@item shared
 @cindex @code{shared} variable attribute
+@item shared
 On Microsoft Windows, in addition to putting variable definitions in a named
 section, the section can also be shared among all running copies of an
 executable or DLL@.  For example, this small program defines shared data
@@ -8210,15 +8210,15 @@ The @code{shared} attribute is only available on Microsoft Windows@.
 @subsection MSP430 Variable Attributes
 
 @table @code
-@item upper
-@itemx either
 @cindex @code{upper} variable attribute, MSP430 
 @cindex @code{either} variable attribute, MSP430 
+@item upper
+@itemx either
 These attributes are the same as the MSP430 function attributes of the
 same name (@pxref{MSP430 Function Attributes}).  
 
-@item lower
 @cindex @code{lower} variable attribute, MSP430
+@item lower
 This option behaves mostly the same as the MSP430 function attribute of the
 same name (@pxref{MSP430 Function Attributes}), but it has some additional
 functionality.
@@ -8242,8 +8242,8 @@ will be used, and the @code{.lower} prefix will not be added.
 These variable attributes are supported by the Nvidia PTX back end:
 
 @table @code
-@item shared
 @cindex @code{shared} attribute, Nvidia PTX
+@item shared
 Use this attribute to place a variable in the @code{.shared} memory space.
 This memory space is private to each cooperative thread array; only threads
 within one thread block refer to the same instance of the variable.
@@ -8280,18 +8280,18 @@ These variable attributes are supported by the V850 back end:
 
 @table @code
 
-@item sda
 @cindex @code{sda} variable attribute, V850
+@item sda
 Use this attribute to explicitly place a variable in the small data area,
 which can hold up to 64 kilobytes.
 
-@item tda
 @cindex @code{tda} variable attribute, V850
+@item tda
 Use this attribute to explicitly place a variable in the tiny data area,
 which can hold up to 256 bytes in total.
 
-@item zda
 @cindex @code{zda} variable attribute, V850
+@item zda
 Use this attribute to explicitly place a variable in the first 32 kilobytes
 of memory.
 @end table
@@ -8303,10 +8303,10 @@ Two attributes are currently defined for x86 configurations:
 @code{ms_struct} and @code{gcc_struct}.
 
 @table @code
-@item ms_struct
-@itemx gcc_struct
 @cindex @code{ms_struct} variable attribute, x86
 @cindex @code{gcc_struct} variable attribute, x86
+@item ms_struct
+@itemx gcc_struct
 
 If @code{packed} is used on a structure, or if bit-fields are used,
 it may be that the Microsoft ABI lays out the structure differently
@@ -8331,8 +8331,8 @@ One attribute is currently defined for xstormy16 configurations:
 @code{below100}.
 
 @table @code
-@item below100
 @cindex @code{below100} variable attribute, Xstormy16
+@item below100
 
 If a variable has the @code{below100} attribute (@code{BELOW100} is
 allowed also), GCC places the variable in the first 0x100 bytes of
@@ -8527,9 +8527,9 @@ struct __attribute__ ((aligned (8))) foo
 
 This warning can be disabled by @option{-Wno-if-not-aligned}.
 
-@item alloc_size (@var{position})
-@itemx alloc_size (@var{position-1}, @var{position-2})
 @cindex @code{alloc_size} type attribute
+@item alloc_size (@var{position})
+@itemx alloc_size (@var{position-1}, @var{position-2})
 The @code{alloc_size} type attribute may be applied to the definition
 of a type of a function that returns a pointer and takes at least one
 argument of an integer type.  It indicates that the returned pointer
@@ -8555,9 +8555,9 @@ is given by the product of arguments 1 and 2, and that
 @code{malloc_type}, like the standard C function @code{malloc},
 returns an object whose size is given by argument 1 to the function.
 
-@item copy
-@itemx copy (@var{expression})
 @cindex @code{copy} type attribute
+@item copy
+@itemx copy (@var{expression})
 The @code{copy} attribute applies the set of attributes with which
 the type of the @var{expression} has been declared to the declaration
 of the type to which the attribute is applied.  The attribute is
@@ -8587,9 +8587,9 @@ A @{ /* @r{@dots{}} */ @};
 struct __attribute__ ((copy ( (struct A *)0)) B @{ /* @r{@dots{}} */ @};
 @end smallexample
 
-@item deprecated
-@itemx deprecated (@var{msg})
 @cindex @code{deprecated} type attribute
+@item deprecated
+@itemx deprecated (@var{msg})
 The @code{deprecated} attribute results in a warning if the type
 is used anywhere in the source file.  This is useful when identifying
 types that are expected to be removed in a future version of a program.
@@ -8625,9 +8625,9 @@ variables (@pxref{Function Attributes}, @pxref{Variable Attributes}.)
 The message attached to the attribute is affected by the setting of
 the @option{-fmessage-length} option.
 
-@item unavailable
-@itemx unavailable (@var{msg})
 @cindex @code{unavailable} type attribute
+@item unavailable
+@itemx unavailable (@var{msg})
 The @code{unavailable} attribute behaves in the same manner as the
 @code{deprecated} one, but emits an error rather than a warning.  It is
 used to indicate that a (perhaps previously @code{deprecated}) type is
@@ -8636,8 +8636,8 @@ no longer usable.
 The @code{unavailable} attribute can also be used for functions and
 variables (@pxref{Function Attributes}, @pxref{Variable Attributes}.)
 
-@item designated_init
 @cindex @code{designated_init} type attribute
+@item designated_init
 This attribute may only be applied to structure types.  It indicates
 that any initialization of an object of this type must use designated
 initializers rather than positional initializers.  The intent of this
@@ -8648,8 +8648,8 @@ initialization will result in future breakage.
 GCC emits warnings based on this attribute by default; use
 @option{-Wno-designated-init} to suppress them.
 
-@item may_alias
 @cindex @code{may_alias} type attribute
+@item may_alias
 Accesses through pointers to types with this attribute are not subject
 to type-based alias analysis, but are instead assumed to be able to alias
 any other type of objects.
@@ -8689,8 +8689,8 @@ declaration, the above program would abort when compiled with
 @option{-fstrict-aliasing}, which is on by default at @option{-O2} or
 above.
 
-@item mode (@var{mode})
 @cindex @code{mode} type attribute
+@item mode (@var{mode})
 This attribute specifies the data type for the declaration---whichever
 type corresponds to the mode @var{mode}.  This in effect lets you
 request an integer or floating-point type according to its width.
@@ -8702,8 +8702,8 @@ indicate the mode corresponding to a one-byte integer, @code{word} or
 @code{__word__} for the mode of a one-word integer, and @code{pointer}
 or @code{__pointer__} for the mode used to represent pointers.
 
-@item packed
 @cindex @code{packed} type attribute
+@item packed
 This attribute, attached to a @code{struct}, @code{union}, or C++ @code{class}
 type definition, specifies that each of its members (other than zero-width
 bit-fields) is placed to minimize the memory required.  This is equivalent
@@ -8741,8 +8741,8 @@ of an @code{enum}, @code{struct}, @code{union}, or @code{class},
 not on a @code{typedef} that does not also define the enumerated type,
 structure, union, or class.
 
-@item scalar_storage_order ("@var{endianness}")
 @cindex @code{scalar_storage_order} type attribute
+@item scalar_storage_order ("@var{endianness}")
 When attached to a @code{union} or a @code{struct}, this attribute sets
 the storage order, aka endianness, of the scalar fields of the type, as
 well as the array fields whose component is scalar.  The supported
@@ -8785,8 +8785,8 @@ is not supported; that is to say, if a given scalar object can be accessed
 through distinct types that assign a different storage order to it, then the
 behavior is undefined.
 
-@item transparent_union
 @cindex @code{transparent_union} type attribute
+@item transparent_union
 
 This attribute, attached to a @code{union} type definition, indicates
 that any function parameter having that union type causes calls to that
@@ -8847,8 +8847,8 @@ pid_t wait (wait_status_ptr_t p)
 @}
 @end smallexample
 
-@item unused
 @cindex @code{unused} type attribute
+@item unused
 When attached to a type (including a @code{union} or a @code{struct}),
 this attribute means that variables of that type are meant to appear
 possibly unused.  GCC does not produce a warning for any variables of
@@ -8857,8 +8857,8 @@ the case with lock or thread classes, which are usually defined and then
 not referenced, but contain constructors and destructors that have
 nontrivial bookkeeping functions.
 
-@item vector_size (@var{bytes})
 @cindex @code{vector_size} type attribute
+@item vector_size (@var{bytes})
 This attribute specifies the vector size for the type, measured in bytes.
 The type to which it applies is known as the @dfn{base type}.  The @var{bytes}
 argument must be a positive power-of-two multiple of the base type size.  For
@@ -8890,8 +8890,8 @@ __attribute__ ((vector_size (16))) float get_flt_vec16 (void);
 declares @code{get_flt_vec16} to be a function returning a 16-byte vector
 with the base type @code{float}.
 
-@item visibility
 @cindex @code{visibility} type attribute
+@item visibility
 In C++, attribute visibility (@pxref{Function Attributes}) can also be
 applied to class, struct, union and enum types.  Unlike other type
 attributes, the attribute must appear between the initial keyword and
@@ -8904,8 +8904,8 @@ and caught in another, the class must have default visibility.
 Otherwise the two shared objects are unable to use the same
 typeinfo node and exception handling will break.
 
-@item objc_root_class @r{(Objective-C and Objective-C++ only)}
 @cindex @code{objc_root_class} type attribute
+@item objc_root_class @r{(Objective-C and Objective-C++ only)}
 This attribute marks a class as being a root class, and thus allows
 the compiler to elide any warnings about a missing superclass and to
 make additional checks for mandatory methods as needed.
@@ -8998,10 +8998,10 @@ Two attributes are currently defined for x86 configurations:
 
 @table @code
 
-@item ms_struct
-@itemx gcc_struct
 @cindex @code{ms_struct} type attribute, x86
 @cindex @code{gcc_struct} type attribute, x86
+@item ms_struct
+@itemx gcc_struct
 
 If @code{packed} is used on a structure, or if bit-fields are used
 it may be that the Microsoft ABI packs them differently
@@ -9051,23 +9051,23 @@ NoError:
 @end smallexample
 
 @table @code
-@item unused
 @cindex @code{unused} label attribute
+@item unused
 This feature is intended for program-generated code that may contain 
 unused labels, but which is compiled with @option{-Wall}.  It is
 not normally appropriate to use in it human-written code, though it
 could be useful in cases where the code that jumps to the label is
 contained within an @code{#ifdef} conditional.
 
-@item hot
 @cindex @code{hot} label attribute
+@item hot
 The @code{hot} attribute on a label is used to inform the compiler that
 the path following the label is more likely than paths that are not so
 annotated.  This attribute is used in cases where @code{__builtin_expect}
 cannot be used, for instance with computed goto or @code{asm goto}.
 
-@item cold
 @cindex @code{cold} label attribute
+@item cold
 The @code{cold} attribute on labels is used to inform the compiler that
 the path following the label is unlikely to be executed.  This attribute
 is used in cases where @code{__builtin_expect} cannot be used, for instance
@@ -9102,8 +9102,8 @@ fn (void)
 @end smallexample
 
 @table @code
-@item deprecated
 @cindex @code{deprecated} enumerator attribute
+@item deprecated
 The @code{deprecated} attribute results in a warning if the enumerator
 is used anywhere in the source file.  This is useful when identifying
 enumerators that are expected to be removed in a future version of a
@@ -9112,8 +9112,8 @@ of the deprecated enumerator, to enable users to easily find further
 information about why the enumerator is deprecated, or what they should
 do instead.  Note that the warnings only occurs for uses.
 
-@item unavailable
 @cindex @code{unavailable} enumerator attribute
+@item unavailable
 The @code{unavailable} attribute results in an error if the enumerator
 is used anywhere in the source file.  In other respects it behaves in the
 same manner as the @code{deprecated} attribute.
@@ -9131,8 +9131,8 @@ available for functions (@pxref{Function Attributes}), variables
 (@pxref{Enumerator Attributes}), and for types (@pxref{Type Attributes}).
 
 @table @code
-@item fallthrough
 @cindex @code{fallthrough} statement attribute
+@item fallthrough
 The @code{fallthrough} attribute with a null statement serves as a
 fallthrough statement.  It hints to the compiler that a statement
 that falls through to another case label, or user-defined label
@@ -9158,8 +9158,8 @@ switch (cond)
   @}
 @end smallexample
 
-@item assume
 @cindex @code{assume} statement attribute
+@item assume
 The @code{assume} attribute with a null statement serves as portable
 assumption.  It should have a single argument, a conditional expression,
 which is not evaluated.  If the argument would evaluate to true
@@ -23811,8 +23811,8 @@ directives for declaring symbols to be weak, and defining weak
 aliases.
 
 @table @code
-@item #pragma weak @var{symbol}
 @cindex pragma, weak
+@item #pragma weak @var{symbol}
 This pragma declares @var{symbol} to be weak, as if the declaration
 had the attribute of the same name.  The pragma may appear before
 or after the declaration of @var{symbol}.  It is not an error for
diff --git a/gcc/doc/generic.texi b/gcc/doc/generic.texi
index 3f52d3042b8..ad1270f9025 100644
--- a/gcc/doc/generic.texi
+++ b/gcc/doc/generic.texi
@@ -1743,9 +1743,9 @@ represented.  Unrepresented fields will be cleared (zeroed), unless the
 CONSTRUCTOR_NO_CLEARING flag is set, in which case their value becomes
 undefined.
 
-@item COMPOUND_LITERAL_EXPR
 @findex COMPOUND_LITERAL_EXPR_DECL_EXPR
 @findex COMPOUND_LITERAL_EXPR_DECL
+@item COMPOUND_LITERAL_EXPR
 These nodes represent ISO C99 compound literals.  The
 @code{COMPOUND_LITERAL_EXPR_DECL_EXPR} is a @code{DECL_EXPR}
 containing an anonymous @code{VAR_DECL} for
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index 8ef5c1414da..47ea9ea462b 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -2618,18 +2618,18 @@ script provides three variables for this:
 
 @table @code
 
-@item build_configargs
 @cindex @code{build_configargs}
+@item build_configargs
 The contents of this variable is passed to all build @command{configure}
 scripts.
 
-@item host_configargs
 @cindex @code{host_configargs}
+@item host_configargs
 The contents of this variable is passed to all host @command{configure}
 scripts.
 
-@item target_configargs
 @cindex @code{target_configargs}
+@item target_configargs
 The contents of this variable is passed to all target @command{configure}
 scripts.
 
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 04ca9d9b02b..e1f897e8a84 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -2529,9 +2529,9 @@ ISO C2X.
 
 @opindex fno-builtin
 @opindex fbuiltin
+@cindex built-in functions
 @item -fno-builtin
 @itemx -fno-builtin-@var{function}
-@cindex built-in functions
 Don't recognize built-in functions that do not begin with
 @samp{__builtin_} as prefix.  @xref{Other Builtins,,Other built-in
 functions provided by GCC}, for details of the functions affected,
@@ -2575,8 +2575,8 @@ third arguments.  The value of such an expression is void.  This option
 is not supported for C++.
 
 @opindex ffreestanding
+@cindex hosted environment
 @item -ffreestanding
-@cindex hosted environment
 
 Assert that compilation targets a freestanding environment.  This
 implies @option{-fno-builtin}.  A freestanding environment
@@ -2631,8 +2631,8 @@ in effect for @code{inline} functions.  @xref{Common Predefined
 Macros,,,cpp,The C Preprocessor}.
 
 @opindex fhosted
+@cindex hosted environment
 @item -fhosted
-@cindex hosted environment
 
 Assert that compilation targets a hosted environment.  This implies
 @option{-fbuiltin}.  A hosted environment is one in which the
@@ -2668,12 +2668,12 @@ Note that this option is off for all targets except for x86
 targets using ms-abi.
 
 @opindex foffload
-@item -foffload=disable
-@itemx -foffload=default
-@itemx -foffload=@var{target-list}
 @cindex Offloading targets
 @cindex OpenACC offloading targets
 @cindex OpenMP offloading targets
+@item -foffload=disable
+@itemx -foffload=default
+@itemx -foffload=@var{target-list}
 Specify for which OpenMP and OpenACC offload targets code should be generated.
 The default behavior, equivalent to @option{-foffload=default}, is to generate
 code for all supported offload targets.  The @option{-foffload=disable} form
@@ -2686,11 +2686,11 @@ run the compiler with @option{-v} to show the list of configured offload targets
 under @code{OFFLOAD_TARGET_NAMES}.
 
 @opindex foffload-options
-@item -foffload-options=@var{options}
-@itemx -foffload-options=@var{target-triplet-list}=@var{options}
 @cindex Offloading options
 @cindex OpenACC offloading options
 @cindex OpenMP offloading options
+@item -foffload-options=@var{options}
+@itemx -foffload-options=@var{target-triplet-list}=@var{options}
 
 With @option{-foffload-options=@var{options}}, GCC passes the specified
 @var{options} to the compilers for all enabled offloading targets.  You can
@@ -2708,8 +2708,8 @@ Typical command lines are
 @end smallexample
 
 @opindex fopenacc
+@cindex OpenACC accelerator programming
 @item -fopenacc
-@cindex OpenACC accelerator programming
 Enable handling of OpenACC directives @code{#pragma acc} in C/C++ and
 @code{!$acc} in Fortran.  When @option{-fopenacc} is specified, the
 compiler generates accelerated code according to the OpenACC Application
@@ -2718,16 +2718,16 @@ implies @option{-pthread}, and thus is only supported on targets that
 have support for @option{-pthread}.
 
 @opindex fopenacc-dim
+@cindex OpenACC accelerator programming
 @item -fopenacc-dim=@var{geom}
-@cindex OpenACC accelerator programming
 Specify default compute dimensions for parallel offload regions that do
 not explicitly specify.  The @var{geom} value is a triple of
 ':'-separated sizes, in order 'gang', 'worker' and, 'vector'.  A size
 can be omitted, to use a target-specific default value.
 
 @opindex fopenmp
-@item -fopenmp
 @cindex OpenMP parallel
+@item -fopenmp
 Enable handling of OpenMP directives @code{#pragma omp} in C/C++,
 @code{[[omp::directive(...)]]} and @code{[[omp::sequence(...)]]} in C++ and
 @code{!$omp} in Fortran.  When @option{-fopenmp} is specified, the
@@ -2738,9 +2738,9 @@ have support for @option{-pthread}. @option{-fopenmp} implies
 @option{-fopenmp-simd}.
 
 @opindex fopenmp-simd
-@item -fopenmp-simd
 @cindex OpenMP SIMD
 @cindex SIMD
+@item -fopenmp-simd
 Enable handling of OpenMP's @code{simd}, @code{declare simd},
 @code{declare reduction}, @code{assume}, @code{ordered}, @code{scan},
 @code{loop} directives and combined or composite directives with
@@ -2749,9 +2749,9 @@ Enable handling of OpenMP's @code{simd}, @code{declare simd},
 and @code{!$omp} in Fortran.  Other OpenMP directives are ignored.
 
 @opindex fopenmp-target-simd-clone
+@cindex OpenMP target SIMD clone
 @item -fopenmp-target-simd-clone
 @item -fopenmp-target-simd-clone=@var{device-type}
-@cindex OpenMP target SIMD clone
 In addition to generating SIMD clones for functions marked with the
 @code{declare simd} directive, GCC also generates clones
 for functions marked with the OpenMP @code{declare target} directive
@@ -3353,14 +3353,14 @@ of a named module remain implicitly inline, regardless.)
 @item -fno-module-lazy
 Disable lazy module importing and module mapper creation.
 
+@vindex CXX_MODULE_MAPPER @r{environment variable}
+@opindex fmodule-mapper
 @item -fmodule-mapper=@r{[}@var{hostname}@r{]}:@var{port}@r{[}?@var{ident}@r{]}
 @itemx -fmodule-mapper=|@var{program}@r{[}?@var{ident}@r{]} @var{args...}
 @itemx -fmodule-mapper==@var{socket}@r{[}?@var{ident}@r{]}
 @itemx -fmodule-mapper=<>@r{[}@var{inout}@r{]}@r{[}?@var{ident}@r{]}
 @itemx -fmodule-mapper=<@var{in}>@var{out}@r{[}?@var{ident}@r{]}
 @itemx -fmodule-mapper=@var{file}@r{[}?@var{ident}@r{]}
-@vindex CXX_MODULE_MAPPER @r{environment variable}
-@opindex fmodule-mapper
 An oracle to query for module name to filename mappings.  If
 unspecified the @env{CXX_MODULE_MAPPER} environment variable is used,
 and if that is unset, an in-process default is provided.
@@ -4025,9 +4025,9 @@ Enabled by default with @option{-std=c++17}.
 
 @opindex Wreorder
 @opindex Wno-reorder
-@item -Wreorder @r{(C++ and Objective-C++ only)}
 @cindex reordering, warning
 @cindex warning for reordering of member initializers
+@item -Wreorder @r{(C++ and Objective-C++ only)}
 Warn when the order of member initializers given in the code does not
 match the order in which they must be executed.  For instance:
 
@@ -4256,10 +4256,10 @@ less vulnerable to unintended effects and much easier to search for.
 
 @opindex Woverloaded-virtual
 @opindex Wno-overloaded-virtual
-@item -Woverloaded-virtual @r{(C++ and Objective-C++ only)}
-@itemx -Woverloaded-virtual=@var{n}
 @cindex overloaded virtual function, warning
 @cindex warning for overloaded virtual function
+@item -Woverloaded-virtual @r{(C++ and Objective-C++ only)}
+@itemx -Woverloaded-virtual=@var{n}
 Warn when a function declaration hides virtual functions from a
 base class.  For example, in:
 
@@ -5067,10 +5067,10 @@ prefix) for physical lines that result from the process of breaking
 a message which is too long to fit on a single line.
 
 @opindex fdiagnostics-color
-@item -fdiagnostics-color[=@var{WHEN}]
-@itemx -fno-diagnostics-color
 @cindex highlight, color
 @vindex GCC_COLORS @r{environment variable}
+@item -fdiagnostics-color[=@var{WHEN}]
+@itemx -fno-diagnostics-color
 Use color in diagnostics.  @var{WHEN} is @samp{never}, @samp{always},
 or @samp{auto}.  The default depends on how the compiler has been configured,
 it can be any of the above @var{WHEN} options or also @samp{never}
@@ -5120,86 +5120,86 @@ Setting @env{GCC_COLORS} to the empty string disables colors.
 Supported capabilities are as follows.
 
 @table @code
-@item error=
 @vindex error GCC_COLORS @r{capability}
+@item error=
 SGR substring for error: markers.
 
-@item warning=
 @vindex warning GCC_COLORS @r{capability}
+@item warning=
 SGR substring for warning: markers.
 
-@item note=
 @vindex note GCC_COLORS @r{capability}
+@item note=
 SGR substring for note: markers.
 
-@item path=
 @vindex path GCC_COLORS @r{capability}
+@item path=
 SGR substring for colorizing paths of control-flow events as printed
 via @option{-fdiagnostics-path-format=}, such as the identifiers of
 individual events and lines indicating interprocedural calls and returns.
 
-@item range1=
 @vindex range1 GCC_COLORS @r{capability}
+@item range1=
 SGR substring for first additional range.
 
-@item range2=
 @vindex range2 GCC_COLORS @r{capability}
+@item range2=
 SGR substring for second additional range.
 
-@item locus=
 @vindex locus GCC_COLORS @r{capability}
+@item locus=
 SGR substring for location information, @samp{file:line} or
 @samp{file:line:column} etc.
 
-@item quote=
 @vindex quote GCC_COLORS @r{capability}
+@item quote=
 SGR substring for information printed within quotes.
 
-@item fnname=
 @vindex fnname GCC_COLORS @r{capability}
+@item fnname=
 SGR substring for names of C++ functions.
 
-@item targs=
 @vindex targs GCC_COLORS @r{capability}
+@item targs=
 SGR substring for C++ function template parameter bindings.
 
-@item fixit-insert=
 @vindex fixit-insert GCC_COLORS @r{capability}
+@item fixit-insert=
 SGR substring for fix-it hints suggesting text to
 be inserted or replaced.
 
-@item fixit-delete=
 @vindex fixit-delete GCC_COLORS @r{capability}
+@item fixit-delete=
 SGR substring for fix-it hints suggesting text to
 be deleted.
 
-@item diff-filename=
 @vindex diff-filename GCC_COLORS @r{capability}
+@item diff-filename=
 SGR substring for filename headers within generated patches.
 
-@item diff-hunk=
 @vindex diff-hunk GCC_COLORS @r{capability}
+@item diff-hunk=
 SGR substring for the starts of hunks within generated patches.
 
-@item diff-delete=
 @vindex diff-delete GCC_COLORS @r{capability}
+@item diff-delete=
 SGR substring for deleted lines within generated patches.
 
-@item diff-insert=
 @vindex diff-insert GCC_COLORS @r{capability}
+@item diff-insert=
 SGR substring for inserted lines within generated patches.
 
-@item type-diff=
 @vindex type-diff GCC_COLORS @r{capability}
+@item type-diff=
 SGR substring for highlighting mismatching types within template
 arguments in the C++ frontend.
 @end table
 
 @opindex fdiagnostics-urls
-@item -fdiagnostics-urls[=@var{WHEN}]
 @cindex urls
 @vindex GCC_URLS @r{environment variable}
 @vindex TERM_URLS @r{environment variable}
+@item -fdiagnostics-urls[=@var{WHEN}]
 Use escape sequences to embed URLs in diagnostics.  For example, when
 @option{-fdiagnostics-show-option} emits text showing the command-line
 option controlling a diagnostic, embed a URL for documentation of that
@@ -7564,10 +7564,10 @@ This warning is enabled by @option{-Wall} or @option{-Wextra}.
 
 @opindex Wunknown-pragmas
 @opindex Wno-unknown-pragmas
-@item -Wunknown-pragmas
 @cindex warning for unknown pragmas
 @cindex unknown pragmas, warning
 @cindex pragmas, warning of unknown
+@item -Wunknown-pragmas
 Warn when a @code{#pragma} directive is encountered that is not understood by 
 GCC@.  If this command-line option is used, warnings are even issued
 for unknown pragmas in system header files.  This is not the case if
@@ -8365,9 +8365,9 @@ obtaining infinities and NaNs.
 
 @opindex Wsystem-headers
 @opindex Wno-system-headers
-@item -Wsystem-headers
 @cindex warnings from system headers
 @cindex system headers, warnings from
+@item -Wsystem-headers
 Print warning messages for constructs found in system header files.
 Warnings from system headers are normally suppressed, on the assumption
 that they usually do not indicate real problems and would only make the
@@ -8939,15 +8939,15 @@ When compiling C++, warn about the deprecated conversion from string
 literals to @code{char *}.  This warning is enabled by default for C++
 programs.
 
-@item -Wclobbered
 @opindex Wclobbered
 @opindex Wno-clobbered
+@item -Wclobbered
 Warn for variables that might be changed by @code{longjmp} or
 @code{vfork}.  This warning is also enabled by @option{-Wextra}.
 
-@item -Wno-complain-wrong-lang
 @opindex Wcomplain-wrong-lang
 @opindex Wno-complain-wrong-lang
+@item -Wno-complain-wrong-lang
 By default, language front ends complain when a command-line option is
 valid, but not applicable to that front end.
 This may be disabled with @option{-Wno-complain-wrong-lang},
@@ -8964,9 +8964,9 @@ The latter front end diagnoses
 @samp{f951: Warning: command-line option '-fno-rtti' is valid for C++/D/ObjC++ but not for Fortran},
 which may be disabled with @option{-Wno-complain-wrong-lang}.
 
-@item -Wconversion
 @opindex Wconversion
 @opindex Wno-conversion
+@item -Wconversion
 Warn for implicit conversions that may alter a value. This includes
 conversions between real and integer, like @code{abs (x)} when
 @code{x} is @code{double}; conversions between signed and unsigned,
@@ -9155,10 +9155,10 @@ can be disabled with the @option{-Wno-jump-misses-init} option.
 
 @opindex Wsign-compare
 @opindex Wno-sign-compare
-@item -Wsign-compare
 @cindex warning for comparison of signed and unsigned values
 @cindex comparison of signed and unsigned values, warning
 @cindex signed and unsigned values, comparison warning
+@item -Wsign-compare
 Warn when a comparison between signed and unsigned values could produce
 an incorrect result when the signed value is converted to unsigned.
 In C++, this warning is also enabled by @option{-Wall}.  In C, it is
@@ -9586,10 +9586,10 @@ implementation-defined values, and should not be used in portable code.
 @opindex Wnormalized=
 @opindex Wnormalized
 @opindex Wno-normalized
-@item -Wnormalized=@r{[}none@r{|}id@r{|}nfc@r{|}nfkc@r{]}
 @cindex NFC
 @cindex NFKC
 @cindex character set, input normalization
+@item -Wnormalized=@r{[}none@r{|}id@r{|}nfc@r{|}nfkc@r{]}
 In ISO C and ISO C++, two identifiers are different if they are
 different sequences of characters.  However, sometimes when characters
 outside the basic ASCII character set are used, you can have two
@@ -9667,8 +9667,8 @@ Enabled by default.
 
 @opindex Wopenacc-parallelism
 @opindex Wno-openacc-parallelism
+@cindex OpenACC accelerator programming
 @item -Wopenacc-parallelism
-@cindex OpenACC accelerator programming
 Warn about potentially suboptimal choices related to OpenACC parallelism.
 
 @opindex Wopenmp-simd
@@ -11033,9 +11033,9 @@ and which aren't relevant to leak analysis.
 With @option{-fno-analyzer-state-purge} this purging of state can
 be suppressed, for debugging state-handling issues.
 
-@item -fno-analyzer-suppress-followups
 @opindex fanalyzer-suppress-followups
 @opindex fno-analyzer-suppress-followups
+@item -fno-analyzer-suppress-followups
 This option is intended for analyzer developers.
 
 By default the analyzer will stop exploring an execution path after
@@ -16638,13 +16638,13 @@ program may yield backtraces with different addresses due to ASLR (Address
 Space Layout Randomization), it may be desirable to turn ASLR off.  On Linux,
 this can be achieved with @samp{setarch `uname -m` -R ./prog}.
 
-@item -fsanitize=kernel-address
 @opindex fsanitize=kernel-address
+@item -fsanitize=kernel-address
 Enable AddressSanitizer for Linux kernel.
 See @uref{https://github.com/google/kernel-sanitizers} for more details.
 
-@item -fsanitize=hwaddress
 @opindex fsanitize=hwaddress
+@item -fsanitize=hwaddress
 Enable Hardware-assisted AddressSanitizer, which uses a hardware ability to
 ignore the top byte of a pointer to allow the detection of memory errors with
 a low memory overhead.
@@ -17874,8 +17874,8 @@ option @option{-Xlinker -z -Xlinker defs}).  Only a few systems support
 this option.
 
 @opindex T
-@item -T @var{script}
 @cindex linker script
+@item -T @var{script}
 Use @var{script} as the linker script.  This option is supported by most
 systems using the GNU linker.  On some targets, such as bare-board
 targets without an operating system, the @option{-T} option may be required
@@ -18272,8 +18272,8 @@ Use it to conform to a non-default application binary interface.
 
 @opindex fcommon
 @opindex fno-common
-@item -fcommon
 @cindex tentative definitions
+@item -fcommon
 In C code, this option controls the placement of global variables
 defined without an initializer, known as @dfn{tentative definitions}
 in the C standard.  Tentative definitions are distinct from declarations
@@ -18413,9 +18413,9 @@ See also @option{-grecord-gcc-switches} for another
 way of storing compiler options into the object file.
 
 @opindex fpic
-@item -fpic
 @cindex global offset table
 @cindex PIC
+@item -fpic
 Generate position-independent code (PIC) suitable for use in a shared
 library, if supported for the target machine.  Such code accesses all
 constant addresses through a global offset table (GOT)@.  The dynamic
@@ -25864,8 +25864,8 @@ Put small global and static data in the small data area, and generate
 special instructions to reference them.
 
 @opindex G
-@item -G @var{num}
 @cindex smaller data references
+@item -G @var{num}
 Put global and static objects less than or equal to @var{num} bytes
 into the small data or BSS sections instead of the normal data or BSS
 sections.  The default value of @var{num} is 8.
@@ -28125,8 +28125,8 @@ These are the options defined for the Altera Nios II processor.
 @table @gcctabopt
 
 @opindex G
-@item -G @var{num}
 @cindex smaller data references
+@item -G @var{num}
 Put global and static objects less than or equal to @var{num} bytes
 into the small data or BSS sections instead of the normal data or BSS
 sections.  The default value of @var{num} is 8.
@@ -30030,9 +30030,9 @@ end of the inline compare a call to @code{strcmp} or @code{strncmp} will
 take care of the rest of the comparison. The default is 64 bytes.
 
 @opindex G
-@item -G @var{num}
 @cindex smaller data references (PowerPC)
 @cindex .sdata/.sdata2 references (PowerPC)
+@item -G @var{num}
 On embedded PowerPC systems, put global and static items less than or
 equal to @var{num} bytes into the small data or BSS sections instead of
 the normal data or BSS section.  By default, @var{num} is 8.  The
@@ -34389,18 +34389,18 @@ Issues a @var{command} to the spec file processor.  The commands that can
 appear here are:
 
 @table @code
-@item %include <@var{file}>
 @cindex @code{%include}
+@item %include <@var{file}>
 Search for @var{file} and insert its text at the current point in the
 specs file.
 
-@item %include_noerr <@var{file}>
 @cindex @code{%include_noerr}
+@item %include_noerr <@var{file}>
 Just like @samp{%include}, but do not generate an error message if the include
 file cannot be found.
 
-@item %rename @var{old_name} @var{new_name}
 @cindex @code{%rename}
+@item %rename @var{old_name} @var{new_name}
 Rename the spec string @var{old_name} to @var{new_name}.
 
 @end table
@@ -35078,6 +35078,15 @@ in turn take precedence over those specified by the configuration of GCC@.
 GNU Compiler Collection (GCC) Internals}.
 
 @table @env
+@vindex LANG
+@vindex LC_CTYPE
+@c @vindex LC_COLLATE
+@vindex LC_MESSAGES
+@c @vindex LC_MONETARY
+@c @vindex LC_NUMERIC
+@c @vindex LC_TIME
+@vindex LC_ALL
+@cindex locale
 @item LANG
 @itemx LC_CTYPE
 @c @itemx LC_COLLATE
@@ -35086,15 +35095,6 @@ GNU Compiler Collection (GCC) Internals}.
 @c @itemx LC_NUMERIC
 @c @itemx LC_TIME
 @itemx LC_ALL
-@findex LANG
-@findex LC_CTYPE
-@c @findex LC_COLLATE
-@findex LC_MESSAGES
-@c @findex LC_MONETARY
-@c @findex LC_NUMERIC
-@c @findex LC_TIME
-@findex LC_ALL
-@cindex locale
 These environment variables control the way that GCC uses
 localization information which allows GCC to work with different
 national conventions.  GCC inspects the locale categories
@@ -35118,22 +35118,22 @@ and @env{LC_MESSAGES} default to the value of the @env{LANG}
 environment variable.  If none of these variables are set, GCC
 defaults to traditional C English behavior.
 
+@vindex TMPDIR
 @item TMPDIR
-@findex TMPDIR
 If @env{TMPDIR} is set, it specifies the directory to use for temporary
 files.  GCC uses temporary files to hold the output of one stage of
 compilation which is to be used as input to the next stage: for example,
 the output of the preprocessor, which is the input to the compiler
 proper.
 
+@vindex GCC_COMPARE_DEBUG
 @item GCC_COMPARE_DEBUG
-@findex GCC_COMPARE_DEBUG
 Setting @env{GCC_COMPARE_DEBUG} is nearly equivalent to passing
 @option{-fcompare-debug} to the compiler driver.  See the documentation
 of this option for more details.
 
+@vindex GCC_EXEC_PREFIX
 @item GCC_EXEC_PREFIX
-@findex GCC_EXEC_PREFIX
 If @env{GCC_EXEC_PREFIX} is set, it specifies a prefix to use in the
 names of the subprograms executed by the compiler.  No slash is added
 when this prefix is combined with the name of a subprogram, but you can
@@ -35167,15 +35167,15 @@ If a standard directory begins with the configured
 @var{prefix} then the value of @var{prefix} is replaced by
 @env{GCC_EXEC_PREFIX} when looking for header files.
 
+@vindex COMPILER_PATH
 @item COMPILER_PATH
-@findex COMPILER_PATH
 The value of @env{COMPILER_PATH} is a colon-separated list of
 directories, much like @env{PATH}.  GCC tries the directories thus
 specified when searching for subprograms, if it cannot find the
 subprograms using @env{GCC_EXEC_PREFIX}.
 
+@vindex LIBRARY_PATH
 @item LIBRARY_PATH
-@findex LIBRARY_PATH
 The value of @env{LIBRARY_PATH} is a colon-separated list of
 directories, much like @env{PATH}.  When configured as a native compiler,
 GCC tries the directories thus specified when searching for special
@@ -35184,9 +35184,9 @@ using GCC also uses these directories when searching for ordinary
 libraries for the @option{-l} option (but directories specified with
 @option{-L} come first).
 
-@item LANG
-@findex LANG
+@vindex LANG
 @cindex locale definition
+@item LANG
 This variable is used to pass locale information to the compiler.  One way in
 which this information is used is to determine the character set to be used
 when character literals, string literals and comments are parsed in C and C++.
@@ -35206,8 +35206,8 @@ If @env{LANG} is not defined, or if it has some other value, then the
 compiler uses @code{mblen} and @code{mbtowc} as defined by the default locale to
 recognize and translate multibyte characters.
 
+@vindex GCC_EXTRA_DIAGNOSTIC_OUTPUT
 @item GCC_EXTRA_DIAGNOSTIC_OUTPUT
-@findex GCC_EXTRA_DIAGNOSTIC_OUTPUT
 If @env{GCC_EXTRA_DIAGNOSTIC_OUTPUT} is set to one of the following values,
 then additional text will be emitted to stderr when fix-it hints are
 emitted.  @option{-fdiagnostics-parseable-fixits} and
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index 7235d34c4b3..8e3113599fd 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -156,9 +156,9 @@ operands of the instruction.
 If the vector has multiple elements, the RTL template is treated as a
 @code{parallel} expression.
 
-@item
 @cindex pattern conditions
 @cindex conditions, in patterns
+@item
 The condition: This is a string which contains a C expression.  When the
 compiler attempts to match RTL against a pattern, the condition is
 evaluated.  If the condition evaluates to @code{true}, the match is
@@ -2193,8 +2193,7 @@ An integer constant with exactly a single bit set.
 An integer constant with all bits set except exactly one.
 
 @item H
-
-@item Q
+@itemx Q
 Any SYMBOL_REF.
 @end table
 
@@ -5291,10 +5290,10 @@ operand 0 is the scalar result, with mode equal to the mode of the elements of
 the input vector.
 
 @cindex @code{reduc_and_scal_@var{m}} instruction pattern
-@item @samp{reduc_and_scal_@var{m}}
 @cindex @code{reduc_ior_scal_@var{m}} instruction pattern
-@itemx @samp{reduc_ior_scal_@var{m}}
 @cindex @code{reduc_xor_scal_@var{m}} instruction pattern
+@item @samp{reduc_and_scal_@var{m}}
+@itemx @samp{reduc_ior_scal_@var{m}}
 @itemx @samp{reduc_xor_scal_@var{m}}
 Compute the bitwise @code{AND}/@code{IOR}/@code{XOR} reduction of the elements
 of a vector of mode @var{m}.  Operand 1 is the vector input and operand 0
@@ -5382,8 +5381,8 @@ usdot<signed op0, unsigned op1, signed op2, signed op3> ==
 @end smallexample
 
 @cindex @code{ssad@var{m}} instruction pattern
-@item @samp{ssad@var{m}}
 @cindex @code{usad@var{m}} instruction pattern
+@item @samp{ssad@var{m}}
 @item @samp{usad@var{m}}
 Compute the sum of absolute differences of two signed/unsigned elements.
 Operand 1 and operand 2 are of the same mode. Their absolute difference, which
@@ -5392,8 +5391,8 @@ equal or wider than the mode of the absolute difference. The result is placed
 in operand 0, which is of the same mode as operand 3.
 
 @cindex @code{widen_ssum@var{m3}} instruction pattern
-@item @samp{widen_ssum@var{m3}}
 @cindex @code{widen_usum@var{m3}} instruction pattern
+@item @samp{widen_ssum@var{m3}}
 @itemx @samp{widen_usum@var{m3}}
 Operands 0 and 2 are of the same mode, which is wider than the mode of
 operand 1. Add operand 1 to operand 2 and place the widened result in
@@ -5401,8 +5400,8 @@ operand 0. (This is used express accumulation of elements into an accumulator
 of a wider mode.)
 
 @cindex @code{smulhs@var{m3}} instruction pattern
-@item @samp{smulhs@var{m3}}
 @cindex @code{umulhs@var{m3}} instruction pattern
+@item @samp{smulhs@var{m3}}
 @itemx @samp{umulhs@var{m3}}
 Signed/unsigned multiply high with scale. This is equivalent to the C code:
 @smallexample
@@ -5414,8 +5413,8 @@ where the sign of @samp{narrow} determines whether this is a signed
 or unsigned operation, and @var{N} is the size of @samp{wide} in bits.
 
 @cindex @code{smulhrs@var{m3}} instruction pattern
-@item @samp{smulhrs@var{m3}}
 @cindex @code{umulhrs@var{m3}} instruction pattern
+@item @samp{smulhrs@var{m3}}
 @itemx @samp{umulhrs@var{m3}}
 Signed/unsigned multiply high with round and scale. This is
 equivalent to the C code:
@@ -5427,9 +5426,9 @@ op0 = (narrow) (((((wide) op1 * (wide) op2) >> (N / 2 - 2)) + 1) >> 1);
 where the sign of @samp{narrow} determines whether this is a signed
 or unsigned operation, and @var{N} is the size of @samp{wide} in bits.
 
+@cindex @code{sdiv_pow2@var{m3}} instruction pattern
 @cindex @code{sdiv_pow2@var{m3}} instruction pattern
 @item @samp{sdiv_pow2@var{m3}}
-@cindex @code{sdiv_pow2@var{m3}} instruction pattern
 @itemx @samp{sdiv_pow2@var{m3}}
 Signed division by power-of-2 immediate. Equivalent to:
 @smallexample
@@ -8213,12 +8212,12 @@ can itself be a @code{plus}.  @code{and}, @code{ior}, @code{xor},
 @code{umax} are associative when applied to integers, and sometimes to
 floating-point.
 
-@item
 @cindex @code{neg}, canonicalization of
 @cindex @code{not}, canonicalization of
 @cindex @code{mult}, canonicalization of
 @cindex @code{plus}, canonicalization of
 @cindex @code{minus}, canonicalization of
+@item
 For these operators, if only one operand is a @code{neg}, @code{not},
 @code{mult}, @code{plus}, or @code{minus} expression, it will be the
 first operand.
@@ -11088,8 +11087,8 @@ values in @file{sync.md} rather than in the main @file{.md} file.
 Some enumeration names have special significance to GCC:
 
 @table @code
-@item unspecv
 @findex unspec_volatile
+@item unspecv
 If an enumeration called @code{unspecv} is defined, GCC will use it
 when printing out @code{unspec_volatile} expressions.  For example:
 
@@ -11105,8 +11104,8 @@ causes GCC to print @samp{(unspec_volatile @dots{} 0)} as:
 (unspec_volatile ... UNSPECV_BLOCKAGE)
 @end smallexample
 
-@item unspec
 @findex unspec
+@item unspec
 If an enumeration called @code{unspec} is defined, GCC will use
 it when printing out @code{unspec} expressions.  GCC will also use
 it when printing out @code{unspec_volatile} expressions unless an
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index d1380e1eb3b..1de24943c2e 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -1028,8 +1028,8 @@ the symbol has already been written.
 
 @findex volatil
 @cindex @samp{/v} in RTL dump
-@item volatil
 @cindex volatile memory references
+@item volatil
 In a @code{mem}, @code{asm_operands}, or @code{asm_input}
 expression, it is 1 if the memory
 reference is volatile.  Volatile memory references may not be deleted,
@@ -2187,14 +2187,14 @@ laid out in memory order.  The memory order of bytes is defined by
 two target macros, @code{WORDS_BIG_ENDIAN} and @code{BYTES_BIG_ENDIAN}:
 
 @itemize
-@item
 @cindex @code{WORDS_BIG_ENDIAN}, effect on @code{subreg}
+@item
 @code{WORDS_BIG_ENDIAN}, if set to 1, says that byte number zero is
 part of the most significant word; otherwise, it is part of the least
 significant word.
 
-@item
 @cindex @code{BYTES_BIG_ENDIAN}, effect on @code{subreg}
+@item
 @code{BYTES_BIG_ENDIAN}, if set to 1, says that byte number zero is
 the most significant byte within a word; otherwise, it is the least
 significant byte within a word.
@@ -2336,8 +2336,8 @@ that both performs the arithmetic and sets the condition code register.
 For examples, search for @samp{addcc} and @samp{andcc} in @file{sparc.md}.
 
 @findex pc
-@item (pc)
 @cindex program counter
+@item (pc)
 This represents the machine's program counter.  It has no operands and
 may not have a machine mode.  @code{(pc)} may be validly used only in
 certain specific contexts in jump instructions.
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index c6c891972d1..09eab4131ce 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -4970,9 +4970,9 @@ function's arguments that this function should pop is available in
 @end deftypefn
 
 @itemize @bullet
-@item
 @findex pretend_args_size
 @findex crtl->args.pretend_args_size
+@item
 A region of @code{crtl->args.pretend_args_size} bytes of
 uninitialized space just underneath the first argument arriving on the
 stack.  (This may not be at the very start of the allocated stack region
@@ -4997,8 +4997,8 @@ boundary, to contain the local variables of the function.  On some machines,
 this region and the save area may occur in the opposite order, with the
 save area closer to the top of the stack.
 
-@item
 @cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames
+@item
 Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of
 @code{crtl->outgoing_args_size} bytes to be used for outgoing
 argument lists of the function.  @xref{Stack Arguments}.
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index 613b2534149..83aa3e732b1 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -3534,9 +3534,9 @@ This section describes the macros that output function entry
 @hook TARGET_ASM_FUNCTION_EPILOGUE
 
 @itemize @bullet
-@item
 @findex pretend_args_size
 @findex crtl->args.pretend_args_size
+@item
 A region of @code{crtl->args.pretend_args_size} bytes of
 uninitialized space just underneath the first argument arriving on the
 stack.  (This may not be at the very start of the allocated stack region
@@ -3561,8 +3561,8 @@ boundary, to contain the local variables of the function.  On some machines,
 this region and the save area may occur in the opposite order, with the
 save area closer to the top of the stack.
 
-@item
 @cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames
+@item
 Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of
 @code{crtl->outgoing_args_size} bytes to be used for outgoing
 argument lists of the function.  @xref{Stack Arguments}.
diff --git a/gcc/doc/trouble.texi b/gcc/doc/trouble.texi
index ea17921eb4e..155be210992 100644
--- a/gcc/doc/trouble.texi
+++ b/gcc/doc/trouble.texi
@@ -198,8 +198,8 @@ with GCC does not produce the same floating-point formats that the
 assembler accepts.  If you have this problem, set the @env{LANG}
 environment variable to @samp{C} or @samp{En_US}.
 
-@item
 @opindex fdollars-in-identifiers
+@item
 Even if you specify @option{-fdollars-in-identifiers},
 you cannot successfully use @samp{$} in identifiers on the RS/6000 due
 to a restriction in the IBM assembler.  GAS supports these
@@ -588,8 +588,8 @@ to update the corrected header files.  They can be updated using the
 @command{mkheaders} script installed in
 @file{@var{libexecdir}/gcc/@var{target}/@var{version}/install-tools/}.
 
-@item
 @cindex floating point precision
+@item
 On 68000 and x86 systems, for instance, you can get paradoxical results
 if you test the precise values of floating point numbers.  For example,
 you can find that a floating point value which is not a NaN is not equal
@@ -953,8 +953,8 @@ where the return value should never be ignored, use the
 @code{warn_unused_result} function attribute (@pxref{Function
 Attributes}).
 
-@item
 @opindex fshort-enums
+@item
 Making @option{-fshort-enums} the default.
 
 This would cause storage layout to be incompatible with most other C
@@ -1021,9 +1021,9 @@ to be considered in the future.
 explicitly in each bit-field whether it is signed or not.  In this way,
 they write programs which have the same meaning in both C dialects.)
 
-@item
 @opindex ansi
 @opindex std
+@item
 Undefining @code{__STDC__} when @option{-ansi} is not used.
 
 Currently, GCC defines @code{__STDC__} unconditionally.  This provides
diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
index 86d3f33cb40..5679e2f2650 100644
--- a/gcc/fortran/invoke.texi
+++ b/gcc/fortran/invoke.texi
@@ -214,11 +214,11 @@ accepted by the compiler:
 @table @gcctabopt
 @opindex @code{ffree-form}
 @opindex @code{ffixed-form}
+@cindex options, Fortran dialect
+@cindex file format, free
+@cindex file format, fixed
 @item -ffree-form
 @itemx -ffixed-form
-@cindex options, Fortran dialect
-@cindex file format, free
-@cindex file format, fixed
 Specify the layout used by the source file.  The free form layout
 was introduced in Fortran 90.  Fixed form was traditionally used in
 older Fortran programs.  When neither option is specified, the source
@@ -326,19 +326,19 @@ Enable a blank format item at the end of a format specification i.e. nothing
 following the final comma.
 
 @opindex @code{fdollar-ok}
-@item -fdollar-ok
 @cindex @code{$}
 @cindex symbol names
 @cindex character set
+@item -fdollar-ok
 Allow @samp{$} as a valid non-first character in a symbol name. Symbols 
 that start with @samp{$} are rejected since it is unclear which rules to
 apply to implicit typing as different vendors implement different rules.
 Using @samp{$} in @code{IMPLICIT} statements is also rejected.
 
 @opindex @code{backslash}
-@item -fbackslash
 @cindex backslash
 @cindex escape characters
+@item -fbackslash
 Change the interpretation of backslashes in string literals from a single
 backslash character to ``C-style'' escape characters. The following
 combinations are expanded @code{\a}, @code{\b}, @code{\f}, @code{\n},
@@ -352,16 +352,16 @@ points. All other combinations of a character preceded by \ are
 unexpanded.
 
 @opindex @code{fmodule-private}
-@item -fmodule-private
 @cindex module entities
 @cindex private
+@item -fmodule-private
 Set the default accessibility of module entities to @code{PRIVATE}.
 Use-associated entities will not be accessible unless they are explicitly
 declared as @code{PUBLIC}.
 
 @opindex @code{ffixed-line-length-}@var{n}
+@cindex file format, fixed
 @item -ffixed-line-length-@var{n}
-@cindex file format, fixed
 Set column after which characters are ignored in typical fixed-form
 lines in the source file, and, unless @code{-fno-pad-source}, through which
 spaces are assumed (as if padded to that length) after the ends of short
@@ -386,8 +386,8 @@ continued character constants never have implicit spaces appended
 to them to fill out the line.
 
 @opindex @code{ffree-line-length-}@var{n}
+@cindex file format, free
 @item -ffree-line-length-@var{n}
-@cindex file format, free
 Set column after which characters are ignored in typical free-form
 lines in the source file. The default value is 132.
 @var{n} may be @samp{none}, meaning that the entire line is meaningful.
@@ -411,8 +411,8 @@ Enable the Cray pointer extension, which provides C-like pointer
 functionality.
 
 @opindex @code{fopenacc}
-@item -fopenacc
 @cindex OpenACC
+@item -fopenacc
 Enable the OpenACC extensions.  This includes OpenACC @code{!$acc}
 directives in free form and @code{c$acc}, @code{*$acc} and
 @code{!$acc} directives in fixed form, @code{!$} conditional
@@ -421,8 +421,8 @@ compilation sentinels in free form and @code{c$}, @code{*$} and
 OpenACC runtime library to be linked in.
 
 @opindex @code{fopenmp}
-@item -fopenmp
 @cindex OpenMP
+@item -fopenmp
 Enable the OpenMP extensions.  This includes OpenMP @code{!$omp} directives
 in free form
 and @code{c$omp}, @code{*$omp} and @code{!$omp} directives in fixed form,
@@ -511,13 +511,13 @@ representation of the translated Fortran code, produced by
 @opindex @code{freal-8-real-4}
 @opindex @code{freal-8-real-10}
 @opindex @code{freal-8-real-16}
+@cindex options, real kind type promotion
 @item  -freal-4-real-8
 @itemx -freal-4-real-10
 @itemx -freal-4-real-16
 @itemx -freal-8-real-4
 @itemx -freal-8-real-10
 @itemx -freal-8-real-16
-@cindex options, real kind type promotion
 Promote all @code{REAL(KIND=M)} entities to @code{REAL(KIND=N)} entities.
 If @code{REAL(KIND=N)} is unavailable, then an error will be issued.
 The @code{-freal-4-} flags also affect the default real kind and the
@@ -614,10 +614,10 @@ The following options control preprocessing of Fortran code:
 @table @gcctabopt
 @opindex @code{cpp}
 @opindex @code{fpp}
-@item -cpp
-@itemx -nocpp
 @cindex preprocessor, enable
 @cindex preprocessor, disable
+@item -cpp
+@itemx -nocpp
 Enable preprocessing. The preprocessor is automatically invoked if
 the file extension is @file{.fpp}, @file{.FPP},  @file{.F}, @file{.FOR},
 @file{.FTN}, @file{.F90}, @file{.F95}, @file{.F03} or @file{.F08}. Use
@@ -633,9 +633,9 @@ preprocessed output as well, so it might be advisable to use the
 options.
 
 @opindex @code{dM}
+@cindex preprocessor, debugging
+@cindex debugging, preprocessor
 @item -dM
-@cindex preprocessor, debugging
-@cindex debugging, preprocessor
 Instead of the normal output, generate a list of @code{'#define'}
 directives for all the macros defined during the execution of the
 preprocessor, including predefined macros. This gives you a way
@@ -647,39 +647,39 @@ Assuming you have no file @file{foo.f90}, the command
 will show all the predefined macros.
 
 @opindex @code{dD}
+@cindex preprocessor, debugging
+@cindex debugging, preprocessor
 @item -dD
-@cindex preprocessor, debugging
-@cindex debugging, preprocessor
 Like @option{-dM} except in two respects: it does not include the
 predefined macros, and it outputs both the @code{#define} directives
 and the result of preprocessing. Both kinds of output go to the
 standard output file.
 
 @opindex @code{dN}
+@cindex preprocessor, debugging
+@cindex debugging, preprocessor
 @item -dN
-@cindex preprocessor, debugging
-@cindex debugging, preprocessor
 Like @option{-dD}, but emit only the macro names, not their expansions.
 
 @opindex @code{dU}
+@cindex preprocessor, debugging
+@cindex debugging, preprocessor
 @item -dU
-@cindex preprocessor, debugging
-@cindex debugging, preprocessor
 Like @option{dD} except that only macros that are expanded, or whose
 definedness is tested in preprocessor directives, are output; the 
 output is delayed until the use or test of the macro; and @code{'#undef'}
 directives are also output for macros tested but undefined at the time.
 
 @opindex @code{dI}
+@cindex preprocessor, debugging
+@cindex debugging, preprocessor
 @item -dI
-@cindex preprocessor, debugging
-@cindex debugging, preprocessor
 Output @code{'#include'} directives in addition to the result
 of preprocessing.
 
 @opindex @code{fworking-directory}
-@item -fworking-directory
 @cindex preprocessor, working directory
+@item -fworking-directory
 Enable generation of linemarkers in the preprocessor output that will
 let the compiler know the current working directory at the time of
 preprocessing. When this option is enabled, the preprocessor will emit,
@@ -694,8 +694,8 @@ in the command line, this option has no effect, since no @code{#line}
 directives are emitted whatsoever.
 
 @opindex @code{idirafter @var{dir}}
+@cindex preprocessing, include path
 @item -idirafter @var{dir}
-@cindex preprocessing, include path
 Search @var{dir} for include files, but do it after all directories
 specified with @option{-I} and the standard system directories have
 been exhausted. @var{dir} is treated as a system include directory.
@@ -703,27 +703,27 @@ If dir begins with @code{=}, then the @code{=} will be replaced by
 the sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
 
 @opindex @code{imultilib @var{dir}}
+@cindex preprocessing, include path
 @item -imultilib @var{dir}
-@cindex preprocessing, include path
 Use @var{dir} as a subdirectory of the directory containing target-specific
 C++ headers.
 
 @opindex @code{iprefix @var{prefix}}
+@cindex preprocessing, include path
 @item -iprefix @var{prefix}
-@cindex preprocessing, include path
 Specify @var{prefix} as the prefix for subsequent @option{-iwithprefix}
 options. If the @var{prefix} represents a directory, you should include
 the final @code{'/'}.
 
 @opindex @code{isysroot @var{dir}}
+@cindex preprocessing, include path
 @item -isysroot @var{dir}
-@cindex preprocessing, include path
 This option is like the @option{--sysroot} option, but applies only to
 header files. See the @option{--sysroot} option for more information.
 
 @opindex @code{iquote @var{dir}}
+@cindex preprocessing, include path
 @item -iquote @var{dir}
-@cindex preprocessing, include path
 Search @var{dir} only for header files requested with @code{#include "file"};
 they are not searched for @code{#include <file>}, before all directories
 specified by @option{-I} and before the standard system directories. If
@@ -731,8 +731,8 @@ specified by @option{-I} and before the standard system directories. If
 sysroot prefix; see @option{--sysroot} and @option{-isysroot}.
 
 @opindex @code{isystem @var{dir}}
+@cindex preprocessing, include path
 @item -isystem @var{dir}
-@cindex preprocessing, include path
 Search @var{dir} for header files, after all directories specified by
 @option{-I} but before the standard system directories. Mark it as a
 system directory, so that it gets the same special treatment as is
@@ -752,20 +752,20 @@ Do not predefine any system-specific or GCC-specific macros.
 The standard predefined macros remain defined.
 
 @opindex @code{A@var{predicate}=@var{answer}}
+@cindex preprocessing, assertion
 @item -A@var{predicate}=@var{answer}
-@cindex preprocessing, assertion
 Make an assertion with the predicate @var{predicate} and answer @var{answer}.
 This form is preferred to the older form -A predicate(answer), which is still
 supported, because it does not use shell special characters.
 
 @opindex @code{A-@var{predicate}=@var{answer}}
+@cindex preprocessing, assertion
 @item -A-@var{predicate}=@var{answer}
-@cindex preprocessing, assertion
 Cancel an assertion with the predicate @var{predicate} and answer @var{answer}.
 
 @opindex @code{C}
+@cindex preprocessing, keep comments
 @item -C
-@cindex preprocessing, keep comments
 Do not discard comments. All comments are passed through to the output
 file, except for comments in processed directives, which are deleted
 along with the directive.
@@ -780,8 +780,8 @@ Warning: this currently handles C-Style comments only. The preprocessor
 does not yet recognize Fortran-style comments.
 
 @opindex @code{CC}
+@cindex preprocessing, keep comments
 @item -CC
-@cindex preprocessing, keep comments
 Do not discard comments, including during macro expansion. This is like
 @option{-C}, except that comments contained within macros are also passed
 through to the output file where the macro is expanded.
@@ -796,13 +796,13 @@ Warning: this currently handles C- and C++-Style comments only. The
 preprocessor does not yet recognize Fortran-style comments.
 
 @opindex @code{D@var{name}}
+@cindex preprocessing, define macros
 @item -D@var{name}
-@cindex preprocessing, define macros
 Predefine name as a macro, with definition @code{1}.
 
 @opindex @code{D@var{name}=@var{definition}}
+@cindex preprocessing, define macros
 @item -D@var{name}=@var{definition}
-@cindex preprocessing, define macros
 The contents of @var{definition} are tokenized and processed as if they
 appeared during translation phase three in a @code{'#define'} directive.
 In particular, the definition will be truncated by embedded newline
@@ -829,16 +829,16 @@ activities. Each name is indented to show how deep in the @code{'#include'}
 stack it is.
 
 @opindex @code{P}
-@item -P
 @cindex preprocessing, no linemarkers
+@item -P
 Inhibit generation of linemarkers in the output from the preprocessor.
 This might be useful when running the preprocessor on something that
 is not C code, and will be sent to a program which might be confused
 by the linemarkers.
 
 @opindex @code{U@var{name}}
-@item -U@var{name}
 @cindex preprocessing, undefine macros
+@item -U@var{name}
 Cancel any previous definition of @var{name}, either built in or provided
 with a @option{-D} option.
 @end table
@@ -875,16 +875,16 @@ by GNU Fortran:
 
 @table @gcctabopt
 @opindex @code{fmax-errors=}@var{n}
-@item -fmax-errors=@var{n}
 @cindex errors, limiting
+@item -fmax-errors=@var{n}
 Limits the maximum number of error messages to @var{n}, at which point
 GNU Fortran bails out rather than attempting to continue processing the
 source code.  If @var{n} is 0, there is no limit on the number of error
 messages produced.
 
 @opindex @code{fsyntax-only}
-@item -fsyntax-only
 @cindex syntax checking
+@item -fsyntax-only
 Check the code for syntax errors, but do not actually compile it.  This
 will generate module files for each module present in the code, but no
 other output file.
@@ -918,9 +918,9 @@ Like @option{-pedantic}, except that errors are produced rather than
 warnings.
 
 @opindex @code{Wall}
-@item -Wall
 @cindex all warnings
 @cindex warnings, all
+@item -Wall
 Enables commonly used warning options pertaining to usage that
 we recommend avoiding and that we believe are easy to avoid.
 This currently includes @option{-Waliasing}, @option{-Wampersand},
@@ -931,9 +931,9 @@ This currently includes @option{-Waliasing}, @option{-Wampersand},
 and @option{-Wundefined-do-loop}.
 
 @opindex @code{Waliasing}
-@item -Waliasing
 @cindex aliasing
 @cindex warnings, aliasing
+@item -Waliasing
 Warn about possible aliasing of dummy arguments. Specifically, it warns
 if the same actual argument is associated with a dummy argument with
 @code{INTENT(IN)} and a dummy argument with @code{INTENT(OUT)} in a call
@@ -953,9 +953,9 @@ The following example will trigger the warning.
 @end smallexample
 
 @opindex @code{Wampersand}
-@item -Wampersand
 @cindex warnings, ampersand
 @cindex @code{&}
+@item -Wampersand
 Warn about missing ampersand in continued character constants. The
 warning is given with @option{-Wampersand}, @option{-pedantic},
 @option{-std=f95}, @option{-std=f2003}, @option{-std=f2008} and
@@ -965,15 +965,15 @@ non-comment, non-whitespace character after the ampersand that
 initiated the continuation.
 
 @opindex @code{Warray-temporaries}
-@item -Warray-temporaries
 @cindex warnings, array temporaries
+@item -Warray-temporaries
 Warn about array temporaries generated by the compiler.  The information
 generated by this warning is sometimes useful in optimization, in order to
 avoid such temporaries.
 
 @opindex @code{Wc-binding-type}
-@item -Wc-binding-type
 @cindex warning, C binding type
+@item -Wc-binding-type
 Warn if the a variable might not be C interoperable.  In particular, warn if 
 the variable has been declared using an intrinsic type with default kind
 instead of using a kind parameter defined for C interoperability in the
@@ -981,71 +981,71 @@ intrinsic @code{ISO_C_Binding} module.  This option is implied by
 @option{-Wall}.
 
 @opindex @code{Wcharacter-truncation}
-@item -Wcharacter-truncation
 @cindex warnings, character truncation
+@item -Wcharacter-truncation
 Warn when a character assignment will truncate the assigned string.
 
 @opindex @code{Wline-truncation}
-@item -Wline-truncation
 @cindex warnings, line truncation
+@item -Wline-truncation
 Warn when a source code line will be truncated.  This option is
 implied by @option{-Wall}.  For free-form source code, the default is
 @option{-Werror=line-truncation} such that truncations are reported as
 error.
 
 @opindex @code{Wconversion}
+@cindex warnings, conversion
+@cindex conversion
 @item -Wconversion
-@cindex warnings, conversion
-@cindex conversion
 Warn about implicit conversions that are likely to change the value of 
 the expression after conversion. Implied by @option{-Wall}.
 
 @opindex @code{Wconversion-extra}
+@cindex warnings, conversion
+@cindex conversion
 @item -Wconversion-extra
-@cindex warnings, conversion
-@cindex conversion
 Warn about implicit conversions between different types and kinds. This
 option does @emph{not} imply @option{-Wconversion}.
 
 @opindex @code{Wextra}
-@item -Wextra
 @cindex extra warnings
 @cindex warnings, extra
+@item -Wextra
 Enables some warning options for usages of language features which
 may be problematic. This currently includes @option{-Wcompare-reals},
 @option{-Wunused-parameter} and @option{-Wdo-subscript}.
 
 @opindex @code{Wfrontend-loop-interchange}
-@item -Wfrontend-loop-interchange
 @cindex warnings, loop interchange
 @cindex loop interchange, warning
+@item -Wfrontend-loop-interchange
 Warn when using @option{-ffrontend-loop-interchange} for performing loop
 interchanges.
 
 @opindex @code{Wimplicit-interface}
-@item -Wimplicit-interface
 @cindex warnings, implicit interface
+@item -Wimplicit-interface
 Warn if a procedure is called without an explicit interface.
 Note this only checks that an explicit interface is present.  It does not
 check that the declared interfaces are consistent across program units.
 
 @opindex @code{Wimplicit-procedure}
-@item -Wimplicit-procedure
 @cindex warnings, implicit procedure
+@item -Wimplicit-procedure
 Warn if a procedure is called that has neither an explicit interface
 nor has been declared as @code{EXTERNAL}.
 
 @opindex @code{Winteger-division}
-@item -Winteger-division
 @cindex warnings, integer division
 @cindex warnings, division of integers
+@item -Winteger-division
 Warn if a constant integer division truncates its result.
 As an example, 3/5 evaluates to 0.
 
 @opindex @code{Wintrinsics-std}
-@item -Wintrinsics-std
 @cindex warnings, non-standard intrinsics
 @cindex warnings, intrinsics of other standards
+@item -Wintrinsics-std
 Warn if @command{gfortran} finds a procedure named like an intrinsic not
 available in the currently selected standard (with @option{-std}) and treats
 it as @code{EXTERNAL} procedure because of this.  @option{-fall-intrinsics} can
@@ -1053,8 +1053,8 @@ be used to never trigger this behavior and always link to the intrinsic
 regardless of the selected standard.
 
 @opindex @code{Woverwrite-recursive}
-@item -Wno-overwrite-recursive
 @cindex  warnings, overwrite recursive
+@item -Wno-overwrite-recursive
 Do not warn when @option{-fno-automatic} is used with @option{-frecursive}. Recursion
 will be broken if the relevant local variables do not have the attribute
 @code{AUTOMATIC} explicitly declared. This option can be used to suppress the warning
@@ -1062,14 +1062,14 @@ when it is known that recursion is not broken. Useful for build environments tha
 @option{-Werror}.
 
 @opindex @code{Wreal-q-constant}
-@item -Wreal-q-constant
 @cindex warnings, @code{q} exponent-letter
+@item -Wreal-q-constant
 Produce a warning if a real-literal-constant contains a @code{q}
 exponent-letter.
 
 @opindex @code{Wsurprising}
-@item -Wsurprising
 @cindex warnings, suspicious code
+@item -Wsurprising
 Produce a warning when ``suspicious'' code constructs are encountered.
 While technically legal these usually indicate that an error has been made.
 
@@ -1100,9 +1100,9 @@ used in free-form source code, is diagnosed by default.)
 @end itemize
 
 @opindex @code{Wtabs}
-@item -Wtabs
 @cindex warnings, tabs
 @cindex tabulators
+@item -Wtabs
 By default, tabs are accepted as whitespace, but tabs are not members
 of the Fortran Character Set.  For continuation lines, a tab followed
 by a digit between 1 and 9 is supported.  @option{-Wtabs} will cause a
@@ -1112,46 +1112,46 @@ active for @option{-pedantic}, @option{-std=f95}, @option{-std=f2003},
 @option{-Wall}.
 
 @opindex @code{Wundefined-do-loop}
-@item -Wundefined-do-loop
 @cindex warnings, undefined do loop
+@item -Wundefined-do-loop
 Warn if a DO loop with step either 1 or -1 yields an underflow or an overflow
 during iteration of an induction variable of the loop.
 This option is implied by @option{-Wall}.
 
 @opindex @code{Wunderflow}
-@item -Wunderflow
 @cindex warnings, underflow
 @cindex underflow
+@item -Wunderflow
 Produce a warning when numerical constant expressions are
 encountered, which yield an UNDERFLOW during compilation. Enabled by default.
 
 @opindex @code{Wintrinsic-shadow}
-@item -Wintrinsic-shadow
 @cindex warnings, intrinsic
 @cindex intrinsic
+@item -Wintrinsic-shadow
 Warn if a user-defined procedure or module procedure has the same name as an
 intrinsic; in this case, an explicit interface or @code{EXTERNAL} or
 @code{INTRINSIC} declaration might be needed to get calls later resolved to
 the desired intrinsic/procedure.  This option is implied by @option{-Wall}.
 
 @opindex @code{Wuse-without-only}
-@item -Wuse-without-only
 @cindex warnings, use statements
 @cindex intrinsic
+@item -Wuse-without-only
 Warn if a @code{USE} statement has no @code{ONLY} qualifier and 
 thus implicitly imports all public entities of the used module.
 
 @opindex @code{Wunused-dummy-argument}
-@item -Wunused-dummy-argument
 @cindex warnings, unused dummy argument
 @cindex unused dummy argument
 @cindex dummy argument, unused
+@item -Wunused-dummy-argument
 Warn about unused dummy arguments. This option is implied by @option{-Wall}.
 
 @opindex @code{Wunused-parameter}
-@item -Wunused-parameter
 @cindex warnings, unused parameter
 @cindex unused parameter
+@item -Wunused-parameter
 Contrary to @command{gcc}'s meaning of @option{-Wunused-parameter},
 @command{gfortran}'s implementation of this option does not warn
 about unused dummy arguments (see @option{-Wunused-dummy-argument}),
@@ -1160,24 +1160,24 @@ is implied by @option{-Wextra} if also @option{-Wunused} or
 @option{-Wall} is used.
 
 @opindex @code{Walign-commons}
-@item -Walign-commons
 @cindex warnings, alignment of @code{COMMON} blocks
 @cindex alignment of @code{COMMON} blocks
+@item -Walign-commons
 By default, @command{gfortran} warns about any occasion of variables being
 padded for proper alignment inside a @code{COMMON} block. This warning can be turned
 off via @option{-Wno-align-commons}. See also @option{-falign-commons}.
 
 @opindex @code{Wfunction-elimination}
-@item -Wfunction-elimination
 @cindex function elimination
 @cindex warnings, function elimination
+@item -Wfunction-elimination
 Warn if any calls to impure functions are eliminated by the optimizations
 enabled by the @option{-ffrontend-optimize} option.
 This option is implied by @option{-Wextra}.
 
 @opindex @code{Wrealloc-lhs}
-@item -Wrealloc-lhs
 @cindex Reallocate the LHS in assignments, notification
+@item -Wrealloc-lhs
 Warn when the compiler might insert code to for allocation or reallocation of
 an allocatable array variable of intrinsic type in intrinsic assignments.  In
 hot loops, the Fortran 2003 reallocation feature may reduce the performance.
@@ -1224,8 +1224,8 @@ statement is actually executed, in cases like
 This option is implied by @option{-Wextra}.
 
 @opindex @code{Werror}
-@item -Werror
 @cindex warnings, to errors
+@item -Werror
 Turns all warnings into errors.
 @end table
 
@@ -1337,9 +1337,9 @@ last one will be used.
 By default, a summary for all exceptions but @samp{inexact} is shown.
 
 @opindex @code{fno-backtrace}
-@item -fno-backtrace
 @cindex backtrace
 @cindex trace
+@item -fno-backtrace
 When a serious runtime error is encountered or a deadly signal is
 emitted (segmentation fault, illegal instruction, bus error,
 floating-point exception, and the other POSIX signals that have the
@@ -1370,12 +1370,12 @@ Fortran source.
 
 @table @gcctabopt
 @opindex @code{I}@var{dir}
-@item -I@var{dir}
 @cindex directory, search paths for inclusion
 @cindex inclusion, directory search paths for
 @cindex search paths, for included files
 @cindex paths, search
 @cindex module search path
+@item -I@var{dir}
 These affect interpretation of the @code{INCLUDE} directive
 (as well as of the @code{#include} directive of the @command{cpp}
 preprocessor).
@@ -1394,9 +1394,9 @@ gcc,Using the GNU Compiler Collection (GCC)}, for information on the
 
 @opindex @code{J}@var{dir}
 @opindex @code{M}@var{dir}
+@cindex paths, search
+@cindex module search path
 @item -J@var{dir}
-@cindex paths, search
-@cindex module search path
 This option specifies where to put @file{.mod} files for compiled modules.
 It is also added to the list of directories to searched by an @code{USE}
 statement.
@@ -1404,9 +1404,9 @@ statement.
 The default is the current directory.
 
 @opindex @code{fintrinsic-modules-path} @var{dir}
+@cindex paths, search
+@cindex module search path
 @item -fintrinsic-modules-path @var{dir}
-@cindex paths, search
-@cindex module search path
 This option specifies the location of pre-compiled intrinsic modules, if
 they are not in the default location expected by the compiler.
 @end table
@@ -1515,9 +1515,9 @@ it.
 
 @table @gcctabopt
 @opindex @code{fno-automatic}
-@item -fno-automatic
 @cindex @code{SAVE} statement
 @cindex statement, @code{SAVE}
+@item -fno-automatic
 Treat each program unit (except those marked as RECURSIVE) as if the
 @code{SAVE} statement were specified for every local variable and array
 referenced in it. Does not affect common blocks. (Some Fortran compilers
@@ -1530,11 +1530,11 @@ Local variables or arrays having an explicit @code{SAVE} attribute are
 silently ignored unless the @option{-pedantic} option is added.
 
 @opindex ff2c
-@item -ff2c
 @cindex calling convention
 @cindex @command{f2c} calling convention
 @cindex @command{g77} calling convention
 @cindex libf2c calling convention
+@item -ff2c
 Generate code designed to be compatible with code generated
 by @command{g77} and @command{f2c}.
 
@@ -1564,11 +1564,11 @@ of type default @code{REAL} or @code{COMPLEX} as actual arguments, as
 the library implementations use the @option{-fno-f2c} calling conventions.
 
 @opindex @code{fno-underscoring}
+@cindex underscore
+@cindex symbol names, underscores
+@cindex transforming symbol names
+@cindex symbol names, transforming
 @item -fno-underscoring
-@cindex underscore
-@cindex symbol names, underscores
-@cindex transforming symbol names
-@cindex symbol names, transforming
 Do not transform names of entities specified in the Fortran
 source file by appending underscores to them.
 
@@ -1633,14 +1633,14 @@ prevent accidental linking between procedures with incompatible
 interfaces.
 
 @opindex @code{fsecond-underscore}
+@cindex underscore
+@cindex symbol names, underscores
+@cindex transforming symbol names
+@cindex symbol names, transforming
+@cindex @command{f2c} calling convention
+@cindex @command{g77} calling convention
+@cindex libf2c calling convention
 @item -fsecond-underscore
-@cindex underscore
-@cindex symbol names, underscores
-@cindex transforming symbol names
-@cindex symbol names, transforming
-@cindex @command{f2c} calling convention
-@cindex @command{g77} calling convention
-@cindex libf2c calling convention
 By default, GNU Fortran appends an underscore to external
 names.  If this option is used GNU Fortran appends two
 underscores to names with underscores and one underscore to external names
@@ -1658,8 +1658,8 @@ for compatibility with @command{g77} and @command{f2c}, and is implied
 by use of the @option{-ff2c} option.
 
 @opindex @code{fcoarray}
-@item -fcoarray=@var{<keyword>}
 @cindex coarrays
+@item -fcoarray=@var{<keyword>}
 
 @table @asis
 @item @samp{none}
@@ -1676,7 +1676,6 @@ library needs to be linked.
 
 
 @opindex @code{fcheck}
-@item -fcheck=@var{<keyword>}
 @cindex array, bounds checking
 @cindex bit intrinsics checking
 @cindex bounds checking
@@ -1687,6 +1686,7 @@ library needs to be linked.
 @cindex checking subscripts
 @cindex run-time checking
 @cindex checking array temporaries
+@item -fcheck=@var{<keyword>}
 
 Enable the generation of run-time checks; the argument shall be
 a comma-delimited list of the following keywords.  Prefixing a check with
@@ -1836,15 +1836,15 @@ by default at optimization level @option{-Ofast} unless
 @option{-fmax-stack-var-size} is specified.
 
 @opindex @code{fpack-derived}
-@item -fpack-derived
 @cindex structure packing
+@item -fpack-derived
 This option tells GNU Fortran to pack derived type members as closely as
 possible.  Code compiled with this option is likely to be incompatible
 with code compiled without this option, and may execute slower.
 
 @opindex @code{frepack-arrays}
-@item -frepack-arrays
 @cindex repacking arrays
+@item -frepack-arrays
 In some circumstances GNU Fortran may pass assumed shape array
 sections via a descriptor describing a noncontiguous area of memory.
 This option adds code to the function prologue to repack the data into
@@ -1986,8 +1986,8 @@ silence warnings that would have been emitted by @option{-Wuninitialized}
 for the affected local variables.
 
 @opindex @code{falign-commons}
+@cindex alignment of @code{COMMON} blocks
 @item -falign-commons
-@cindex alignment of @code{COMMON} blocks
 By default, @command{gfortran} enforces proper alignment of all variables in a
 @code{COMMON} block by padding them as needed. On certain platforms this is mandatory,
 on others it increases performance. If a @code{COMMON} block is not declared with
@@ -1998,8 +1998,8 @@ To avoid potential alignment issues in @code{COMMON} blocks, it is recommended t
 objects from largest to smallest.
 
 @opindex @code{fno-protect-parens}
-@item -fno-protect-parens
 @cindex re-association of parenthesized expressions
+@item -fno-protect-parens
 By default the parentheses in expression are honored for all optimization
 levels such that the compiler does not do any re-association. Using
 @option{-fno-protect-parens} allows the compiler to reorder @code{REAL} and
@@ -2009,16 +2009,16 @@ need to be in effect. The parentheses protection is enabled by default, unless
 @option{-Ofast} is given.
 
 @opindex @code{frealloc-lhs}
-@item -frealloc-lhs
 @cindex Reallocate the LHS in assignments
+@item -frealloc-lhs
 An allocatable left-hand side of an intrinsic assignment is automatically
 (re)allocated if it is either unallocated or has a different shape. The
 option is enabled by default except when @option{-std=f95} is given. See
 also @option{-Wrealloc-lhs}.
 
 @opindex @code{faggressive-function-elimination}
-@item -faggressive-function-elimination
 @cindex Elimination of functions with identical argument lists
+@item -faggressive-function-elimination
 Functions with identical argument lists are eliminated within
 statements, regardless of whether these functions are marked
 @code{PURE} or not. For example, in
@@ -2029,8 +2029,8 @@ there will only be a single call to @code{f}.  This option only works
 if @option{-ffrontend-optimize} is in effect.
 
 @opindex @code{frontend-optimize}
-@item -ffrontend-optimize
 @cindex Front-end optimization
+@item -ffrontend-optimize
 This option performs front-end optimization, based on manipulating
 parts the Fortran parse tree.  Enabled by default by any @option{-O} option
 except @option{-O0} and @option{-Og}.  Optimizations enabled by this option
@@ -2045,8 +2045,8 @@ include:
 It can be deselected by specifying @option{-fno-frontend-optimize}.
 
 @opindex @code{frontend-loop-interchange}
-@item -ffrontend-loop-interchange
 @cindex loop interchange, Fortran
+@item -ffrontend-loop-interchange
 Attempt to interchange loops in the Fortran front end where
 profitable.  Enabled by default by any @option{-O} option.
 At the moment, this option only affects @code{FORALL} and
@@ -2066,8 +2066,8 @@ shared by @command{gfortran}, @command{gcc}, and other GNU compilers.
 @table @asis
 
 @opindex @code{c-prototypes}
-@item -fc-prototypes
 @cindex Generating C prototypes from Fortran BIND(C) enteties
+@item -fc-prototypes
 This option will generate C prototypes from @code{BIND(C)} variable
 declarations, types and procedure interfaces and writes them to
 standard output.  @code{ENUM} is not yet supported.
@@ -2088,8 +2088,8 @@ where the C code intended for interoperating with the Fortran code
 then  uses @code{#include "foo.h"}.
 
 @opindex @code{c-prototypes-external}
-@item -fc-prototypes-external
 @cindex Generating C prototypes from external procedures
+@item -fc-prototypes-external
 This option will generate C prototypes from external functions and
 subroutines and write them to standard output.  This may be useful for
 making sure that C bindings to Fortran code are correct.  This option
diff --git a/gcc/go/gccgo.texi b/gcc/go/gccgo.texi
index b540957b985..4ab1a76818f 100644
--- a/gcc/go/gccgo.texi
+++ b/gcc/go/gccgo.texi
@@ -152,18 +152,18 @@ program will generally cause it to misbehave or fail.
 @c man begin OPTIONS gccgo
 
 @table @gcctabopt
-@item -I@var{dir}
 @cindex @option{-I}
+@item -I@var{dir}
 Specify a directory to use when searching for an import package at
 compile time.
 
-@item -L@var{dir}
 @cindex @option{-L}
+@item -L@var{dir}
 When linking, specify a library search directory, as with
 @command{gcc}.
 
-@item -fgo-pkgpath=@var{string}
 @cindex @option{-fgo-pkgpath}
+@item -fgo-pkgpath=@var{string}
 Set the package path to use.  This sets the value returned by the
 PkgPath method of reflect.Type objects.  It is also used for the names
 of globally visible symbols.  The argument to this option should
@@ -171,8 +171,8 @@ normally be the string that will be used to import this package after
 it has been installed; in other words, a pathname within the
 directories specified by the @option{-I} option.
 
-@item -fgo-prefix=@var{string}
 @cindex @option{-fgo-prefix}
+@item -fgo-prefix=@var{string}
 An alternative to @option{-fgo-pkgpath}.  The argument will be
 combined with the package name from the source file to produce the
 package path.  If @option{-fgo-pkgpath} is used, @option{-fgo-prefix}
@@ -189,24 +189,24 @@ Using either @option{-fgo-pkgpath} or @option{-fgo-prefix} disables
 the special treatment of the @code{main} package and permits that
 package to be imported like any other.
 
-@item -fgo-relative-import-path=@var{dir}
 @cindex @option{-fgo-relative-import-path}
+@item -fgo-relative-import-path=@var{dir}
 A relative import is an import that starts with @file{./} or
 @file{../}.  If this option is used, @command{gccgo} will use
 @var{dir} as a prefix for the relative import when searching for it.
 
-@item -frequire-return-statement
-@itemx -fno-require-return-statement
 @cindex @option{-frequire-return-statement}
 @cindex @option{-fno-require-return-statement}
+@item -frequire-return-statement
+@itemx -fno-require-return-statement
 By default @command{gccgo} will warn about functions which have one or
 more return parameters but lack an explicit @code{return} statement.
 This warning may be disabled using
 @option{-fno-require-return-statement}.
 
-@item -fgo-check-divide-zero
 @cindex @option{-fgo-check-divide-zero}
 @cindex @option{-fno-go-check-divide-zero}
+@item -fgo-check-divide-zero
 Add explicit checks for division by zero.  In Go a division (or
 modulos) by zero causes a panic.  On Unix systems this is detected in
 the runtime by catching the @code{SIGFPE} signal.  Some processors,
@@ -217,9 +217,9 @@ systems, this option may be used.  Or the checks may be removed via
 default, but in the future may be off by default on systems that do
 not require it.
 
-@item -fgo-check-divide-overflow
 @cindex @option{-fgo-check-divide-overflow}
 @cindex @option{-fno-go-check-divide-overflow}
+@item -fgo-check-divide-overflow
 Add explicit checks for division overflow.  For example, division
 overflow occurs when computing @code{INT_MIN / -1}.  In Go this should
 be wrapped, to produce @code{INT_MIN}.  Some processors, such as x86,
@@ -229,41 +229,41 @@ may be used.  Or the checks may be removed via
 by default, but in the future may be off by default on systems that do
 not require it.
 
-@item -fno-go-optimize-allocs
 @cindex @option{-fno-go-optimize-allocs}
+@item -fno-go-optimize-allocs
 Disable escape analysis, which tries to allocate objects on the stack
 rather than the heap.
 
-@item -fgo-debug-escape@var{n}
 @cindex @option{-fgo-debug-escape}
+@item -fgo-debug-escape@var{n}
 Output escape analysis debugging information.  Larger values of
 @var{n} generate more information.
 
-@item -fgo-debug-escape-hash=@var{n}
 @cindex @option{-fgo-debug-escape-hash}
+@item -fgo-debug-escape-hash=@var{n}
 A hash value to debug escape analysis.  @var{n} is a binary string.
 This runs escape analysis only on functions whose names hash to values
 that match the given suffix @var{n}.  This can be used to binary
 search across functions to uncover escape analysis bugs.
 
-@item -fgo-debug-optimization
 @cindex @option{-fgo-debug-optimization}
 @cindex @option{-fno-go-debug-optimization}
+@item -fgo-debug-optimization
 Output optimization diagnostics.
 
-@item -fgo-c-header=@var{file}
 @cindex @option{-fgo-c-header}
+@item -fgo-c-header=@var{file}
 Write top-level named Go struct definitions to @var{file} as C code.
 This is used when compiling the runtime package.
 
-@item -fgo-compiling-runtime
 @cindex @option{-fgo-compiling-runtime}
+@item -fgo-compiling-runtime
 Apply special rules for compiling the runtime package.  Implicit
 memory allocation is forbidden.  Some additional compiler directives
 are supported.
 
-@item -fgo-embedcfg=@var{file}
 @cindex @option{-fgo-embedcfg}
+@item -fgo-embedcfg=@var{file}
 Identify a JSON file used to map patterns used with special
 @code{//go:embed} comments to the files named by the patterns.  The
 JSON file should have two components: @code{Patterns} maps each
@@ -271,8 +271,8 @@ pattern to a list of file names, and @code{Files} maps each file name
 to a full path to the file.  This option is intended for use by the
 @command{go} command to implement @code{//go:embed}.
 
-@item -g
 @cindex @option{-g for gccgo}
+@item -g
 This is the standard @command{gcc} option (@pxref{Debugging Options, ,
 Debugging Options, gcc, Using the GNU Compiler Collection (GCC)}).  It
 is mentioned here because by default @command{gccgo} turns on
-- 
2.39.2


^ permalink raw reply	[flat|nested] 59+ messages in thread

* [PATCH v2 3/5] doc: Add @defbuiltin family of helpers, set documentlanguage
  2023-02-23 10:27 [PATCH v2 0/5] A small Texinfo refinement Arsen Arsenović
  2023-02-23 10:27 ` [PATCH v2 1/5] docs: Create Indices appendix Arsen Arsenović
  2023-02-23 10:27 ` [PATCH v2 2/5] **/*.texi: Reorder index entries Arsen Arsenović
@ 2023-02-23 10:27 ` Arsen Arsenović
  2023-03-09 23:50   ` Sandra Loosemore
  2023-02-23 10:27 ` [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias Arsen Arsenović
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-02-23 10:27 UTC (permalink / raw)
  To: gcc-patches
  Cc: Gerald Pfeifer, Joseph Myers, Sandra Loosemore, Arsen Arsenović

The @defbuiltin{,x} macros are convenience macros for the often-repeated
task of defining a built-in function in extend.texi.  Usage of this
macro should lead to a higher degree of consistency across pieces of
text written by different people, and provide a better reading
experience, as they prevent easy-to-make errors, like forgetting index
entries for these functions.

The documentlanguage omission was spotted by one of the people I asked
to "test drive" the updated manual, and so, it was added accordingly.

gcc/ChangeLog:

	* doc/gcc.texi: Set document language to en_US.
	(@copying): Wrap cover tests @quotation, move description of
	manual in.
	* doc/include/gcc-common.texi: Add @defbuiltin(x), @enddefbuiltin
	for defining built-in functions.
	* doc/extend.texi: Fix copyright notice comment, switch to using
	@defbuiltin for built-in function definitions.
	(Object Size Checking): Add subsubsection for formatted output
	function (printf et al.) checking.
---
 gcc/doc/extend.texi             | 1560 +++++++++++++++----------------
 gcc/doc/gcc.texi                |    5 +-
 gcc/doc/include/gcc-common.texi |   16 +
 3 files changed, 798 insertions(+), 783 deletions(-)

diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 0e11e43536c..e8bacefb69e 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -1,4 +1,4 @@
-c Copyright (C) 1988-2023 Free Software Foundation, Inc.
+@c Copyright (C) 1988-2023 Free Software Foundation, Inc.
 
 @c This is part of the GCC manual.
 @c For copying conditions, see the file gcc.texi.
@@ -585,14 +585,14 @@ built-in functions as:
 intptr_t @var{buf}[5];
 @end smallexample
 
-@deftypefn {Built-in Function} {int} __builtin_setjmp (intptr_t *@var{buf})
+@defbuiltin{{int} __builtin_setjmp (intptr_t *@var{buf})}
 This function saves the current stack context in @var{buf}.  
 @code{__builtin_setjmp} returns 0 when returning directly,
 and 1 when returning from @code{__builtin_longjmp} using the same
 @var{buf}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void} __builtin_longjmp (intptr_t *@var{buf}, int @var{val})
+@defbuiltin{{void} __builtin_longjmp (intptr_t *@var{buf}, int @var{val})}
 This function restores the stack context in @var{buf}, 
 saved by a previous call to @code{__builtin_setjmp}.  After
 @code{__builtin_longjmp} is finished, the program resumes execution as
@@ -604,7 +604,7 @@ mechanism to restore the stack context, it cannot be called
 from the same function calling @code{__builtin_setjmp} to
 initialize @var{buf}.  It can only be called from a function called
 (directly or indirectly) from the function calling @code{__builtin_setjmp}.
-@end deftypefn
+@enddefbuiltin
 
 @node Constructing Calls
 @section Constructing Function Calls
@@ -626,7 +626,7 @@ sophisticated features or other extensions of the language.  It
 is, therefore, not recommended to use them outside very simple
 functions acting as mere forwarders for their arguments.
 
-@deftypefn {Built-in Function} {void *} __builtin_apply_args ()
+@defbuiltin{{void *} __builtin_apply_args ()}
 This built-in function returns a pointer to data
 describing how to perform a call with the same arguments as are passed
 to the current function.
@@ -635,9 +635,9 @@ The function saves the arg pointer register, structure value address,
 and all registers that might be used to pass arguments to a function
 into a block of memory allocated on the stack.  Then it returns the
 address of that block.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void *} __builtin_apply (void (*@var{function})(), void *@var{arguments}, size_t @var{size})
+@defbuiltin{{void *} __builtin_apply (void (*@var{function})(), void *@var{arguments}, size_t @var{size})}
 This built-in function invokes @var{function}
 with a copy of the parameters described by @var{arguments}
 and @var{size}.
@@ -654,15 +654,15 @@ It is not always simple to compute the proper value for @var{size}.  The
 value is used by @code{__builtin_apply} to compute the amount of data
 that should be pushed on the stack and copied from the incoming argument
 area.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void} __builtin_return (void *@var{result})
+@defbuiltin{{void} __builtin_return (void *@var{result})}
 This built-in function returns the value described by @var{result} from
 the containing function.  You should specify, for @var{result}, a value
 returned by @code{__builtin_apply}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {} __builtin_va_arg_pack ()
+@defbuiltin{{} __builtin_va_arg_pack ()}
 This built-in function represents all anonymous arguments of an inline
 function.  It can be used only in inline functions that are always
 inlined, never compiled as a separate function, such as those using
@@ -686,9 +686,9 @@ myprintf (FILE *f, const char *format, ...)
   return r + s;
 @}
 @end smallexample
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {int} __builtin_va_arg_pack_len ()
+@defbuiltin{int __builtin_va_arg_pack_len ()}
 This built-in function returns the number of anonymous arguments of
 an inline function.  It can be used only in inline functions that
 are always inlined, never compiled as a separate function, such
@@ -721,7 +721,7 @@ myopen (const char *path, int oflag, ...)
 @}
 #endif
 @end smallexample
-@end deftypefn
+@enddefbuiltin
 
 @node Typeof
 @section Referring to a Type with @code{typeof}
@@ -1048,7 +1048,7 @@ If the variable's actual name is @code{foo}, the two fictitious
 variables are named @code{foo$real} and @code{foo$imag}.  You can
 examine and set these two fictitious variables with your debugger.
 
-@deftypefn {Built-in Function} @var{type} __builtin_complex (@var{real}, @var{imag})
+@defbuiltin{@var{type} __builtin_complex (@var{real}, @var{imag})}
 
 The built-in function @code{__builtin_complex} is provided for use in
 implementing the ISO C11 macros @code{CMPLXF}, @code{CMPLX} and
@@ -1058,7 +1058,7 @@ complex type with real and imaginary parts @var{real} and @var{imag}.
 Unlike @samp{@var{real} + I * @var{imag}}, this works even when
 infinities, NaNs and negative zeros are involved.
 
-@end deftypefn
+@enddefbuiltin
 
 @node Floating Types
 @section Additional Floating Types
@@ -11855,7 +11855,7 @@ literals.
 These functions may be used to get information about the callers of a
 function.
 
-@deftypefn {Built-in Function} {void *} __builtin_return_address (unsigned int @var{level})
+@defbuiltin{{void *} __builtin_return_address (unsigned int @var{level})}
 This function returns the return address of the current function, or of
 one of its callers.  The @var{level} argument is number of frames to
 scan up the call stack.  A value of @code{0} yields the return address
@@ -11894,9 +11894,9 @@ void *addr = __builtin_extract_return_addr (__builtin_return_address (0));
 gives the code address where the current function would return.  For example,
 such an address may be used with @code{dladdr} or other interfaces that work
 with code addresses.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void *} __builtin_extract_return_addr (void *@var{addr})
+@defbuiltin{{void *} __builtin_extract_return_addr (void *@var{addr})}
 The address as returned by @code{__builtin_return_address} may have to be fed
 through this function to get the actual encoded address.  For example, on the
 31-bit S/390 platform the highest bit has to be masked out, or on SPARC
@@ -11904,13 +11904,13 @@ platforms an offset has to be added for the true next instruction to be
 executed.
 
 If no fixup is needed, this function simply passes through @var{addr}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void *} __builtin_frob_return_addr (void *@var{addr})
+@defbuiltin{{void *} __builtin_frob_return_addr (void *@var{addr})}
 This function does the reverse of @code{__builtin_extract_return_addr}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void *} __builtin_frame_address (unsigned int @var{level})
+@defbuiltin{{void *} __builtin_frame_address (unsigned int @var{level})}
 This function is similar to @code{__builtin_return_address}, but it
 returns the address of the function frame rather than the return address
 of the function.  Calling @code{__builtin_frame_address} with a value of
@@ -11936,7 +11936,7 @@ effects, including crashing the calling program.  As a result, calls
 that are considered unsafe are diagnosed when the @option{-Wframe-address}
 option is in effect.  Such calls should only be made in debugging
 situations.
-@end deftypefn
+@enddefbuiltin
 
 @node Vector Extensions
 @section Using Vector Instructions through Built-in Functions
@@ -12289,19 +12289,12 @@ variables to be protected.  The list is ignored by GCC which treats it as
 empty.  GCC interprets an empty list as meaning that all globally
 accessible variables should be protected.
 
-@table @code
-@item @var{type} __sync_fetch_and_add (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_fetch_and_sub (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_fetch_and_or (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_fetch_and_and (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_fetch_and_xor (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_fetch_and_nand (@var{type} *ptr, @var{type} value, ...)
-@findex __sync_fetch_and_add
-@findex __sync_fetch_and_sub
-@findex __sync_fetch_and_or
-@findex __sync_fetch_and_and
-@findex __sync_fetch_and_xor
-@findex __sync_fetch_and_nand
+@defbuiltin{@var{type} __sync_fetch_and_add (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_fetch_and_sub (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_fetch_and_or (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_fetch_and_and (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_fetch_and_xor (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_fetch_and_nand (@var{type} *ptr, @var{type} value, ...)}
 These built-in functions perform the operation suggested by the name, and
 returns the value that had previously been in memory.  That is, operations
 on integer operands have the following semantics.  Operations on pointer
@@ -12319,19 +12312,15 @@ type.  It must not be a boolean type.
 
 @emph{Note:} GCC 4.4 and later implement @code{__sync_fetch_and_nand}
 as @code{*ptr = ~(tmp & value)} instead of @code{*ptr = ~tmp & value}.
+@enddefbuiltin
 
-@item @var{type} __sync_add_and_fetch (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_sub_and_fetch (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_or_and_fetch (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_and_and_fetch (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_xor_and_fetch (@var{type} *ptr, @var{type} value, ...)
-@itemx @var{type} __sync_nand_and_fetch (@var{type} *ptr, @var{type} value, ...)
-@findex __sync_add_and_fetch
-@findex __sync_sub_and_fetch
-@findex __sync_or_and_fetch
-@findex __sync_and_and_fetch
-@findex __sync_xor_and_fetch
-@findex __sync_nand_and_fetch
+@defbuiltin{@var{type} __sync_add_and_fetch (@var{type} *ptr, @
+                                             @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_sub_and_fetch (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_or_and_fetch (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_and_and_fetch (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_xor_and_fetch (@var{type} *ptr, @var{type} value, ...)}
+@defbuiltinx{@var{type} __sync_nand_and_fetch (@var{type} *ptr, @var{type} value, ...)}
 These built-in functions perform the operation suggested by the name, and
 return the new value.  That is, operations on integer operands have
 the following semantics.  Operations on pointer operands are performed as
@@ -12348,11 +12337,10 @@ The same constraints on arguments apply as for the corresponding
 @emph{Note:} GCC 4.4 and later implement @code{__sync_nand_and_fetch}
 as @code{*ptr = ~(*ptr & value)} instead of
 @code{*ptr = ~*ptr & value}.
+@enddefbuiltin
 
-@item bool __sync_bool_compare_and_swap (@var{type} *ptr, @var{type} oldval, @var{type} newval, ...)
-@itemx @var{type} __sync_val_compare_and_swap (@var{type} *ptr, @var{type} oldval, @var{type} newval, ...)
-@findex __sync_bool_compare_and_swap
-@findex __sync_val_compare_and_swap
+@defbuiltin{bool __sync_bool_compare_and_swap (@var{type} *ptr, @var{type} oldval, @var{type} newval, ...)}
+@defbuiltinx{@var{type} __sync_val_compare_and_swap (@var{type} *ptr, @var{type} oldval, @var{type} newval, ...)}
 These built-in functions perform an atomic compare and swap.
 That is, if the current
 value of @code{*@var{ptr}} is @var{oldval}, then write @var{newval} into
@@ -12361,13 +12349,13 @@ value of @code{*@var{ptr}} is @var{oldval}, then write @var{newval} into
 The ``bool'' version returns @code{true} if the comparison is successful and
 @var{newval} is written.  The ``val'' version returns the contents
 of @code{*@var{ptr}} before the operation.
+@enddefbuiltin
 
-@item __sync_synchronize (...)
-@findex __sync_synchronize
+@defbuiltin{void __sync_synchronize (...)}
 This built-in function issues a full memory barrier.
+@enddefbuiltin
 
-@item @var{type} __sync_lock_test_and_set (@var{type} *ptr, @var{type} value, ...)
-@findex __sync_lock_test_and_set
+@defbuiltin{@var{type} __sync_lock_test_and_set (@var{type} *ptr, @var{type} value, ...)}
 This built-in function, as described by Intel, is not a traditional test-and-set
 operation, but rather an atomic exchange operation.  It writes @var{value}
 into @code{*@var{ptr}}, and returns the previous contents of
@@ -12385,9 +12373,9 @@ This means that references after the operation cannot move to (or be
 speculated to) before the operation, but previous memory stores may not
 be globally visible yet, and previous memory loads may not yet be
 satisfied.
+@enddefbuiltin
 
-@item void __sync_lock_release (@var{type} *ptr, ...)
-@findex __sync_lock_release
+@defbuiltin{void __sync_lock_release (@var{type} *ptr, ...)}
 This built-in function releases the lock acquired by
 @code{__sync_lock_test_and_set}.
 Normally this means writing the constant 0 to @code{*@var{ptr}}.
@@ -12397,7 +12385,7 @@ but rather a @dfn{release barrier}.
 This means that all previous memory stores are globally visible, and all
 previous memory loads have been satisfied, but following memory reads
 are not prevented from being speculated to before the barrier.
-@end table
+@enddefbuiltin
 
 @node __atomic Builtins
 @section Built-in Functions for Memory Model Aware Atomic Operations
@@ -12504,7 +12492,7 @@ reserved for the memory order.  The remainder of the signed int is reserved
 for target use and should be 0.  Use of the predefined atomic values
 ensures proper usage.
 
-@deftypefn {Built-in Function} @var{type} __atomic_load_n (@var{type} *ptr, int memorder)
+@defbuiltin{@var{type} __atomic_load_n (@var{type} *ptr, int memorder)}
 This built-in function implements an atomic load operation.  It returns the
 contents of @code{*@var{ptr}}.
 
@@ -12512,46 +12500,46 @@ The valid memory order variants are
 @code{__ATOMIC_RELAXED}, @code{__ATOMIC_SEQ_CST}, @code{__ATOMIC_ACQUIRE},
 and @code{__ATOMIC_CONSUME}.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __atomic_load (@var{type} *ptr, @var{type} *ret, int memorder)
+@defbuiltin{void __atomic_load (@var{type} *ptr, @var{type} *ret, int memorder)}
 This is the generic version of an atomic load.  It returns the
 contents of @code{*@var{ptr}} in @code{*@var{ret}}.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __atomic_store_n (@var{type} *ptr, @var{type} val, int memorder)
+@defbuiltin{void __atomic_store_n (@var{type} *ptr, @var{type} val, int memorder)}
 This built-in function implements an atomic store operation.  It writes 
 @code{@var{val}} into @code{*@var{ptr}}.  
 
 The valid memory order variants are
 @code{__ATOMIC_RELAXED}, @code{__ATOMIC_SEQ_CST}, and @code{__ATOMIC_RELEASE}.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __atomic_store (@var{type} *ptr, @var{type} *val, int memorder)
+@defbuiltin{void __atomic_store (@var{type} *ptr, @var{type} *val, int memorder)}
 This is the generic version of an atomic store.  It stores the value
 of @code{*@var{val}} into @code{*@var{ptr}}.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __atomic_exchange_n (@var{type} *ptr, @var{type} val, int memorder)
+@defbuiltin{@var{type} __atomic_exchange_n (@var{type} *ptr, @var{type} val, int memorder)}
 This built-in function implements an atomic exchange operation.  It writes
 @var{val} into @code{*@var{ptr}}, and returns the previous contents of
 @code{*@var{ptr}}.
 
 All memory order variants are valid.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __atomic_exchange (@var{type} *ptr, @var{type} *val, @var{type} *ret, int memorder)
+@defbuiltin{void __atomic_exchange (@var{type} *ptr, @var{type} *val, @var{type} *ret, int memorder)}
 This is the generic version of an atomic exchange.  It stores the
 contents of @code{*@var{val}} into @code{*@var{ptr}}. The original value
 of @code{*@var{ptr}} is copied into @code{*@var{ret}}.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __atomic_compare_exchange_n (@var{type} *ptr, @var{type} *expected, @var{type} desired, bool weak, int success_memorder, int failure_memorder)
+@defbuiltin{bool __atomic_compare_exchange_n (@var{type} *ptr, @var{type} *expected, @var{type} desired, bool weak, int success_memorder, int failure_memorder)}
 This built-in function implements an atomic compare and exchange operation.
 This compares the contents of @code{*@var{ptr}} with the contents of
 @code{*@var{expected}}. If equal, the operation is a @emph{read-modify-write}
@@ -12573,22 +12561,22 @@ to @var{failure_memorder}. This memory order cannot be
 @code{__ATOMIC_RELEASE} nor @code{__ATOMIC_ACQ_REL}.  It also cannot be a
 stronger order than that specified by @var{success_memorder}.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __atomic_compare_exchange (@var{type} *ptr, @var{type} *expected, @var{type} *desired, bool weak, int success_memorder, int failure_memorder)
+@defbuiltin{bool __atomic_compare_exchange (@var{type} *ptr, @var{type} *expected, @var{type} *desired, bool weak, int success_memorder, int failure_memorder)}
 This built-in function implements the generic version of
 @code{__atomic_compare_exchange}.  The function is virtually identical to
 @code{__atomic_compare_exchange_n}, except the desired value is also a
 pointer.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __atomic_add_fetch (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_sub_fetch (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_and_fetch (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_xor_fetch (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_or_fetch (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_nand_fetch (@var{type} *ptr, @var{type} val, int memorder)
+@defbuiltin{@var{type} __atomic_add_fetch (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_sub_fetch (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_and_fetch (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_xor_fetch (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_or_fetch (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_nand_fetch (@var{type} *ptr, @var{type} val, int memorder)}
 These built-in functions perform the operation suggested by the name, and
 return the result of the operation.  Operations on pointer arguments are
 performed as if the operands were of the @code{uintptr_t} type.  That is,
@@ -12602,14 +12590,14 @@ they are not scaled by the size of the type to which the pointer points.
 The object pointed to by the first argument must be of integer or pointer
 type.  It must not be a boolean type.  All memory orders are valid.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __atomic_fetch_add (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_fetch_sub (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_fetch_and (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_fetch_xor (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_fetch_or (@var{type} *ptr, @var{type} val, int memorder)
-@deftypefnx {Built-in Function} @var{type} __atomic_fetch_nand (@var{type} *ptr, @var{type} val, int memorder)
+@defbuiltin{@var{type} __atomic_fetch_add (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_fetch_sub (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_fetch_and (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_fetch_xor (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_fetch_or (@var{type} *ptr, @var{type} val, int memorder)}
+@defbuiltinx{@var{type} __atomic_fetch_nand (@var{type} *ptr, @var{type} val, int memorder)}
 These built-in functions perform the operation suggested by the name, and
 return the value that had previously been in @code{*@var{ptr}}.  Operations
 on pointer arguments are performed as if the operands were of
@@ -12624,9 +12612,9 @@ the type to which the pointer points.
 The same constraints on arguments apply as for the corresponding
 @code{__atomic_op_fetch} built-in functions.  All memory orders are valid.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __atomic_test_and_set (void *ptr, int memorder)
+@defbuiltin{bool __atomic_test_and_set (void *ptr, int memorder)}
 
 This built-in function performs an atomic test-and-set operation on
 the byte at @code{*@var{ptr}}.  The byte is set to some implementation
@@ -12637,9 +12625,9 @@ other types only part of the value may be set.
 
 All memory orders are valid.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __atomic_clear (bool *ptr, int memorder)
+@defbuiltin{void __atomic_clear (bool *ptr, int memorder)}
 
 This built-in function performs an atomic clear operation on
 @code{*@var{ptr}}.  After the operation, @code{*@var{ptr}} contains 0.
@@ -12652,27 +12640,27 @@ The valid memory order variants are
 @code{__ATOMIC_RELAXED}, @code{__ATOMIC_SEQ_CST}, and
 @code{__ATOMIC_RELEASE}.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __atomic_thread_fence (int memorder)
+@defbuiltin{void __atomic_thread_fence (int memorder)}
 
 This built-in function acts as a synchronization fence between threads
 based on the specified memory order.
 
 All memory orders are valid.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __atomic_signal_fence (int memorder)
+@defbuiltin{void __atomic_signal_fence (int memorder)}
 
 This built-in function acts as a synchronization fence between a thread
 and signal handlers based in the same thread.
 
 All memory orders are valid.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __atomic_always_lock_free (size_t size,  void *ptr)
+@defbuiltin{bool __atomic_always_lock_free (size_t size,  void *ptr)}
 
 This built-in function returns @code{true} if objects of @var{size} bytes always
 generate lock-free atomic instructions for the target architecture.
@@ -12687,9 +12675,9 @@ compiler may also ignore this parameter.
 if (__atomic_always_lock_free (sizeof (long long), 0))
 @end smallexample
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __atomic_is_lock_free (size_t size, void *ptr)
+@defbuiltin{bool __atomic_is_lock_free (size_t size, void *ptr)}
 
 This built-in function returns @code{true} if objects of @var{size} bytes always
 generate lock-free atomic instructions for the target architecture.  If
@@ -12699,7 +12687,7 @@ runtime routine named @code{__atomic_is_lock_free}.
 @var{ptr} is an optional pointer to the object that may be used to determine
 alignment.  A value of 0 indicates typical alignment should be used.  The 
 compiler may also ignore this parameter.
-@end deftypefn
+@enddefbuiltin
 
 @node Integer Overflow Builtins
 @section Built-in Functions to Perform Arithmetic with Overflow Checking
@@ -12707,13 +12695,13 @@ compiler may also ignore this parameter.
 The following built-in functions allow performing simple arithmetic operations
 together with checking whether the operations overflowed.
 
-@deftypefn {Built-in Function} bool __builtin_add_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
-@deftypefnx {Built-in Function} bool __builtin_sadd_overflow (int a, int b, int *res)
-@deftypefnx {Built-in Function} bool __builtin_saddl_overflow (long int a, long int b, long int *res)
-@deftypefnx {Built-in Function} bool __builtin_saddll_overflow (long long int a, long long int b, long long int *res)
-@deftypefnx {Built-in Function} bool __builtin_uadd_overflow (unsigned int a, unsigned int b, unsigned int *res)
-@deftypefnx {Built-in Function} bool __builtin_uaddl_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
-@deftypefnx {Built-in Function} bool __builtin_uaddll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)
+@defbuiltin{bool __builtin_add_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)}
+@defbuiltinx{bool __builtin_sadd_overflow (int a, int b, int *res)}
+@defbuiltinx{bool __builtin_saddl_overflow (long int a, long int b, long int *res)}
+@defbuiltinx{bool __builtin_saddll_overflow (long long int a, long long int b, long long int *res)}
+@defbuiltinx{bool __builtin_uadd_overflow (unsigned int a, unsigned int b, unsigned int *res)}
+@defbuiltinx{bool __builtin_uaddl_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)}
+@defbuiltinx{bool __builtin_uaddll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)}
 
 These built-in functions promote the first two operands into infinite precision signed
 type and perform addition on those promoted operands.  The result is then
@@ -12731,41 +12719,41 @@ The compiler will attempt to use hardware instructions to implement
 these built-in functions where possible, like conditional jump on overflow
 after addition, conditional jump on carry etc.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __builtin_sub_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
-@deftypefnx {Built-in Function} bool __builtin_ssub_overflow (int a, int b, int *res)
-@deftypefnx {Built-in Function} bool __builtin_ssubl_overflow (long int a, long int b, long int *res)
-@deftypefnx {Built-in Function} bool __builtin_ssubll_overflow (long long int a, long long int b, long long int *res)
-@deftypefnx {Built-in Function} bool __builtin_usub_overflow (unsigned int a, unsigned int b, unsigned int *res)
-@deftypefnx {Built-in Function} bool __builtin_usubl_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
-@deftypefnx {Built-in Function} bool __builtin_usubll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)
+@defbuiltin{bool __builtin_sub_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)}
+@defbuiltinx{bool __builtin_ssub_overflow (int a, int b, int *res)}
+@defbuiltinx{bool __builtin_ssubl_overflow (long int a, long int b, long int *res)}
+@defbuiltinx{bool __builtin_ssubll_overflow (long long int a, long long int b, long long int *res)}
+@defbuiltinx{bool __builtin_usub_overflow (unsigned int a, unsigned int b, unsigned int *res)}
+@defbuiltinx{bool __builtin_usubl_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)}
+@defbuiltinx{bool __builtin_usubll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)}
 
 These built-in functions are similar to the add overflow checking built-in
 functions above, except they perform subtraction, subtract the second argument
 from the first one, instead of addition.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __builtin_mul_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)
-@deftypefnx {Built-in Function} bool __builtin_smul_overflow (int a, int b, int *res)
-@deftypefnx {Built-in Function} bool __builtin_smull_overflow (long int a, long int b, long int *res)
-@deftypefnx {Built-in Function} bool __builtin_smulll_overflow (long long int a, long long int b, long long int *res)
-@deftypefnx {Built-in Function} bool __builtin_umul_overflow (unsigned int a, unsigned int b, unsigned int *res)
-@deftypefnx {Built-in Function} bool __builtin_umull_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)
-@deftypefnx {Built-in Function} bool __builtin_umulll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)
+@defbuiltin{bool __builtin_mul_overflow (@var{type1} a, @var{type2} b, @var{type3} *res)}
+@defbuiltinx{bool __builtin_smul_overflow (int a, int b, int *res)}
+@defbuiltinx{bool __builtin_smull_overflow (long int a, long int b, long int *res)}
+@defbuiltinx{bool __builtin_smulll_overflow (long long int a, long long int b, long long int *res)}
+@defbuiltinx{bool __builtin_umul_overflow (unsigned int a, unsigned int b, unsigned int *res)}
+@defbuiltinx{bool __builtin_umull_overflow (unsigned long int a, unsigned long int b, unsigned long int *res)}
+@defbuiltinx{bool __builtin_umulll_overflow (unsigned long long int a, unsigned long long int b, unsigned long long int *res)}
 
 These built-in functions are similar to the add overflow checking built-in
 functions above, except they perform multiplication, instead of addition.
 
-@end deftypefn
+@enddefbuiltin
 
 The following built-in functions allow checking if simple arithmetic operation
 would overflow.
 
-@deftypefn {Built-in Function} bool __builtin_add_overflow_p (@var{type1} a, @var{type2} b, @var{type3} c)
-@deftypefnx {Built-in Function} bool __builtin_sub_overflow_p (@var{type1} a, @var{type2} b, @var{type3} c)
-@deftypefnx {Built-in Function} bool __builtin_mul_overflow_p (@var{type1} a, @var{type2} b, @var{type3} c)
+@defbuiltin{bool __builtin_add_overflow_p (@var{type1} a, @var{type2} b, @var{type3} c)}
+@defbuiltinx{bool __builtin_sub_overflow_p (@var{type1} a, @var{type2} b, @var{type3} c)}
+@defbuiltinx{bool __builtin_mul_overflow_p (@var{type1} a, @var{type2} b, @var{type3} c)}
 
 These built-in functions are similar to @code{__builtin_add_overflow},
 @code{__builtin_sub_overflow}, or @code{__builtin_mul_overflow}, except that
@@ -12803,7 +12791,7 @@ The compiler will attempt to use hardware instructions to implement
 these built-in functions where possible, like conditional jump on overflow
 after addition, conditional jump on carry etc.
  
-@end deftypefn
+@enddefbuiltin
 
 @node x86 specific memory model extensions for transactional memory
 @section x86-Specific Memory Model Extensions for Transactional Memory
@@ -12842,8 +12830,6 @@ __atomic_store_n(&lockvar, 0, __ATOMIC_RELEASE|__ATOMIC_HLE_RELEASE);
 @section Object Size Checking
 
 @subsection Object Size Checking Built-in Functions
-@findex __builtin_object_size
-@findex __builtin_dynamic_object_size
 @findex __builtin___memcpy_chk
 @findex __builtin___mempcpy_chk
 @findex __builtin___memmove_chk
@@ -12853,14 +12839,6 @@ __atomic_store_n(&lockvar, 0, __ATOMIC_RELEASE|__ATOMIC_HLE_RELEASE);
 @findex __builtin___strncpy_chk
 @findex __builtin___strcat_chk
 @findex __builtin___strncat_chk
-@findex __builtin___sprintf_chk
-@findex __builtin___snprintf_chk
-@findex __builtin___vsprintf_chk
-@findex __builtin___vsnprintf_chk
-@findex __builtin___printf_chk
-@findex __builtin___vprintf_chk
-@findex __builtin___fprintf_chk
-@findex __builtin___vfprintf_chk
 
 GCC implements a limited buffer overflow protection mechanism that can
 prevent some buffer overflow attacks by determining the sizes of objects
@@ -12872,7 +12850,7 @@ follow pointer assignments through non-trivial control flow they rely
 on various optimization passes enabled with @option{-O2}.  However, to
 a limited extent, they can be used without optimization as well.
 
-@deftypefn {Built-in Function} {size_t} __builtin_object_size (const void * @var{ptr}, int @var{type})
+@defbuiltin{size_t __builtin_object_size (const void * @var{ptr}, int @var{type})}
 is a built-in construct that returns a constant number of bytes from
 @var{ptr} to the end of the object @var{ptr} pointer points to
 (if known at compile time).  To determine the sizes of dynamically allocated
@@ -12909,9 +12887,9 @@ assert (__builtin_object_size (q, 0)
 /* The subobject q points to is var.b.  */
 assert (__builtin_object_size (q, 1) == sizeof (var.b));
 @end smallexample
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {size_t} __builtin_dynamic_object_size (const void * @var{ptr}, int @var{type})
+@defbuiltin{{size_t} __builtin_dynamic_object_size (const void * @var{ptr}, int @var{type})}
 is similar to @code{__builtin_object_size} in that it returns a number of bytes
 from @var{ptr} to the end of the object @var{ptr} pointer points to, except
 that the size returned may not be a constant.  This results in successful
@@ -12921,7 +12899,7 @@ penalty since it may add a runtime overhead on size computation.  Semantics of
 @var{type} as well as return values in case it is not possible to determine
 which objects @var{ptr} points to at compile time are the same as in the case
 of @code{__builtin_object_size}.
-@end deftypefn
+@enddefbuiltin
 
 @subsection Object Size Checking and Source Fortification
 
@@ -12971,16 +12949,20 @@ Such built-in functions are provided for @code{memcpy}, @code{mempcpy},
 @code{memmove}, @code{memset}, @code{strcpy}, @code{stpcpy}, @code{strncpy},
 @code{strcat} and @code{strncat}.
 
-There are also checking built-in functions for formatted output functions.
-@smallexample
-int __builtin___sprintf_chk (char *s, int flag, size_t os, const char *fmt, ...);
-int __builtin___snprintf_chk (char *s, size_t maxlen, int flag, size_t os,
-                              const char *fmt, ...);
-int __builtin___vsprintf_chk (char *s, int flag, size_t os, const char *fmt,
-                              va_list ap);
-int __builtin___vsnprintf_chk (char *s, size_t maxlen, int flag, size_t os,
-                               const char *fmt, va_list ap);
-@end smallexample
+@subsubsection Formatted Output Function Checking
+@defbuiltin{int __builtin___sprintf_chk @
+            (char *@var{s}, int @var{flag}, size_t @var{os}, @
+            const char *@var{fmt}, ...)}
+@defbuiltinx{int __builtin___snprintf_chk @
+             (char *@var{s}, size_t @var{maxlen}, int @var{flag}, @
+             size_t @var{os}, const char *@var{fmt}, ...)}
+@defbuiltinx{int __builtin___vsprintf_chk @
+             (char *@var{s}, int @var{flag}, size_t @var{os}, @
+             const char *@var{fmt}, va_list @var{ap})}
+@defbuiltinx{int __builtin___vsnprintf_chk @
+             (char *@var{s}, size_t @var{maxlen}, int @var{flag}, @
+             size_t @var{os}, const char *@var{fmt}, @
+             va_list @var{ap})}
 
 The added @var{flag} argument is passed unchanged to @code{__sprintf_chk}
 etc.@: functions and can contain implementation specific flags on what
@@ -13001,31 +12983,16 @@ These have just one additional argument, @var{flag}, right before
 format string @var{fmt}.  If the compiler is able to optimize them to
 @code{fputc} etc.@: functions, it does, otherwise the checking function
 is called and the @var{flag} argument passed to it.
+@enddefbuiltin
 
 @node Other Builtins
 @section Other Built-in Functions Provided by GCC
 @cindex built-in functions
-@findex __builtin_alloca
-@findex __builtin_alloca_with_align
-@findex __builtin_alloca_with_align_and_max
-@findex __builtin_call_with_static_chain
-@findex __builtin_extend_pointer
-@findex __builtin_fpclassify
-@findex __builtin_has_attribute
 @findex __builtin_isfinite
 @findex __builtin_isnormal
 @findex __builtin_isgreater
 @findex __builtin_isgreaterequal
-@findex __builtin_isinf_sign
-@findex __builtin_isless
-@findex __builtin_islessequal
-@findex __builtin_islessgreater
-@findex __builtin_issignaling
 @findex __builtin_isunordered
-@findex __builtin_object_size
-@findex __builtin_powi
-@findex __builtin_powif
-@findex __builtin_powil
 @findex __builtin_speculation_safe_value
 @findex _Exit
 @findex _exit
@@ -13587,7 +13554,7 @@ for all target libcs, but in all cases they will gracefully fallback to libc
 calls.  These built-in functions appear both with and without the
 @code{__builtin_} prefix.
 
-@deftypefn {Built-in Function} void *__builtin_alloca (size_t size)
+@defbuiltin{{void *} __builtin_alloca (size_t size)}
 The @code{__builtin_alloca} function must be called at block scope.
 The function allocates an object @var{size} bytes large on the stack
 of the calling function.  The object is aligned on the default stack
@@ -13625,9 +13592,9 @@ interface they are recommended instead, in both C99 and C++ programs
 where GCC provides them as an extension.
 @xref{Variable Length}, for details.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void *__builtin_alloca_with_align (size_t size, size_t alignment)
+@defbuiltin{{void *} __builtin_alloca_with_align (size_t size, size_t alignment)}
 The @code{__builtin_alloca_with_align} function must be called at block
 scope.  The function allocates an object @var{size} bytes large on
 the stack of the calling function.  The allocated object is aligned on
@@ -13672,9 +13639,9 @@ a portable, more convenient, and safer interface they are recommended
 instead, in both C99 and C++ programs where GCC provides them as
 an extension.  @xref{Variable Length}, for details.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void *__builtin_alloca_with_align_and_max (size_t size, size_t alignment, size_t max_size)
+@defbuiltin{{void *}__builtin_alloca_with_align_and_max (size_t size, size_t alignment, size_t max_size)}
 Similar to @code{__builtin_alloca_with_align} but takes an extra argument
 specifying an upper bound for @var{size} in case its value cannot be computed
 at compile time, for use by @option{-fstack-usage}, @option{-Wstack-usage}
@@ -13682,9 +13649,9 @@ and @option{-Walloca-larger-than}.  @var{max_size} must be a constant integer
 expression, it has no effect on code generation and no attempt is made to
 check its compatibility with @var{size}.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __builtin_has_attribute (@var{type-or-expression}, @var{attribute})
+@defbuiltin{bool __builtin_has_attribute (@var{type-or-expression}, @var{attribute})}
 The @code{__builtin_has_attribute} function evaluates to an integer constant
 expression equal to @code{true} if the symbol or type referenced by
 the @var{type-or-expression} argument has been declared with
@@ -13725,9 +13692,9 @@ is suitable for use in @code{#if} preprocessing directives
 @code{__builtin_has_attribute} is an intrinsic function that is not
 recognized in such contexts.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __builtin_speculation_safe_value (@var{type} val, @var{type} failval)
+@defbuiltin{@var{type} __builtin_speculation_safe_value (@var{type} val, @var{type} failval)}
 
 This built-in function can be used to help mitigate against unsafe
 speculative execution.  @var{type} may be any integral type or any
@@ -13815,9 +13782,9 @@ int f (unsigned untrusted_index)
 
 which will cause a @code{NULL} pointer to be used for the unsafe case.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_types_compatible_p (@var{type1}, @var{type2})
+@defbuiltin{int __builtin_types_compatible_p (@var{type1}, @var{type2})}
 
 You can use the built-in function @code{__builtin_types_compatible_p} to
 determine whether two types are the same.
@@ -13866,9 +13833,9 @@ depending on the arguments' types.  For example:
 
 @emph{Note:} This construct is only available for C@.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __builtin_call_with_static_chain (@var{call_exp}, @var{pointer_exp})
+@defbuiltin{@var{type} __builtin_call_with_static_chain (@var{call_exp}, @var{pointer_exp})}
 
 The @var{call_exp} expression must be a function call, and the
 @var{pointer_exp} expression must be a pointer.  The @var{pointer_exp}
@@ -13878,9 +13845,9 @@ The result of builtin is the result of the function call.
 @emph{Note:} This builtin is only available for C@.
 This builtin can be used to call Go closures from C.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __builtin_choose_expr (@var{const_exp}, @var{exp1}, @var{exp2})
+@defbuiltin{@var{type} __builtin_choose_expr (@var{const_exp}, @var{exp1}, @var{exp2})}
 
 You can use the built-in function @code{__builtin_choose_expr} to
 evaluate code depending on the value of a constant expression.  This
@@ -13920,9 +13887,9 @@ unused expression (@var{exp1} or @var{exp2} depending on the value of
 @var{const_exp}) may still generate syntax errors.  This may change in
 future revisions.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __builtin_tgmath (@var{functions}, @var{arguments})
+@defbuiltin{@var{type} __builtin_tgmath (@var{functions}, @var{arguments})}
 
 The built-in function @code{__builtin_tgmath}, available only for C
 and Objective-C, calls a function determined according to the rules of
@@ -13978,9 +13945,9 @@ called, and otherwise the first function, if any, for which @var{t}
 has at least the range and precision of @var{u} is called, and it is
 an error if there is no such function.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_constant_p (@var{exp})
+@defbuiltin{int __builtin_constant_p (@var{exp})}
 You can use the built-in function @code{__builtin_constant_p} to
 determine if a value is known to be constant at compile time and hence
 that GCC can perform constant-folding on expressions involving that
@@ -14029,9 +13996,9 @@ not otherwise permitted in a static initializer (for example,
 @code{0 && foo ()}).  GCC must be more conservative about evaluating the
 built-in in this case, because it has no opportunity to perform
 optimization.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} bool __builtin_is_constant_evaluated (void)
+@defbuiltin{bool __builtin_is_constant_evaluated (void)}
 The @code{__builtin_is_constant_evaluated} function is available only
 in C++.  The built-in is intended to be used by implementations of
 the @code{std::is_constant_evaluated} C++ function.  Programs should make
@@ -14046,9 +14013,9 @@ standard.  Manifestly constant-evaluated contexts include constant-expressions,
 the conditions of @code{constexpr if} statements, constraint-expressions, and
 initializers of variables usable in constant expressions.   For more details
 refer to the latest revision of the C++ standard.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_clear_padding (@var{ptr})
+@defbuiltin{void __builtin_clear_padding (@var{ptr})}
 The built-in function @code{__builtin_clear_padding} function clears
 padding bits inside of the object representation of object pointed by
 @var{ptr}, which has to be a pointer.  The value representation of the
@@ -14064,9 +14031,9 @@ For C++, @var{ptr} argument type should be pointer to trivially-copyable
 type, unless the argument is address of a variable or parameter, because
 otherwise it isn't known if the type isn't just a base class whose padding
 bits are reused or laid out differently in a derived class.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __builtin_bit_cast (@var{type}, @var{arg})
+@defbuiltin{@var{type} __builtin_bit_cast (@var{type}, @var{arg})}
 The @code{__builtin_bit_cast} function is available only
 in C++.  The built-in is intended to be used by implementations of
 the @code{std::bit_cast} C++ template function.  Programs should make
@@ -14079,9 +14046,9 @@ When manifestly constant-evaluated, it performs extra diagnostics required
 for @code{std::bit_cast} and returns a constant expression if @var{arg}
 is a constant expression.  For more details
 refer to the latest revision of the C++ standard.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} long __builtin_expect (long @var{exp}, long @var{c})
+@defbuiltin{long __builtin_expect (long @var{exp}, long @var{c})}
 @opindex fprofile-arcs
 You may use @code{__builtin_expect} to provide the compiler with
 branch prediction information.  In general, you should prefer to
@@ -14120,9 +14087,9 @@ You can also use @code{__builtin_expect_with_probability} to explicitly
 assign a probability value to individual expressions.  If the built-in
 is used in a loop construct, the provided probability will influence
 the expected number of iterations made by loop optimizations.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} long __builtin_expect_with_probability
+@defbuiltin{long __builtin_expect_with_probability}
 (long @var{exp}, long @var{c}, double @var{probability})
 
 This function has the same semantics as @code{__builtin_expect},
@@ -14130,17 +14097,17 @@ but the caller provides the expected probability that @var{exp} == @var{c}.
 The last argument, @var{probability}, is a floating-point value in the
 range 0.0 to 1.0, inclusive.  The @var{probability} argument must be
 constant floating-point expression.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_trap (void)
+@defbuiltin{void __builtin_trap (void)}
 This function causes the program to exit abnormally.  GCC implements
 this function by using a target-dependent mechanism (such as
 intentionally executing an illegal instruction) or by calling
 @code{abort}.  The mechanism used may vary from release to release so
 you should not rely on any particular implementation.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_unreachable (void)
+@defbuiltin{void __builtin_unreachable (void)}
 If control flow reaches the point of the @code{__builtin_unreachable},
 the program is undefined.  It is useful in situations where the
 compiler cannot deduce the unreachability of the code.
@@ -14194,9 +14161,9 @@ int g (int c)
 @}
 @end smallexample
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} @var{type} __builtin_assoc_barrier (@var{type} @var{expr})
+@defbuiltin{@var{type} __builtin_assoc_barrier (@var{type} @var{expr})}
 This built-in inhibits re-association of the floating-point expression
 @var{expr} with expressions consuming the return value of the built-in. The
 expression @var{expr} itself can be reordered, and the whole expression
@@ -14212,9 +14179,9 @@ float x1 = __builtin_assoc_barrier(a + b) - b;
 @noindent
 means that, with @code{-fassociative-math}, @code{x0} can be optimized to
 @code{x0 = a} but @code{x1} cannot.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void *} __builtin_assume_aligned (const void *@var{exp}, size_t @var{align}, ...)
+@defbuiltin{{void *} __builtin_assume_aligned (const void *@var{exp}, size_t @var{align}, ...)}
 This function returns its first argument, and allows the compiler
 to assume that the returned pointer is at least @var{align} bytes
 aligned.  This built-in can have either two or three arguments,
@@ -14236,17 +14203,17 @@ void *x = __builtin_assume_aligned (arg, 32, 8);
 @noindent
 means that the compiler can assume for @code{x}, set to @code{arg}, that
 @code{(char *) x - 8} is 32-byte aligned.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_LINE ()
+@defbuiltin{int __builtin_LINE ()}
 This function is the equivalent of the preprocessor @code{__LINE__}
 macro and returns a constant integer expression that evaluates to
 the line number of the invocation of the built-in.  When used as a C++
 default argument for a function @var{F}, it returns the line number
 of the call to @var{F}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {const char *} __builtin_FUNCTION ()
+@defbuiltin{{const char *} __builtin_FUNCTION ()}
 This function is the equivalent of the @code{__FUNCTION__} symbol
 and returns an address constant pointing to the name of the function
 from which the built-in was invoked, or the empty string if
@@ -14254,9 +14221,9 @@ the invocation is not at function scope.  When used as a C++ default
 argument for a function @var{F}, it returns the name of @var{F}'s
 caller or the empty string if the call was not made at function
 scope.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {const char *} __builtin_FILE ()
+@defbuiltin{{const char *} __builtin_FILE ()}
 This function is the equivalent of the preprocessor @code{__FILE__}
 macro and returns an address constant pointing to the file name
 containing the invocation of the built-in, or the empty string if
@@ -14283,9 +14250,9 @@ void foo (void)
 @}
 @end smallexample
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin___clear_cache (void *@var{begin}, void *@var{end})
+@defbuiltin{void __builtin___clear_cache (void *@var{begin}, void *@var{end})}
 This function is used to flush the processor's instruction cache for
 the region of memory between @var{begin} inclusive and @var{end}
 exclusive.  Some targets require that the instruction cache be
@@ -14296,9 +14263,9 @@ If the target does not require instruction cache flushes,
 @code{__builtin___clear_cache} has no effect.  Otherwise either
 instructions are emitted in-line to clear the instruction cache or a
 call to the @code{__clear_cache} function in libgcc is made.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_prefetch (const void *@var{addr}, ...)
+@defbuiltin{void __builtin_prefetch (const void *@var{addr}, ...)}
 This function is used to minimize cache-miss latency by moving data into
 a cache before it is accessed.
 You can insert calls to @code{__builtin_prefetch} into code for which
@@ -14338,45 +14305,45 @@ address, but evaluation faults if @code{p} is not a valid address.
 If the target does not support data prefetch, the address expression
 is evaluated if it includes side effects but no other code is generated
 and GCC does not issue a warning.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}{size_t} __builtin_object_size (const void * @var{ptr}, int @var{type})
+@defbuiltin{{size_t} __builtin_object_size (const void * @var{ptr}, int @var{type})}
 Returns a constant size estimate of an object pointed to by @var{ptr}.
 @xref{Object Size Checking}, for a detailed description of the function.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}{size_t} __builtin_dynamic_object_size (const void * @var{ptr}, int @var{type})
+@defbuiltin{{size_t} __builtin_dynamic_object_size (const void * @var{ptr}, int @var{type})}
 Similar to @code{__builtin_object_size} except that the return value
 need not be a constant.  @xref{Object Size Checking}, for a detailed
 description of the function.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} double __builtin_huge_val (void)
+@defbuiltin{double __builtin_huge_val (void)}
 Returns a positive infinity, if supported by the floating-point format,
 else @code{DBL_MAX}.  This function is suitable for implementing the
 ISO C macro @code{HUGE_VAL}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} float __builtin_huge_valf (void)
+@defbuiltin{float __builtin_huge_valf (void)}
 Similar to @code{__builtin_huge_val}, except the return type is @code{float}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {long double} __builtin_huge_vall (void)
+@defbuiltin{{long double} __builtin_huge_vall (void)}
 Similar to @code{__builtin_huge_val}, except the return
 type is @code{long double}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Float@var{n} __builtin_huge_valf@var{n} (void)
+@defbuiltin{_Float@var{n} __builtin_huge_valf@var{n} (void)}
 Similar to @code{__builtin_huge_val}, except the return type is
 @code{_Float@var{n}}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Float@var{n}x __builtin_huge_valf@var{n}x (void)
+@defbuiltin{_Float@var{n}x __builtin_huge_valf@var{n}x (void)}
 Similar to @code{__builtin_huge_val}, except the return type is
 @code{_Float@var{n}x}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_fpclassify (int, int, int, int, int, ...)
+@defbuiltin{int __builtin_fpclassify (int, int, int, int, int, ...)}
 This built-in implements the C99 fpclassify functionality.  The first
 five int arguments should be the target library's notion of the
 possible FP classes and are used for return values.  They must be
@@ -14385,55 +14352,55 @@ constant values and they must appear in this order: @code{FP_NAN},
 @code{FP_ZERO}.  The ellipsis is for exactly one floating-point value
 to classify.  GCC treats the last argument as type-generic, which
 means it does not do default promotion from float to double.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} double __builtin_inf (void)
+@defbuiltin{double __builtin_inf (void)}
 Similar to @code{__builtin_huge_val}, except a warning is generated
 if the target floating-point format does not support infinities.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal32 __builtin_infd32 (void)
+@defbuiltin{_Decimal32 __builtin_infd32 (void)}
 Similar to @code{__builtin_inf}, except the return type is @code{_Decimal32}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal64 __builtin_infd64 (void)
+@defbuiltin{_Decimal64 __builtin_infd64 (void)}
 Similar to @code{__builtin_inf}, except the return type is @code{_Decimal64}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal128 __builtin_infd128 (void)
+@defbuiltin{_Decimal128 __builtin_infd128 (void)}
 Similar to @code{__builtin_inf}, except the return type is @code{_Decimal128}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} float __builtin_inff (void)
+@defbuiltin{float __builtin_inff (void)}
 Similar to @code{__builtin_inf}, except the return type is @code{float}.
 This function is suitable for implementing the ISO C99 macro @code{INFINITY}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {long double} __builtin_infl (void)
+@defbuiltin{{long double} __builtin_infl (void)}
 Similar to @code{__builtin_inf}, except the return
 type is @code{long double}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Float@var{n} __builtin_inff@var{n} (void)
+@defbuiltin{_Float@var{n} __builtin_inff@var{n} (void)}
 Similar to @code{__builtin_inf}, except the return
 type is @code{_Float@var{n}}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Float@var{n} __builtin_inff@var{n}x (void)
+@defbuiltin{_Float@var{n} __builtin_inff@var{n}x (void)}
 Similar to @code{__builtin_inf}, except the return
 type is @code{_Float@var{n}x}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_isinf_sign (...)
+@defbuiltin{int __builtin_isinf_sign (...)}
 Similar to @code{isinf}, except the return value is -1 for
 an argument of @code{-Inf} and 1 for an argument of @code{+Inf}.
 Note while the parameter list is an
 ellipsis, this function only accepts exactly one floating-point
 argument.  GCC treats this parameter as type-generic, which means it
 does not do default promotion from float to double.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} double __builtin_nan (const char *str)
+@defbuiltin{double __builtin_nan (const char *str)}
 This is an implementation of the ISO C99 function @code{nan}.
 
 Since ISO C99 defines this function in terms of @code{strtod}, which we
@@ -14448,75 +14415,75 @@ forced to be a quiet NaN@.
 This function, if given a string literal all of which would have been
 consumed by @code{strtol}, is evaluated early enough that it is considered a
 compile-time constant.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal32 __builtin_nand32 (const char *str)
+@defbuiltin{_Decimal32 __builtin_nand32 (const char *str)}
 Similar to @code{__builtin_nan}, except the return type is @code{_Decimal32}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal64 __builtin_nand64 (const char *str)
+@defbuiltin{_Decimal64 __builtin_nand64 (const char *str)}
 Similar to @code{__builtin_nan}, except the return type is @code{_Decimal64}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal128 __builtin_nand128 (const char *str)
+@defbuiltin{_Decimal128 __builtin_nand128 (const char *str)}
 Similar to @code{__builtin_nan}, except the return type is @code{_Decimal128}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} float __builtin_nanf (const char *str)
+@defbuiltin{float __builtin_nanf (const char *str)}
 Similar to @code{__builtin_nan}, except the return type is @code{float}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {long double} __builtin_nanl (const char *str)
+@defbuiltin{{long double} __builtin_nanl (const char *str)}
 Similar to @code{__builtin_nan}, except the return type is @code{long double}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Float@var{n} __builtin_nanf@var{n} (const char *str)
+@defbuiltin{_Float@var{n} __builtin_nanf@var{n} (const char *str)}
 Similar to @code{__builtin_nan}, except the return type is
 @code{_Float@var{n}}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Float@var{n}x __builtin_nanf@var{n}x (const char *str)
+@defbuiltin{_Float@var{n}x __builtin_nanf@var{n}x (const char *str)}
 Similar to @code{__builtin_nan}, except the return type is
 @code{_Float@var{n}x}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} double __builtin_nans (const char *str)
+@defbuiltin{double __builtin_nans (const char *str)}
 Similar to @code{__builtin_nan}, except the significand is forced
 to be a signaling NaN@.  The @code{nans} function is proposed by
 @uref{https://www.open-std.org/jtc1/sc22/wg14/www/docs/n965.htm,,WG14 N965}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal32 __builtin_nansd32 (const char *str)
+@defbuiltin{_Decimal32 __builtin_nansd32 (const char *str)}
 Similar to @code{__builtin_nans}, except the return type is @code{_Decimal32}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal64 __builtin_nansd64 (const char *str)
+@defbuiltin{_Decimal64 __builtin_nansd64 (const char *str)}
 Similar to @code{__builtin_nans}, except the return type is @code{_Decimal64}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Decimal128 __builtin_nansd128 (const char *str)
+@defbuiltin{_Decimal128 __builtin_nansd128 (const char *str)}
 Similar to @code{__builtin_nans}, except the return type is @code{_Decimal128}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} float __builtin_nansf (const char *str)
+@defbuiltin{float __builtin_nansf (const char *str)}
 Similar to @code{__builtin_nans}, except the return type is @code{float}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {long double} __builtin_nansl (const char *str)
+@defbuiltin{{long double} __builtin_nansl (const char *str)}
 Similar to @code{__builtin_nans}, except the return type is @code{long double}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Float@var{n} __builtin_nansf@var{n} (const char *str)
+@defbuiltin{_Float@var{n} __builtin_nansf@var{n} (const char *str)}
 Similar to @code{__builtin_nans}, except the return type is
 @code{_Float@var{n}}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} _Float@var{n}x __builtin_nansf@var{n}x (const char *str)
+@defbuiltin{_Float@var{n}x __builtin_nansf@var{n}x (const char *str)}
 Similar to @code{__builtin_nans}, except the return type is
 @code{_Float@var{n}x}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_issignaling (...)
+@defbuiltin{int __builtin_issignaling (...)}
 Return non-zero if the argument is a signaling NaN and zero otherwise.
 Note while the parameter list is an
 ellipsis, this function only accepts exactly one floating-point
@@ -14528,152 +14495,144 @@ stored or passed as argument to some function other than this built-in
 in the current translation unit, it is safer to use @code{-fsignaling-nans}.
 With @code{-ffinite-math-only} option this built-in function will always
 return 0.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_ffs (int x)
+@defbuiltin{int __builtin_ffs (int x)}
 Returns one plus the index of the least significant 1-bit of @var{x}, or
 if @var{x} is zero, returns zero.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_clz (unsigned int x)
+@defbuiltin{int __builtin_clz (unsigned int x)}
 Returns the number of leading 0-bits in @var{x}, starting at the most
 significant bit position.  If @var{x} is 0, the result is undefined.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_ctz (unsigned int x)
+@defbuiltin{int __builtin_ctz (unsigned int x)}
 Returns the number of trailing 0-bits in @var{x}, starting at the least
 significant bit position.  If @var{x} is 0, the result is undefined.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_clrsb (int x)
+@defbuiltin{int __builtin_clrsb (int x)}
 Returns the number of leading redundant sign bits in @var{x}, i.e.@: the
 number of bits following the most significant bit that are identical
 to it.  There are no special cases for 0 or other values. 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_popcount (unsigned int x)
+@defbuiltin{int __builtin_popcount (unsigned int x)}
 Returns the number of 1-bits in @var{x}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_parity (unsigned int x)
+@defbuiltin{int __builtin_parity (unsigned int x)}
 Returns the parity of @var{x}, i.e.@: the number of 1-bits in @var{x}
 modulo 2.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_ffsl (long)
+@defbuiltin{int __builtin_ffsl (long)}
 Similar to @code{__builtin_ffs}, except the argument type is
 @code{long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_clzl (unsigned long)
+@defbuiltin{int __builtin_clzl (unsigned long)}
 Similar to @code{__builtin_clz}, except the argument type is
 @code{unsigned long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_ctzl (unsigned long)
+@defbuiltin{int __builtin_ctzl (unsigned long)}
 Similar to @code{__builtin_ctz}, except the argument type is
 @code{unsigned long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_clrsbl (long)
+@defbuiltin{int __builtin_clrsbl (long)}
 Similar to @code{__builtin_clrsb}, except the argument type is
 @code{long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_popcountl (unsigned long)
+@defbuiltin{int __builtin_popcountl (unsigned long)}
 Similar to @code{__builtin_popcount}, except the argument type is
 @code{unsigned long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_parityl (unsigned long)
+@defbuiltin{int __builtin_parityl (unsigned long)}
 Similar to @code{__builtin_parity}, except the argument type is
 @code{unsigned long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_ffsll (long long)
+@defbuiltin{int __builtin_ffsll (long long)}
 Similar to @code{__builtin_ffs}, except the argument type is
 @code{long long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_clzll (unsigned long long)
+@defbuiltin{int __builtin_clzll (unsigned long long)}
 Similar to @code{__builtin_clz}, except the argument type is
 @code{unsigned long long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_ctzll (unsigned long long)
+@defbuiltin{int __builtin_ctzll (unsigned long long)}
 Similar to @code{__builtin_ctz}, except the argument type is
 @code{unsigned long long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_clrsbll (long long)
+@defbuiltin{int __builtin_clrsbll (long long)}
 Similar to @code{__builtin_clrsb}, except the argument type is
 @code{long long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_popcountll (unsigned long long)
+@defbuiltin{int __builtin_popcountll (unsigned long long)}
 Similar to @code{__builtin_popcount}, except the argument type is
 @code{unsigned long long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_parityll (unsigned long long)
+@defbuiltin{int __builtin_parityll (unsigned long long)}
 Similar to @code{__builtin_parity}, except the argument type is
 @code{unsigned long long}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} double __builtin_powi (double, int)
+@defbuiltin{double __builtin_powi (double, int)}
+@defbuiltinx{float __builtin_powif (float, int)}
+@defbuiltinx{{long double} __builtin_powil (long double, int)}
 Returns the first argument raised to the power of the second.  Unlike the
 @code{pow} function no guarantees about precision and rounding are made.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} float __builtin_powif (float, int)
-Similar to @code{__builtin_powi}, except the argument and return types
-are @code{float}.
-@end deftypefn
-
-@deftypefn {Built-in Function} {long double} __builtin_powil (long double, int)
-Similar to @code{__builtin_powi}, except the argument and return types
-are @code{long double}.
-@end deftypefn
-
-@deftypefn {Built-in Function} uint16_t __builtin_bswap16 (uint16_t x)
+@defbuiltin{uint16_t __builtin_bswap16 (uint16_t x)}
 Returns @var{x} with the order of the bytes reversed; for example,
 @code{0xaabb} becomes @code{0xbbaa}.  Byte here always means
 exactly 8 bits.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} uint32_t __builtin_bswap32 (uint32_t x)
+@defbuiltin{uint32_t __builtin_bswap32 (uint32_t x)}
 Similar to @code{__builtin_bswap16}, except the argument and return types
 are 32-bit.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} uint64_t __builtin_bswap64 (uint64_t x)
+@defbuiltin{uint64_t __builtin_bswap64 (uint64_t x)}
 Similar to @code{__builtin_bswap32}, except the argument and return types
 are 64-bit.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} uint128_t __builtin_bswap128 (uint128_t x)
+@defbuiltin{uint128_t __builtin_bswap128 (uint128_t x)}
 Similar to @code{__builtin_bswap64}, except the argument and return types
 are 128-bit.  Only supported on targets when 128-bit types are supported.
-@end deftypefn
+@enddefbuiltin
 
 
-@deftypefn {Built-in Function} Pmode __builtin_extend_pointer (void * x)
+@defbuiltin{Pmode __builtin_extend_pointer (void * x)}
 On targets where the user visible pointer size is smaller than the size
 of an actual hardware address this function returns the extended user
 pointer.  Targets where this is true included ILP32 mode on x86_64 or
 Aarch64.  This function is mainly useful when writing inline assembly
 code.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_goacc_parlevel_id (int x)
+@defbuiltin{int __builtin_goacc_parlevel_id (int x)}
 Returns the openacc gang, worker or vector id depending on whether @var{x} is
 0, 1 or 2.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_goacc_parlevel_size (int x)
+@defbuiltin{int __builtin_goacc_parlevel_size (int x)}
 Returns the openacc gang, worker or vector size depending on whether @var{x} is
 0, 1 or 2.
-@end deftypefn
+@enddefbuiltin
 
 @node Target Builtins
 @section Built-in Functions Specific to Particular Target Machines
@@ -14947,7 +14906,7 @@ by a target may cause problems. At present the compiler is not
 guaranteed to detect such misuse, and as a result an internal compiler
 error may be generated.
 
-@deftypefn {Built-in Function} int __builtin_arc_aligned (void *@var{val}, int @var{alignval})
+@defbuiltin{int __builtin_arc_aligned (void *@var{val}, int @var{alignval})}
 Return 1 if @var{val} is known to have the byte alignment given
 by @var{alignval}, otherwise return 0.
 Note that this is different from
@@ -14958,34 +14917,34 @@ because __alignof__ sees only the type of the dereference, whereas
 __builtin_arc_align uses alignment information from the pointer
 as well as from the pointed-to type.
 The information available will depend on optimization level.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_arc_brk (void)
+@defbuiltin{void __builtin_arc_brk (void)}
 Generates
 @example
 brk
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {unsigned int} __builtin_arc_core_read (unsigned int @var{regno})
+@defbuiltin{{unsigned int} __builtin_arc_core_read (unsigned int @var{regno})}
 The operand is the number of a register to be read.  Generates:
 @example
 mov  @var{dest}, r@var{regno}
 @end example
 where the value in @var{dest} will be the result returned from the
 built-in.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_arc_core_write (unsigned int @var{regno}, unsigned int @var{val})
+@defbuiltin{void __builtin_arc_core_write (unsigned int @var{regno}, unsigned int @var{val})}
 The first operand is the number of a register to be written, the
 second operand is a compile time constant to write into that
 register.  Generates:
 @example
 mov  r@var{regno}, @var{val}
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_arc_divaw (int @var{a}, int @var{b})
+@defbuiltin{int __builtin_arc_divaw (int @var{a}, int @var{b})}
 Only available if either @option{-mcpu=ARC700} or @option{-meA} is set.
 Generates:
 @example
@@ -14993,16 +14952,16 @@ divaw  @var{dest}, @var{a}, @var{b}
 @end example
 where the value in @var{dest} will be the result returned from the
 built-in.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_arc_flag (unsigned int @var{a})
+@defbuiltin{void __builtin_arc_flag (unsigned int @var{a})}
 Generates
 @example
 flag  @var{a}
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {unsigned int} __builtin_arc_lr (unsigned int @var{auxr})
+@defbuiltin{{unsigned int} __builtin_arc_lr (unsigned int @var{auxr})}
 The operand, @var{auxv}, is the address of an auxiliary register and
 must be a compile time constant.  Generates:
 @example
@@ -15010,30 +14969,30 @@ lr  @var{dest}, [@var{auxr}]
 @end example
 Where the value in @var{dest} will be the result returned from the
 built-in.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_arc_mul64 (int @var{a}, int @var{b})
+@defbuiltin{void __builtin_arc_mul64 (int @var{a}, int @var{b})}
 Only available with @option{-mmul64}.  Generates:
 @example
 mul64  @var{a}, @var{b}
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_arc_mulu64 (unsigned int @var{a}, unsigned int @var{b})
+@defbuiltin{void __builtin_arc_mulu64 (unsigned int @var{a}, unsigned int @var{b})}
 Only available with @option{-mmul64}.  Generates:
 @example
 mulu64  @var{a}, @var{b}
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_arc_nop (void)
+@defbuiltin{void __builtin_arc_nop (void)}
 Generates:
 @example
 nop
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_arc_norm (int @var{src})
+@defbuiltin{int __builtin_arc_norm (int @var{src})}
 Only valid if the @samp{norm} instruction is available through the
 @option{-mnorm} option or by default with @option{-mcpu=ARC700}.
 Generates:
@@ -15042,9 +15001,9 @@ norm  @var{dest}, @var{src}
 @end example
 Where the value in @var{dest} will be the result returned from the
 built-in.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  {short int} __builtin_arc_normw (short int @var{src})
+@defbuiltin{{short int} __builtin_arc_normw (short int @var{src})}
 Only valid if the @samp{normw} instruction is available through the
 @option{-mnorm} option or by default with @option{-mcpu=ARC700}.
 Generates:
@@ -15053,67 +15012,67 @@ normw  @var{dest}, @var{src}
 @end example
 Where the value in @var{dest} will be the result returned from the
 built-in.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_arc_rtie (void)
+@defbuiltin{void __builtin_arc_rtie (void)}
 Generates:
 @example
 rtie
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_arc_sleep (int @var{a}
+@defbuiltin{void __builtin_arc_sleep (int @var{a}}
 Generates:
 @example
 sleep  @var{a}
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_arc_sr (unsigned int @var{val}, unsigned int @var{auxr})
+@defbuiltin{void __builtin_arc_sr (unsigned int @var{val}, unsigned int @var{auxr})}
 The first argument, @var{val}, is a compile time constant to be
 written to the register, the second argument, @var{auxr}, is the
 address of an auxiliary register.  Generates:
 @example
 sr  @var{val}, [@var{auxr}]
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  int __builtin_arc_swap (int @var{src})
+@defbuiltin{int __builtin_arc_swap (int @var{src})}
 Only valid with @option{-mswap}.  Generates:
 @example
 swap  @var{dest}, @var{src}
 @end example
 Where the value in @var{dest} will be the result returned from the
 built-in.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_arc_swi (void)
+@defbuiltin{void __builtin_arc_swi (void)}
 Generates:
 @example
 swi
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_arc_sync (void)
+@defbuiltin{void __builtin_arc_sync (void)}
 Only available with @option{-mcpu=ARC700}.  Generates:
 @example
 sync
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_arc_trap_s (unsigned int @var{c})
+@defbuiltin{void __builtin_arc_trap_s (unsigned int @var{c})}
 Only available with @option{-mcpu=ARC700}.  Generates:
 @example
 trap_s  @var{c}
 @end example
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_arc_unimp_s (void)
+@defbuiltin{void __builtin_arc_unimp_s (void)}
 Only available with @option{-mcpu=ARC700}.  Generates:
 @example
 unimp_s
 @end example
-@end deftypefn
+@enddefbuiltin
 
 The instructions generated by the following builtins are not
 considered as candidates for scheduling.  They are not moved around by
@@ -15701,23 +15660,23 @@ void __builtin_bfin_ssync (void);
 
 The following built-in functions are available for eBPF targets.
 
-@deftypefn {Built-in Function} unsigned long long __builtin_bpf_load_byte (unsigned long long @var{offset})
+@defbuiltin{unsigned long long __builtin_bpf_load_byte (unsigned long long @var{offset})}
 Load a byte from the @code{struct sk_buff} packet data pointed by the register @code{%r6} and return it.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} unsigned long long __builtin_bpf_load_half (unsigned long long @var{offset})
+@defbuiltin{unsigned long long __builtin_bpf_load_half (unsigned long long @var{offset})}
 Load 16-bits from the @code{struct sk_buff} packet data pointed by the register @code{%r6} and return it.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} unsigned long long __builtin_bpf_load_word (unsigned long long @var{offset})
+@defbuiltin{unsigned long long __builtin_bpf_load_word (unsigned long long @var{offset})}
 Load 32-bits from the @code{struct sk_buff} packet data pointed by the register @code{%r6} and return it.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void * __builtin_preserve_access_index (@var{expr})
+@defbuiltin{void * __builtin_preserve_access_index (@var{expr})}
 BPF Compile Once-Run Everywhere (CO-RE) support. Instruct GCC to generate CO-RE relocation records for any accesses to aggregate data structures (struct, union, array types) in @var{expr}. This builtin is otherwise transparent, the return value is whatever @var{expr} evaluates to. It is also overloaded: @var{expr} may be of any type (not necessarily a pointer), the return type is the same. Has no effect if @code{-mco-re} is not in effect (either specified or implied).
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} unsigned int __builtin_preserve_field_info (@var{expr}, unsigned int @var{kind})
+@defbuiltin{unsigned int __builtin_preserve_field_info (@var{expr}, unsigned int @var{kind})}
 BPF Compile Once-Run Everywhere (CO-RE) support. This builtin is used to
 extract information to aid in struct/union relocations.  @var{expr} is
 an access to a field of a struct or union. Depending on @var{kind}, different
@@ -15792,7 +15751,7 @@ read_y (struct S *arg)
 @}
 
 @end example
-@end deftypefn
+@enddefbuiltin
 
 @node FR-V Built-in Functions
 @subsection FR-V Built-in Functions
@@ -17796,38 +17755,38 @@ builtin is exact.
 
 These built-in functions are available for the NDS32 target:
 
-@deftypefn {Built-in Function} void __builtin_nds32_isync (int *@var{addr})
+@defbuiltin{void __builtin_nds32_isync (int *@var{addr})}
 Insert an ISYNC instruction into the instruction stream where
 @var{addr} is an instruction address for serialization.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_nds32_isb (void)
+@defbuiltin{void __builtin_nds32_isb (void)}
 Insert an ISB instruction into the instruction stream.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_nds32_mfsr (int @var{sr})
+@defbuiltin{int __builtin_nds32_mfsr (int @var{sr})}
 Return the content of a system register which is mapped by @var{sr}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_nds32_mfusr (int @var{usr})
+@defbuiltin{int __builtin_nds32_mfusr (int @var{usr})}
 Return the content of a user space register which is mapped by @var{usr}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_nds32_mtsr (int @var{value}, int @var{sr})
+@defbuiltin{void __builtin_nds32_mtsr (int @var{value}, int @var{sr})}
 Move the @var{value} to a system register which is mapped by @var{sr}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_nds32_mtusr (int @var{value}, int @var{usr})
+@defbuiltin{void __builtin_nds32_mtusr (int @var{value}, int @var{usr})}
 Move the @var{value} to a user space register which is mapped by @var{usr}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_nds32_setgie_en (void)
+@defbuiltin{void __builtin_nds32_setgie_en (void)}
 Enable global interrupt.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_nds32_setgie_dis (void)
+@defbuiltin{void __builtin_nds32_setgie_dis (void)}
 Disable global interrupt.
-@end deftypefn
+@enddefbuiltin
 
 @node Basic PowerPC Built-in Functions
 @subsection Basic PowerPC Built-in Functions
@@ -17849,12 +17808,12 @@ additional PowerPC built-in functions.
 @node Basic PowerPC Built-in Functions Available on all Configurations
 @subsubsection Basic PowerPC Built-in Functions Available on all Configurations
 
-@deftypefn {Built-in Function} void __builtin_cpu_init (void)
+@defbuiltin{void __builtin_cpu_init (void)}
 This function is a @code{nop} on the PowerPC platform and is included solely
 to maintain API compatibility with the x86 builtins.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_cpu_is (const char *@var{cpuname})
+@defbuiltin{int __builtin_cpu_is (const char *@var{cpuname})}
 This function returns a value of @code{1} if the run-time CPU is of type
 @var{cpuname} and returns @code{0} otherwise
 
@@ -17917,9 +17876,9 @@ Here is an example:
        do_generic (); // Generic implementation.
     @}
 @end smallexample
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_cpu_supports (const char *@var{feature})
+@defbuiltin{int __builtin_cpu_supports (const char *@var{feature})}
 This function returns a value of @code{1} if the run-time CPU supports the HWCAP
 feature @var{feature} and returns @code{0} otherwise.
 
@@ -18038,7 +17997,7 @@ Here is an example:
        dst = __fadd (src1, src2); // Software FP addition function.
     @}
 @end smallexample
-@end deftypefn
+@enddefbuiltin
 
 The following built-in functions are also available on all PowerPC
 processors:
@@ -18259,51 +18218,48 @@ addition to the @option{-misel} option.
 The following built-in functions are available on Linux 64-bit systems
 that use the ISA 3.0 instruction set (@option{-mcpu=power9}):
 
-@table @code
-@item __float128 __builtin_addf128_round_to_odd (__float128, __float128)
+@defbuiltin{__float128 __builtin_addf128_round_to_odd (__float128, __float128)}
 Perform a 128-bit IEEE floating point add using round to odd as the
 rounding mode.
-@findex __builtin_addf128_round_to_odd
+@enddefbuiltin
 
-@item __float128 __builtin_subf128_round_to_odd (__float128, __float128)
+@defbuiltin{__float128 __builtin_subf128_round_to_odd (__float128, __float128)}
 Perform a 128-bit IEEE floating point subtract using round to odd as
 the rounding mode.
-@findex __builtin_subf128_round_to_odd
+@enddefbuiltin
 
-@item __float128 __builtin_mulf128_round_to_odd (__float128, __float128)
+@defbuiltin{__float128 __builtin_mulf128_round_to_odd (__float128, __float128)}
 Perform a 128-bit IEEE floating point multiply using round to odd as
 the rounding mode.
-@findex __builtin_mulf128_round_to_odd
+@enddefbuiltin
 
-@item __float128 __builtin_divf128_round_to_odd (__float128, __float128)
+@defbuiltin{__float128 __builtin_divf128_round_to_odd (__float128, __float128)}
 Perform a 128-bit IEEE floating point divide using round to odd as
 the rounding mode.
-@findex __builtin_divf128_round_to_odd
+@enddefbuiltin
 
-@item __float128 __builtin_sqrtf128_round_to_odd (__float128)
+@defbuiltin{__float128 __builtin_sqrtf128_round_to_odd (__float128)}
 Perform a 128-bit IEEE floating point square root using round to odd
 as the rounding mode.
-@findex __builtin_sqrtf128_round_to_odd
+@enddefbuiltin
 
-@item __float128 __builtin_fmaf128_round_to_odd (__float128, __float128, __float128)
+@defbuiltin{__float128 __builtin_fmaf128_round_to_odd (__float128, __float128, __float128)}
 Perform a 128-bit IEEE floating point fused multiply and add operation
 using round to odd as the rounding mode.
-@findex __builtin_fmaf128_round_to_odd
+@enddefbuiltin
 
-@item double __builtin_truncf128_round_to_odd (__float128)
+@defbuiltin{double __builtin_truncf128_round_to_odd (__float128)}
 Convert a 128-bit IEEE floating point value to @code{double} using
 round to odd as the rounding mode.
-@findex __builtin_truncf128_round_to_odd
-@end table
+@enddefbuiltin
+
 
 The following additional built-in functions are also available for the
 PowerPC family of processors, starting with ISA 3.0 or later:
-@smallexample
-long long __builtin_darn (void);
-long long __builtin_darn_raw (void);
-int __builtin_darn_32 (void);
-@end smallexample
 
+@defbuiltin{long long __builtin_darn (void)}
+@defbuiltinx{long long __builtin_darn_raw (void)}
+@defbuiltinx{int __builtin_darn_32 (void)}
 The @code{__builtin_darn} and @code{__builtin_darn_raw}
 functions require a
 64-bit environment supporting ISA 3.0 or later.
@@ -18311,6 +18267,7 @@ The @code{__builtin_darn} function provides a 64-bit conditioned
 random number.  The @code{__builtin_darn_raw} function provides a
 64-bit raw random number.  The @code{__builtin_darn_32} function
 provides a 32-bit conditioned random number.
+@enddefbuiltin
 
 The following additional built-in functions are also available for the
 PowerPC family of processors, starting with ISA 3.0 or later:
@@ -18410,91 +18367,63 @@ enabling all the same options as for @option{-mcpu=power9}.
 The following built-in functions are available on Linux 64-bit systems
 that use a future architecture instruction set (@option{-mcpu=power10}):
 
-@smallexample
-@exdent unsigned long long
-@exdent __builtin_cfuged (unsigned long long, unsigned long long)
-@end smallexample
+@defbuiltin{{unsigned long long} @
+            __builtin_cfuged (unsigned long long, unsigned long long)}
 Perform a 64-bit centrifuge operation, as if implemented by the
 @code{cfuged} instruction.
-@findex __builtin_cfuged
+@enddefbuiltin
 
-@smallexample
-@exdent unsigned long long
-@exdent __builtin_cntlzdm (unsigned long long, unsigned long long)
-@end smallexample
+@defbuiltin{{unsigned long long} @
+            __builtin_cntlzdm (unsigned long long, unsigned long long)}
 Perform a 64-bit count leading zeros operation under mask, as if
 implemented by the @code{cntlzdm} instruction.
-@findex __builtin_cntlzdm
+@enddefbuiltin
 
-@smallexample
-@exdent unsigned long long
-@exdent __builtin_cnttzdm (unsigned long long, unsigned long long)
-@end smallexample
+@defbuiltin{{unsigned long long} @
+            __builtin_cnttzdm (unsigned long long, unsigned long long)}
 Perform a 64-bit count trailing zeros operation under mask, as if
 implemented by the @code{cnttzdm} instruction.
-@findex __builtin_cnttzdm
+@enddefbuiltin
 
-@smallexample
-@exdent unsigned long long
-@exdent __builtin_pdepd (unsigned long long, unsigned long long)
-@end smallexample
+@defbuiltin{{unsigned long long} @
+            __builtin_pdepd (unsigned long long, unsigned long long)}
 Perform a 64-bit parallel bits deposit operation, as if implemented by the
 @code{pdepd} instruction.
-@findex __builtin_pdepd
+@enddefbuiltin
 
-@smallexample
-@exdent unsigned long long
-@exdent __builtin_pextd (unsigned long long, unsigned long long)
-@end smallexample
+@defbuiltin{{unsigned long long} @
+            __builtin_pextd (unsigned long long, unsigned long long)}
 Perform a 64-bit parallel bits extract operation, as if implemented by the
 @code{pextd} instruction.
-@findex __builtin_pextd
-
-@smallexample
-@exdent vector signed __int128 vsx_xl_sext (signed long long, signed char *)
-
-@exdent vector signed __int128 vsx_xl_sext (signed long long, signed short *)
-
-@exdent vector signed __int128 vsx_xl_sext (signed long long, signed int *)
-
-@exdent vector signed __int128 vsx_xl_sext (signed long long, signed long long *)
-
-@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned char *)
-
-@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned short *)
-
-@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned int *)
-
-@exdent vector unsigned __int128 vsx_xl_zext (signed long long, unsigned long long *)
-@end smallexample
+@enddefbuiltin
+
+@defbuiltin{{vector signed __int128} vsx_xl_sext (signed long long, signed char *)}
+@defbuiltinx{{vector signed __int128} vsx_xl_sext (signed long long, signed short *)}
+@defbuiltinx{{vector signed __int128} vsx_xl_sext (signed long long, signed int *)}
+@defbuiltinx{{vector signed __int128} vsx_xl_sext (signed long long, signed long long *)}
+@defbuiltinx{{vector unsigned __int128} vsx_xl_zext (signed long long, unsigned char *)}
+@defbuiltinx{{vector unsigned __int128} vsx_xl_zext (signed long long, unsigned short *)}
+@defbuiltinx{{vector unsigned __int128} vsx_xl_zext (signed long long, unsigned int *)}
+@defbuiltinx{{vector unsigned __int128} vsx_xl_zext (signed long long, unsigned long long *)}
 
 Load (and sign extend) to an __int128 vector, as if implemented by the ISA 3.1
-@code{lxvrbx}, @code{lxvrhx}, @code{lxvrwx}, and  @code{lxvrdx} instructions.
-@findex vsx_xl_sext
-@findex vsx_xl_zext
-
-@smallexample
-@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed char *)
-
-@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed short *)
-
-@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed int *)
-
-@exdent void vec_xst_trunc (vector signed __int128, signed long long, signed long long *)
-
-@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned char *)
-
-@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned short *)
-
-@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned int *)
-
-@exdent void vec_xst_trunc (vector unsigned __int128, signed long long, unsigned long long *)
-@end smallexample
+@code{lxvrbx}, @code{lxvrhx}, @code{lxvrwx}, and  @code{lxvrdx}
+instructions.
+@enddefbuiltin
+
+@defbuiltin{{void} vec_xst_trunc (vector signed __int128, signed long long, signed char *)}
+@defbuiltinx{{void} vec_xst_trunc (vector signed __int128, signed long long, signed short *)}
+@defbuiltinx{{void} vec_xst_trunc (vector signed __int128, signed long long, signed int *)}
+@defbuiltinx{{void} vec_xst_trunc (vector signed __int128, signed long long, signed long long *)}
+@defbuiltinx{{void} vec_xst_trunc (vector unsigned __int128, signed long long, unsigned char *)}
+@defbuiltinx{{void} vec_xst_trunc (vector unsigned __int128, signed long long, unsigned short *)}
+@defbuiltinx{{void} vec_xst_trunc (vector unsigned __int128, signed long long, unsigned int *)}
+@defbuiltinx{{void} vec_xst_trunc (vector unsigned __int128, signed long long, unsigned long long *)}
 
 Truncate and store the rightmost element of a vector, as if implemented by the
 ISA 3.1 @code{stxvrbx}, @code{stxvrhx}, @code{stxvrwx}, and @code{stxvrdx}
 instructions.
-@findex vec_xst_trunc
+@enddefbuiltin
 
 @node PowerPC AltiVec/VSX Built-in Functions
 @subsection PowerPC AltiVec/VSX Built-in Functions
@@ -21129,8 +21058,7 @@ special PRU instructions.
 
 The built-in functions supported are:
 
-@table @code
-@item __delay_cycles (long long @var{cycles})
+@defbuiltin{void __delay_cycles (constant long long @var{cycles})}
 This inserts an instruction sequence that takes exactly @var{cycles}
 cycles (between 0 and 0xffffffff) to complete.  The inserted sequence
 may use jumps, loops, or no-ops, and does not interfere with any other
@@ -21138,15 +21066,19 @@ instructions.  Note that @var{cycles} must be a compile-time constant
 integer - that is, you must pass a number, not a variable that may be
 optimized to a constant later.  The number of cycles delayed by this
 builtin is exact.
+@enddefbuiltin
 
-@item __halt (void)
+@defbuiltin{void __halt (void)}
 This inserts a HALT instruction to stop processor execution.
+@enddefbuiltin
 
-@item unsigned int __lmbd (unsigned int @var{wordval}, unsigned int @var{bitval})
+@defbuiltin{{unsigned int} @
+            __lmbd (unsigned int @var{wordval}, @
+                    unsigned int @var{bitval})}
 This inserts LMBD instruction to calculate the left-most bit with value
 @var{bitval} in value @var{wordval}.  Only the least significant bit
 of @var{bitval} is taken into account.
-@end table
+@enddefbuiltin
 
 @node RISC-V Built-in Functions
 @subsection RISC-V Built-in Functions
@@ -21154,15 +21086,15 @@ of @var{bitval} is taken into account.
 These built-in functions are available for the RISC-V family of
 processors.
 
-@deftypefn {Built-in Function} {void *} __builtin_thread_pointer (void)
+@defbuiltin{{void *} __builtin_thread_pointer (void)}
 Returns the value that is currently set in the @samp{tp} register.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_riscv_pause (void)
+@defbuiltin{void __builtin_riscv_pause (void)}
 Generates the @code{pause} (hint) machine instruction.  This implies the
 Xgnuzihintpausestate extension, which redefines the @code{pause} instruction to
 change architectural state.
-@end deftypefn
+@enddefbuiltin
 
 @node RX Built-in Functions
 @subsection RX Built-in Functions
@@ -21170,118 +21102,118 @@ GCC supports some of the RX instructions which cannot be expressed in
 the C programming language via the use of built-in functions.  The
 following functions are supported:
 
-@deftypefn {Built-in Function}  void __builtin_rx_brk (void)
+@defbuiltin{void __builtin_rx_brk (void)}
 Generates the @code{brk} machine instruction.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_clrpsw (int)
+@defbuiltin{void __builtin_rx_clrpsw (int)}
 Generates the @code{clrpsw} machine instruction to clear the specified
 bit in the processor status word.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_int (int)
+@defbuiltin{void __builtin_rx_int (int)}
 Generates the @code{int} machine instruction to generate an interrupt
 with the specified value.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_machi (int, int)
+@defbuiltin{void __builtin_rx_machi (int, int)}
 Generates the @code{machi} machine instruction to add the result of
 multiplying the top 16 bits of the two arguments into the
 accumulator.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_maclo (int, int)
+@defbuiltin{void __builtin_rx_maclo (int, int)}
 Generates the @code{maclo} machine instruction to add the result of
 multiplying the bottom 16 bits of the two arguments into the
 accumulator.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_mulhi (int, int)
+@defbuiltin{void __builtin_rx_mulhi (int, int)}
 Generates the @code{mulhi} machine instruction to place the result of
 multiplying the top 16 bits of the two arguments into the
 accumulator.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_mullo (int, int)
+@defbuiltin{void __builtin_rx_mullo (int, int)}
 Generates the @code{mullo} machine instruction to place the result of
 multiplying the bottom 16 bits of the two arguments into the
 accumulator.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  int  __builtin_rx_mvfachi (void)
+@defbuiltin{int  __builtin_rx_mvfachi (void)}
 Generates the @code{mvfachi} machine instruction to read the top
 32 bits of the accumulator.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  int  __builtin_rx_mvfacmi (void)
+@defbuiltin{int  __builtin_rx_mvfacmi (void)}
 Generates the @code{mvfacmi} machine instruction to read the middle
 32 bits of the accumulator.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  int __builtin_rx_mvfc (int)
+@defbuiltin{int __builtin_rx_mvfc (int)}
 Generates the @code{mvfc} machine instruction which reads the control
 register specified in its argument and returns its value.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_mvtachi (int)
+@defbuiltin{void __builtin_rx_mvtachi (int)}
 Generates the @code{mvtachi} machine instruction to set the top
 32 bits of the accumulator.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_mvtaclo (int)
+@defbuiltin{void __builtin_rx_mvtaclo (int)}
 Generates the @code{mvtaclo} machine instruction to set the bottom
 32 bits of the accumulator.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_mvtc (int reg, int val)
+@defbuiltin{void __builtin_rx_mvtc (int reg, int val)}
 Generates the @code{mvtc} machine instruction which sets control
 register number @code{reg} to @code{val}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_mvtipl (int)
+@defbuiltin{void __builtin_rx_mvtipl (int)}
 Generates the @code{mvtipl} machine instruction set the interrupt
 priority level.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_racw (int)
+@defbuiltin{void __builtin_rx_racw (int)}
 Generates the @code{racw} machine instruction to round the accumulator
 according to the specified mode.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  int __builtin_rx_revw (int)
+@defbuiltin{int __builtin_rx_revw (int)}
 Generates the @code{revw} machine instruction which swaps the bytes in
 the argument so that bits 0--7 now occupy bits 8--15 and vice versa,
 and also bits 16--23 occupy bits 24--31 and vice versa.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_rmpa (void)
+@defbuiltin{void __builtin_rx_rmpa (void)}
 Generates the @code{rmpa} machine instruction which initiates a
 repeated multiply and accumulate sequence.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_round (float)
+@defbuiltin{void __builtin_rx_round (float)}
 Generates the @code{round} machine instruction which returns the
 floating-point argument rounded according to the current rounding mode
 set in the floating-point status word register.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  int __builtin_rx_sat (int)
+@defbuiltin{int __builtin_rx_sat (int)}
 Generates the @code{sat} machine instruction which returns the
 saturated value of the argument.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_setpsw (int)
+@defbuiltin{void __builtin_rx_setpsw (int)}
 Generates the @code{setpsw} machine instruction to set the specified
 bit in the processor status word.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function}  void __builtin_rx_wait (void)
+@defbuiltin{void __builtin_rx_wait (void)}
 Generates the @code{wait} machine instruction.
-@end deftypefn
+@enddefbuiltin
 
 @node S/390 System z Built-in Functions
 @subsection S/390 System z Built-in Functions
-@deftypefn {Built-in Function} int __builtin_tbegin (void*)
+@defbuiltin{int __builtin_tbegin (void*)}
 Generates the @code{tbegin} machine instruction starting a
 non-constrained hardware transaction.  If the parameter is non-NULL the
 memory area is used to store the transaction diagnostic buffer and
@@ -21302,25 +21234,30 @@ access registers inside the transaction will not trigger an
 transaction abort it is not supported to actually modify them.  Access
 registers do not get saved when entering a transaction. They will have
 undefined state when reaching the abort code.
-@end deftypefn
+@enddefbuiltin
 
 Macros for the possible return codes of tbegin are defined in the
 @code{htmintrin.h} header file:
 
-@table @code
-@item _HTM_TBEGIN_STARTED
+@defmac _HTM_TBEGIN_STARTED
 @code{tbegin} has been executed as part of normal processing.  The
 transaction body is supposed to be executed.
-@item _HTM_TBEGIN_INDETERMINATE
+@end defmac
+
+@defmac _HTM_TBEGIN_INDETERMINATE
 The transaction was aborted due to an indeterminate condition which
 might be persistent.
-@item _HTM_TBEGIN_TRANSIENT
+@end defmac
+
+@defmac _HTM_TBEGIN_TRANSIENT
 The transaction aborted due to a transient failure.  The transaction
 should be re-executed in that case.
-@item _HTM_TBEGIN_PERSISTENT
+@end defmac
+
+@defmac _HTM_TBEGIN_PERSISTENT
 The transaction aborted due to a persistent failure.  Re-execution
 under same circumstances will not be productive.
-@end table
+@end defmac
 
 @defmac _HTM_FIRST_USER_ABORT_CODE
 The @code{_HTM_FIRST_USER_ABORT_CODE} defined in @code{htmintrin.h}
@@ -21335,70 +21272,70 @@ the structure of the transaction diagnostic block as specified in the
 Principles of Operation manual chapter 5-91.
 @end deftp
 
-@deftypefn {Built-in Function} int __builtin_tbegin_nofloat (void*)
+@defbuiltin{int __builtin_tbegin_nofloat (void*)}
 Same as @code{__builtin_tbegin} but without FPR saves and restores.
 Using this variant in code making use of FPRs will leave the FPRs in
 undefined state when entering the transaction abort handler code.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_tbegin_retry (void*, int)
+@defbuiltin{int __builtin_tbegin_retry (void*, int)}
 In addition to @code{__builtin_tbegin} a loop for transient failures
 is generated.  If tbegin returns a condition code of 2 the transaction
 will be retried as often as specified in the second argument.  The
 perform processor assist instruction is used to tell the CPU about the
 number of fails so far.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_tbegin_retry_nofloat (void*, int)
+@defbuiltin{int __builtin_tbegin_retry_nofloat (void*, int)}
 Same as @code{__builtin_tbegin_retry} but without FPR saves and
 restores.  Using this variant in code making use of FPRs will leave
 the FPRs in undefined state when entering the transaction abort
 handler code.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_tbeginc (void)
+@defbuiltin{void __builtin_tbeginc (void)}
 Generates the @code{tbeginc} machine instruction starting a constrained
 hardware transaction.  The second operand is set to @code{0xff08}.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_tend (void)
+@defbuiltin{int __builtin_tend (void)}
 Generates the @code{tend} machine instruction finishing a transaction
 and making the changes visible to other threads.  The condition code
 generated by tend is returned as integer value.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_tabort (int)
+@defbuiltin{void __builtin_tabort (int)}
 Generates the @code{tabort} machine instruction with the specified
 abort code.  Abort codes from 0 through 255 are reserved and will
 result in an error message.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_tx_assist (int)
+@defbuiltin{void __builtin_tx_assist (int)}
 Generates the @code{ppa rX,rY,1} machine instruction.  Where the
 integer parameter is loaded into rX and a value of zero is loaded into
 rY.  The integer parameter specifies the number of times the
 transaction repeatedly aborted.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_tx_nesting_depth (void)
+@defbuiltin{int __builtin_tx_nesting_depth (void)}
 Generates the @code{etnd} machine instruction.  The current nesting
 depth is returned as integer value.  For a nesting depth of 0 the code
 is not executed as part of an transaction.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} void __builtin_non_tx_store (uint64_t *, uint64_t)
+@defbuiltin{void __builtin_non_tx_store (uint64_t *, uint64_t)}
 
 Generates the @code{ntstg} machine instruction.  The second argument
 is written to the first arguments location.  The store operation will
 not be rolled-back in case of an transaction abort.
-@end deftypefn
+@enddefbuiltin
 
 @node SH Built-in Functions
 @subsection SH Built-in Functions
 The following built-in functions are supported on the SH1, SH2, SH3 and SH4
 families of processors:
 
-@deftypefn {Built-in Function} {void} __builtin_set_thread_pointer (void *@var{ptr})
+@defbuiltin{{void} __builtin_set_thread_pointer (void *@var{ptr})}
 Sets the @samp{GBR} register to the specified value @var{ptr}.  This is usually
 used by system code that manages threads and execution contexts.  The compiler
 normally does not generate code that modifies the contents of @samp{GBR} and
@@ -21406,9 +21343,9 @@ thus the value is preserved across function calls.  Changing the @samp{GBR}
 value in user code must be done with caution, since the compiler might use
 @samp{GBR} in order to access thread local variables.
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void *} __builtin_thread_pointer (void)
+@defbuiltin{{void *} __builtin_thread_pointer (void)}
 Returns the value that is currently set in the @samp{GBR} register.
 Memory loads and stores that use the thread pointer as a base address are
 turned into @samp{GBR} based displacement loads and stores, if possible.
@@ -21426,16 +21363,16 @@ int get_tcb_value (void)
 @}
 
 @end smallexample
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {unsigned int} __builtin_sh_get_fpscr (void)
+@defbuiltin{{unsigned int} __builtin_sh_get_fpscr (void)}
 Returns the value that is currently set in the @samp{FPSCR} register.
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} {void} __builtin_sh_set_fpscr (unsigned int @var{val})
+@defbuiltin{{void} __builtin_sh_set_fpscr (unsigned int @var{val})}
 Sets the @samp{FPSCR} register to the specified value @var{val}, while
 preserving the current values of the FR, SZ and PR bits.
-@end deftypefn
+@enddefbuiltin
 
 @node SPARC VIS Built-in Functions
 @subsection SPARC VIS Built-in Functions
@@ -21727,46 +21664,45 @@ The x86-32 and x86-64 family of processors use additional built-in
 functions for efficient use of @code{TF} (@code{__float128}) 128-bit
 floating point and @code{TC} 128-bit complex floating-point values.
 
-The following floating-point built-in functions are always available.  All
-of them implement the function that is part of the name.
+The following floating-point built-in functions are always available:
 
-@smallexample
-__float128 __builtin_fabsq (__float128)
-__float128 __builtin_copysignq (__float128, __float128)
-@end smallexample
+@defbuiltin{__float128 __builtin_fabsq (__float128 @var{x}))}
+Computes the absolute value of @var{x}.
+@enddefbuiltin
 
-The following built-in functions are always available.
+@defbuiltin{__float128 __builtin_copysignq (__float128 @var{x}, @
+                                            __float128 @var{y})}
+Copies the sign of @var{y} into @var{x} and returns the new value of
+@var{x}.
+@enddefbuiltin
 
-@table @code
-@item __float128 __builtin_infq (void)
+@defbuiltin{__float128 __builtin_infq (void)}
 Similar to @code{__builtin_inf}, except the return type is @code{__float128}.
-@findex __builtin_infq
+@enddefbuiltin
 
-@item __float128 __builtin_huge_valq (void)
+@defbuiltin{__float128 __builtin_huge_valq (void)}
 Similar to @code{__builtin_huge_val}, except the return type is @code{__float128}.
-@findex __builtin_huge_valq
+@enddefbuiltin
 
-@item __float128 __builtin_nanq (void)
+@defbuiltin{__float128 __builtin_nanq (void)}
 Similar to @code{__builtin_nan}, except the return type is @code{__float128}.
-@findex __builtin_nanq
+@enddefbuiltin
 
-@item __float128 __builtin_nansq (void)
+@defbuiltin{__float128 __builtin_nansq (void)}
 Similar to @code{__builtin_nans}, except the return type is @code{__float128}.
-@findex __builtin_nansq
-@end table
+@enddefbuiltin
 
 The following built-in function is always available.
 
-@table @code
-@item void __builtin_ia32_pause (void)
+@defbuiltin{void __builtin_ia32_pause (void)}
 Generates the @code{pause} machine instruction with a compiler memory
 barrier.
-@end table
+@enddefbuiltin
 
 The following built-in functions are always available and can be used to
 check the target platform type.
 
-@deftypefn {Built-in Function} void __builtin_cpu_init (void)
+@defbuiltin{void __builtin_cpu_init (void)}
 This function runs the CPU detection code to check the type of CPU and the
 features supported.  This built-in function needs to be invoked along with the built-in functions
 to check CPU type and features, @code{__builtin_cpu_is} and
@@ -21795,9 +21731,9 @@ void *memcpy (void *, const void *, size_t)
      __attribute__ ((ifunc ("resolve_memcpy")));
 @end smallexample
 
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_cpu_is (const char *@var{cpuname})
+@defbuiltin{int __builtin_cpu_is (const char *@var{cpuname})}
 This function returns a positive integer if the run-time CPU
 is of type @var{cpuname}
 and returns @code{0} otherwise. The following CPU names can be detected:
@@ -21968,9 +21904,9 @@ else
      do_generic (); // Generic implementation.
   @}
 @end smallexample
-@end deftypefn
+@enddefbuiltin
 
-@deftypefn {Built-in Function} int __builtin_cpu_supports (const char *@var{feature})
+@defbuiltin{int __builtin_cpu_supports (const char *@var{feature})}
 This function returns a positive integer if the run-time CPU
 supports @var{feature}
 and returns @code{0} otherwise. The following features can be detected:
@@ -22071,7 +22007,7 @@ else
      count = generic_countbits (n); //generic implementation.
   @}
 @end smallexample
-@end deftypefn
+@enddefbuiltin
 
 The following built-in functions are made available by @option{-mmmx}.
 All of them generate the machine instruction that is part of the name.
@@ -22226,22 +22162,33 @@ int __builtin_ia32_movmskps (v4sf);
 
 The following built-in functions are available when @option{-msse} is used.
 
-@table @code
-@item v4sf __builtin_ia32_loadups (float *)
+@defbuiltin{v4sf __builtin_ia32_loadups (float *)}
 Generates the @code{movups} machine instruction as a load from memory.
-@item void __builtin_ia32_storeups (float *, v4sf)
+@enddefbuiltin
+
+@defbuiltin{void __builtin_ia32_storeups (float *, v4sf)}
 Generates the @code{movups} machine instruction as a store to memory.
-@item v4sf __builtin_ia32_loadss (float *)
+@enddefbuiltin
+
+@defbuiltin{v4sf __builtin_ia32_loadss (float *)}
 Generates the @code{movss} machine instruction as a load from memory.
-@item v4sf __builtin_ia32_loadhps (v4sf, const v2sf *)
+@enddefbuiltin
+
+@defbuiltin{v4sf __builtin_ia32_loadhps (v4sf, const v2sf *)}
 Generates the @code{movhps} machine instruction as a load from memory.
-@item v4sf __builtin_ia32_loadlps (v4sf, const v2sf *)
+@enddefbuiltin
+
+@defbuiltin{v4sf __builtin_ia32_loadlps (v4sf, const v2sf *)}
 Generates the @code{movlps} machine instruction as a load from memory
-@item void __builtin_ia32_storehps (v2sf *, v4sf)
+@enddefbuiltin
+
+@defbuiltin{void __builtin_ia32_storehps (v2sf *, v4sf)}
 Generates the @code{movhps} machine instruction as a store to memory.
-@item void __builtin_ia32_storelps (v2sf *, v4sf)
+@enddefbuiltin
+
+@defbuiltin{void __builtin_ia32_storelps (v2sf *, v4sf)}
 Generates the @code{movlps} machine instruction as a store to memory.
-@end table
+@enddefbuiltin
 
 The following built-in functions are available when @option{-msse2} is used.
 All of them generate the machine instruction that is part of the name.
@@ -22518,30 +22465,40 @@ v4sf __builtin_ia32_roundss (v4sf, v4sf, const int);
 The following built-in functions are available when @option{-msse4.1} is
 used.
 
-@table @code
-@item v4sf __builtin_ia32_vec_set_v4sf (v4sf, float, const int)
+@defbuiltin{v4sf __builtin_ia32_vec_set_v4sf (v4sf, float, const int)}
 Generates the @code{insertps} machine instruction.
-@item int __builtin_ia32_vec_ext_v16qi (v16qi, const int)
+@enddefbuiltin
+
+@defbuiltin{int __builtin_ia32_vec_ext_v16qi (v16qi, const int)}
 Generates the @code{pextrb} machine instruction.
-@item v16qi __builtin_ia32_vec_set_v16qi (v16qi, int, const int)
+@enddefbuiltin
+
+@defbuiltin{v16qi __builtin_ia32_vec_set_v16qi (v16qi, int, const int)}
 Generates the @code{pinsrb} machine instruction.
-@item v4si __builtin_ia32_vec_set_v4si (v4si, int, const int)
+@enddefbuiltin
+
+@defbuiltin{v4si __builtin_ia32_vec_set_v4si (v4si, int, const int)}
 Generates the @code{pinsrd} machine instruction.
-@item v2di __builtin_ia32_vec_set_v2di (v2di, long long, const int)
+@enddefbuiltin
+
+@defbuiltin{v2di __builtin_ia32_vec_set_v2di (v2di, long long, const int)}
 Generates the @code{pinsrq} machine instruction in 64bit mode.
-@end table
+@enddefbuiltin
 
 The following built-in functions are changed to generate new SSE4.1
 instructions when @option{-msse4.1} is used.
 
-@table @code
-@item float __builtin_ia32_vec_ext_v4sf (v4sf, const int)
+@defbuiltin{float __builtin_ia32_vec_ext_v4sf (v4sf, const int)}
 Generates the @code{extractps} machine instruction.
-@item int __builtin_ia32_vec_ext_v4si (v4si, const int)
+@enddefbuiltin
+
+@defbuiltin{int __builtin_ia32_vec_ext_v4si (v4si, const int)}
 Generates the @code{pextrd} machine instruction.
-@item long long __builtin_ia32_vec_ext_v2di (v2di, const int)
+@enddefbuiltin
+
+@defbuiltin{long long __builtin_ia32_vec_ext_v2di (v2di, const int)}
 Generates the @code{pextrq} machine instruction in 64bit mode.
-@end table
+@enddefbuiltin
 
 The following built-in functions are available when @option{-msse4.2} is
 used.  All of them generate the machine instruction that is part of the
@@ -22568,29 +22525,37 @@ v2di __builtin_ia32_pcmpgtq (v2di, v2di);
 The following built-in functions are available when @option{-msse4.2} is
 used.
 
-@table @code
-@item unsigned int __builtin_ia32_crc32qi (unsigned int, unsigned char)
+@defbuiltin{unsigned int __builtin_ia32_crc32qi (unsigned int, unsigned char)}
 Generates the @code{crc32b} machine instruction.
-@item unsigned int __builtin_ia32_crc32hi (unsigned int, unsigned short)
+@enddefbuiltin
+
+@defbuiltin{unsigned int __builtin_ia32_crc32hi (unsigned int, unsigned short)}
 Generates the @code{crc32w} machine instruction.
-@item unsigned int __builtin_ia32_crc32si (unsigned int, unsigned int)
+@enddefbuiltin
+
+@defbuiltin{unsigned int __builtin_ia32_crc32si (unsigned int, unsigned int)}
 Generates the @code{crc32l} machine instruction.
-@item unsigned long long __builtin_ia32_crc32di (unsigned long long, unsigned long long)
+@enddefbuiltin
+
+@defbuiltin{unsigned long long __builtin_ia32_crc32di (unsigned long long, unsigned long long)}
 Generates the @code{crc32q} machine instruction.
-@end table
+@enddefbuiltin
 
 The following built-in functions are changed to generate new SSE4.2
 instructions when @option{-msse4.2} is used.
 
-@table @code
-@item int __builtin_popcount (unsigned int)
+@defbuiltin{int __builtin_popcount (unsigned int)}
 Generates the @code{popcntl} machine instruction.
-@item int __builtin_popcountl (unsigned long)
+@enddefbuiltin
+
+@defbuiltin{int __builtin_popcountl (unsigned long)}
 Generates the @code{popcntl} or @code{popcntq} machine instruction,
 depending on the size of @code{unsigned long}.
-@item int __builtin_popcountll (unsigned long long)
+@enddefbuiltin
+
+@defbuiltin{int __builtin_popcountll (unsigned long long)}
 Generates the @code{popcntq} machine instruction.
-@end table
+@enddefbuiltin
 
 The following built-in functions are available when @option{-mavx} is
 used. All of them generate the machine instruction that is part of the
@@ -22921,10 +22886,9 @@ v2di __builtin_ia32_aesimc128 (v2di);
 The following built-in function is available when @option{-mpclmul} is
 used.
 
-@table @code
-@item v2di __builtin_ia32_pclmulqdq128 (v2di, v2di, const int)
+@defbuiltin{v2di __builtin_ia32_pclmulqdq128 (v2di, v2di, const int)}
 Generates the @code{pclmulqdq} machine instruction.
-@end table
+@enddefbuiltin
 
 The following built-in function is available when @option{-mfsgsbase} is
 used.  All of them generate the machine instruction that is part of the
@@ -23335,21 +23299,30 @@ If the transaction aborts, all side effects
 are undone and an abort code encoded as a bit mask is returned.
 The following macros are defined:
 
-@table @code
-@item _XABORT_EXPLICIT
+@defmac{_XABORT_EXPLICIT}
 Transaction was explicitly aborted with @code{_xabort}.  The parameter passed
 to @code{_xabort} is available with @code{_XABORT_CODE(status)}.
-@item _XABORT_RETRY
+@end defmac
+
+@defmac{_XABORT_RETRY}
 Transaction retry is possible.
-@item _XABORT_CONFLICT
+@end defmac
+
+@defmac{_XABORT_CONFLICT}
 Transaction abort due to a memory conflict with another thread.
-@item _XABORT_CAPACITY
+@end defmac
+
+@defmac{_XABORT_CAPACITY}
 Transaction abort due to the transaction using too much memory.
-@item _XABORT_DEBUG
+@end defmac
+
+@defmac{_XABORT_DEBUG}
 Transaction abort due to a debug trap.
-@item _XABORT_NESTED
+@end defmac
+
+@defmac{_XABORT_NESTED}
 Transaction abort in an inner nested transaction.
-@end table
+@end defmac
 
 There is no guarantee
 any transaction ever succeeds, so there always needs to be a valid
@@ -23541,16 +23514,16 @@ The ARM target defines pragmas for controlling the default addition of
 attributes.
 
 @table @code
-@item long_calls
 @cindex pragma, long_calls
+@item long_calls
 Set all subsequent functions to have the @code{long_call} attribute.
 
-@item no_long_calls
 @cindex pragma, no_long_calls
+@item no_long_calls
 Set all subsequent functions to have the @code{short_call} attribute.
 
-@item long_calls_off
 @cindex pragma, long_calls_off
+@item long_calls_off
 Do not affect the @code{long_call} or @code{short_call} attributes of
 subsequent functions.
 @end table
@@ -23559,8 +23532,8 @@ subsequent functions.
 @subsection M32C Pragmas
 
 @table @code
-@item GCC memregs @var{number}
 @cindex pragma, memregs
+@item GCC memregs @var{number}
 Overrides the command-line option @code{-memregs=} for the current
 file.  Use with care!  This pragma must be before any function in the
 file, and mixing different memregs values in different objects may
@@ -23568,8 +23541,8 @@ make them incompatible.  This pragma is useful when a
 performance-critical function uses a memreg for temporary values,
 as it may allow you to reduce the number of memregs used.
 
-@item ADDRESS @var{name} @var{address}
 @cindex pragma, address
+@item ADDRESS @var{name} @var{address}
 For any declared symbols matching @var{name}, this does three things
 to that symbol: it forces the symbol to be located at the given
 address (a number), it forces the symbol to be volatile, and it
@@ -23590,8 +23563,8 @@ char port3;
 
 @table @code
 
-@item ctable_entry @var{index} @var{constant_address}
 @cindex pragma, ctable_entry
+@item ctable_entry @var{index} @var{constant_address}
 Specifies that the PRU CTABLE entry given by @var{index} has the value
 @var{constant_address}.  This enables GCC to emit LBCO/SBCO instructions
 when the load/store address is known and can be addressed with some CTABLE
@@ -23616,8 +23589,8 @@ option, but not the @code{longcall} and @code{shortcall} attributes.
 calls are and are not necessary.
 
 @table @code
-@item longcall (1)
 @cindex pragma, longcall
+@item longcall (1)
 Apply the @code{longcall} attribute to all subsequent function
 declarations.
 
@@ -23658,24 +23631,24 @@ Darwin operating system.  These are useful for compatibility with other
 Mac OS compilers.
 
 @table @code
-@item mark @var{tokens}@dots{}
 @cindex pragma, mark
+@item mark @var{tokens}@dots{}
 This pragma is accepted, but has no effect.
 
-@item options align=@var{alignment}
 @cindex pragma, options align
+@item options align=@var{alignment}
 This pragma sets the alignment of fields in structures.  The values of
 @var{alignment} may be @code{mac68k}, to emulate m68k alignment, or
 @code{power}, to emulate PowerPC alignment.  Uses of this pragma nest
 properly; to restore the previous setting, use @code{reset} for the
 @var{alignment}.
 
-@item segment @var{tokens}@dots{}
 @cindex pragma, segment
+@item segment @var{tokens}@dots{}
 This pragma is accepted, but has no effect.
 
-@item unused (@var{var} [, @var{var}]@dots{})
 @cindex pragma, unused
+@item unused (@var{var} [, @var{var}]@dots{})
 This pragma declares variables to be possibly unused.  GCC does not
 produce warnings for the listed variables.  The effect is similar to
 that of the @code{unused} attribute, except that this pragma may appear
@@ -23690,8 +23663,8 @@ The Solaris target supports @code{#pragma redefine_extname}
 @code{#pragma} directives for compatibility with the system compiler.
 
 @table @code
-@item align @var{alignment} (@var{variable} [, @var{variable}]...)
 @cindex pragma, align
+@item align @var{alignment} (@var{variable} [, @var{variable}]...)
 
 Increase the minimum alignment of each @var{variable} to @var{alignment}.
 This is the same as GCC's @code{aligned} attribute @pxref{Variable
@@ -23700,15 +23673,15 @@ when compiling C and Objective-C@.  It does not currently occur when
 compiling C++, but this is a bug which may be fixed in a future
 release.
 
-@item fini (@var{function} [, @var{function}]...)
 @cindex pragma, fini
+@item fini (@var{function} [, @var{function}]...)
 
 This pragma causes each listed @var{function} to be called after
 main, or during shared module unloading, by adding a call to the
 @code{.fini} section.
 
-@item init (@var{function} [, @var{function}]...)
 @cindex pragma, init
+@item init (@var{function} [, @var{function}]...)
 
 This pragma causes each listed @var{function} to be called during
 initialization (before @code{main}) or during shared module loading, by
@@ -23726,8 +23699,8 @@ Solaris system headers. This effect can also be achieved using the asm
 labels extension (@pxref{Asm Labels}).
 
 @table @code
-@item redefine_extname @var{oldname} @var{newname}
 @cindex pragma, redefine_extname
+@item redefine_extname @var{oldname} @var{newname}
 
 This pragma gives the C function @var{oldname} the assembly symbol
 @var{newname}.  The preprocessor macro @code{__PRAGMA_REDEFINE_EXTNAME}
@@ -23836,8 +23809,8 @@ diagnostics and treat them as errors depending on which preprocessor
 macros are defined.
 
 @table @code
+@cindex pragma, diagnostic
 @item #pragma GCC diagnostic @var{kind} @var{option}
-@cindex pragma, diagnostic
 
 Modifies the disposition of a diagnostic.  Note that not all
 diagnostics are modifiable; at the moment only warnings (normally
@@ -23907,8 +23880,8 @@ GCC also offers a simple mechanism for printing messages during
 compilation.
 
 @table @code
+@cindex pragma, diagnostic
 @item #pragma message @var{string}
-@cindex pragma, diagnostic
 
 Prints @var{string} as a compiler message on compilation.  The message
 is informational only, and is neither a compilation warning nor an
@@ -23933,8 +23906,8 @@ TODO(Remember to fix this)
 prints @samp{/tmp/file.c:4: note: #pragma message:
 TODO - Remember to fix this}.
 
+@cindex pragma, diagnostic
 @item #pragma GCC error @var{message}
-@cindex pragma, diagnostic
 Generates an error message.  This pragma @emph{is} considered to
 indicate an error in the compilation, and it will be treated as such.
 
@@ -23957,8 +23930,8 @@ void foo (void)
 @}
 @end smallexample
 
+@cindex pragma, diagnostic
 @item #pragma GCC warning @var{message}
-@cindex pragma, diagnostic
 This is just like @samp{pragma GCC error} except that a warning
 message is issued instead of an error message.  Unless
 @option{-Werror} is in effect, in which case this pragma will generate
@@ -23970,9 +23943,9 @@ an error as well.
 @subsection Visibility Pragmas
 
 @table @code
+@cindex pragma, visibility
 @item #pragma GCC visibility push(@var{visibility})
 @itemx #pragma GCC visibility pop
-@cindex pragma, visibility
 
 This pragma allows the user to set the visibility for multiple
 declarations without having to give each a visibility attribute
@@ -23994,13 +23967,13 @@ For compatibility with Microsoft Windows compilers, GCC supports
 and @samp{#pragma pop_macro(@var{"macro_name"})}.
 
 @table @code
-@item #pragma push_macro(@var{"macro_name"})
 @cindex pragma, push_macro
+@item #pragma push_macro(@var{"macro_name"})
 This pragma saves the value of the macro named as @var{macro_name} to
 the top of the stack for this macro.
 
-@item #pragma pop_macro(@var{"macro_name"})
 @cindex pragma, pop_macro
+@item #pragma pop_macro(@var{"macro_name"})
 This pragma sets the value of the macro named as @var{macro_name} to
 the value on top of the stack for this macro. If the stack for
 @var{macro_name} is empty, the value of the macro remains unchanged.
@@ -24025,8 +23998,8 @@ push_macro} and restored by @code{#pragma pop_macro}.
 @subsection Function Specific Option Pragmas
 
 @table @code
-@item #pragma GCC target (@var{string}, @dots{})
 @cindex pragma GCC target
+@item #pragma GCC target (@var{string}, @dots{})
 
 This pragma allows you to set target-specific options for functions
 defined later in the source file.  One or more strings can be
@@ -24040,8 +24013,8 @@ syntax.
 The @code{#pragma GCC target} pragma is presently implemented for
 x86, ARM, AArch64, PowerPC, S/390, and Nios II targets only.
 
-@item #pragma GCC optimize (@var{string}, @dots{})
 @cindex pragma GCC optimize
+@item #pragma GCC optimize (@var{string}, @dots{})
 
 This pragma allows you to set global optimization options for functions
 defined later in the source file.  One or more strings can be
@@ -24052,10 +24025,10 @@ the strings in the pragma are optional.  @xref{Function Attributes},
 for more information about the @code{optimize} attribute and the attribute
 syntax.
 
-@item #pragma GCC push_options
-@itemx #pragma GCC pop_options
 @cindex pragma GCC push_options
 @cindex pragma GCC pop_options
+@item #pragma GCC push_options
+@itemx #pragma GCC pop_options
 
 These pragmas maintain a stack of the current target and optimization
 options.  It is intended for include files where you temporarily want
@@ -24063,8 +24036,8 @@ to switch to using a different @samp{#pragma GCC target} or
 @samp{#pragma GCC optimize} and then to pop back to the previous
 options.
 
-@item #pragma GCC reset_options
 @cindex pragma GCC reset_options
+@item #pragma GCC reset_options
 
 This pragma clears the current @code{#pragma GCC target} and
 @code{#pragma GCC optimize} to use the default switches as specified
@@ -24076,8 +24049,8 @@ on the command line.
 @subsection Loop-Specific Pragmas
 
 @table @code
-@item #pragma GCC ivdep
 @cindex pragma GCC ivdep
+@item #pragma GCC ivdep
 
 With this pragma, the programmer asserts that there are no loop-carried
 dependencies which would prevent consecutive iterations of
@@ -24112,8 +24085,8 @@ void ignore_vec_dep (int *a, int k, int c, int m)
 @}
 @end smallexample
 
-@item #pragma GCC unroll @var{n}
 @cindex pragma GCC unroll @var{n}
+@item #pragma GCC unroll @var{n}
 
 You can use this pragma to control how many times a loop should be unrolled.
 It must be placed immediately before a @code{for}, @code{while} or @code{do}
@@ -24645,8 +24618,8 @@ Local static variables and string constants used in an inline function
 are also considered to have vague linkage, since they must be shared
 between all inlined and out-of-line instances of the function.
 
-@item VTables
 @cindex vtable
+@item VTables
 C++ virtual functions are implemented in most compilers using a lookup
 table, known as a vtable.  The vtable contains pointers to the virtual
 functions provided by a class, and each object of the class contains a
@@ -24661,9 +24634,9 @@ vtable is still emitted in every translation unit that defines it.
 Make sure that any inline virtuals are declared inline in the class
 body, even if they are not defined there.
 
-@item @code{type_info} objects
 @cindex @code{type_info}
 @cindex RTTI
+@item @code{type_info} objects
 C++ requires information about types to be written out in order to
 implement @samp{dynamic_cast}, @samp{typeid} and exception handling.
 For polymorphic classes (classes with virtual functions), the @samp{type_info}
@@ -24717,9 +24690,9 @@ program to grow due to unnecessary out-of-line copies of inline
 functions.
 
 @table @code
+@kindex #pragma interface
 @item #pragma interface
 @itemx #pragma interface "@var{subdir}/@var{objects}.h"
-@kindex #pragma interface
 Use this directive in @emph{header files} that define object classes, to save
 space in most of the object files that use those classes.  Normally,
 local copies of certain information (backup copies of inline member
@@ -24737,9 +24710,9 @@ multiple headers with the same name in different directories.  If you
 use this form, you must specify the same string to @samp{#pragma
 implementation}.
 
+@kindex #pragma implementation
 @item #pragma implementation
 @itemx #pragma implementation "@var{objects}.h"
-@kindex #pragma implementation
 Use this pragma in a @emph{main input file}, when you want full output from
 included header files to be generated (and made globally visible).  The
 included header file, in turn, should use @samp{#pragma interface}.
@@ -24966,10 +24939,10 @@ You must specify @option{-Wno-pmf-conversions} to use this extension.
 Some attributes only make sense for C++ programs.
 
 @table @code
-@item abi_tag ("@var{tag}", ...)
 @cindex @code{abi_tag} function attribute
 @cindex @code{abi_tag} variable attribute
 @cindex @code{abi_tag} type attribute
+@item abi_tag ("@var{tag}", ...)
 The @code{abi_tag} attribute can be applied to a function, variable, or class
 declaration.  It modifies the mangled name of the entity to
 incorporate the tag name, in order to distinguish the function or
@@ -25008,8 +24981,8 @@ variable or function.  @option{-Wabi-tag} also warns about this
 situation; this warning can be avoided by explicitly tagging the
 variable or function or moving it into a tagged inline namespace.
 
-@item init_priority (@var{priority})
 @cindex @code{init_priority} variable attribute
+@item init_priority (@var{priority})
 
 In Standard C++, objects defined at namespace scope are guaranteed to be
 initialized in an order in strict accordance with that of their definitions
@@ -25032,8 +25005,8 @@ Some_Class  B  __attribute__ ((init_priority (543)));
 Note that the particular values of @var{priority} do not matter; only their
 relative ordering.
 
-@item warn_unused
 @cindex @code{warn_unused} type attribute
+@item warn_unused
 
 For C++ types with non-trivial constructors and/or destructors it is
 impossible for the compiler to determine whether a variable of this
@@ -25117,159 +25090,179 @@ compile-time determination of
 various characteristics of a type (or of a
 pair of types).
 
-@table @code
-@item __has_nothrow_assign (type)
-If @code{type} is @code{const}-qualified or is a reference type then
+@defbuiltin{bool __has_nothrow_assign (@var{type})}
+If @var{type} is @code{const}-qualified or is a reference type then
 the trait is @code{false}.  Otherwise if @code{__has_trivial_assign (type)}
-is @code{true} then the trait is @code{true}, else if @code{type} is
+is @code{true} then the trait is @code{true}, else if @var{type} is
 a cv-qualified class or union type with copy assignment operators that are
 known not to throw an exception then the trait is @code{true}, else it is
 @code{false}.
-Requires: @code{type} shall be a complete type, (possibly cv-qualified)
+Requires: @var{type} shall be a complete type, (possibly cv-qualified)
 @code{void}, or an array of unknown bound.
+@enddefbuiltin
 
-@item __has_nothrow_copy (type)
+@defbuiltin{bool __has_nothrow_copy (@var{type})}
 If @code{__has_trivial_copy (type)} is @code{true} then the trait is
-@code{true}, else if @code{type} is a cv-qualified class or union type
+@code{true}, else if @var{type} is a cv-qualified class or union type
 with copy constructors that are known not to throw an exception then
 the trait is @code{true}, else it is @code{false}.
-Requires: @code{type} shall be a complete type, (possibly cv-qualified)
+Requires: @var{type} shall be a complete type, (possibly cv-qualified)
 @code{void}, or an array of unknown bound.
+@enddefbuiltin
 
-@item __has_nothrow_constructor (type)
+@defbuiltin{bool __has_nothrow_constructor (@var{type})}
 If @code{__has_trivial_constructor (type)} is @code{true} then the trait
-is @code{true}, else if @code{type} is a cv class or union type (or array
+is @code{true}, else if @var{type} is a cv class or union type (or array
 thereof) with a default constructor that is known not to throw an
 exception then the trait is @code{true}, else it is @code{false}.
-Requires: @code{type} shall be a complete type, (possibly cv-qualified)
+Requires: @var{type} shall be a complete type, (possibly cv-qualified)
 @code{void}, or an array of unknown bound.
+@enddefbuiltin
 
-@item __has_trivial_assign (type)
-If @code{type} is @code{const}- qualified or is a reference type then
+@defbuiltin{bool __has_trivial_assign (@var{type})}
+If @var{type} is @code{const}- qualified or is a reference type then
 the trait is @code{false}.  Otherwise if @code{__is_trivial (type)} is
-@code{true} then the trait is @code{true}, else if @code{type} is
+@code{true} then the trait is @code{true}, else if @var{type} is
 a cv-qualified class or union type with a trivial copy assignment
 ([class.copy]) then the trait is @code{true}, else it is @code{false}.
-Requires: @code{type} shall be a complete type, (possibly cv-qualified)
+Requires: @var{type} shall be a complete type, (possibly cv-qualified)
 @code{void}, or an array of unknown bound.
+@enddefbuiltin
 
-@item __has_trivial_copy (type)
-If @code{__is_trivial (type)} is @code{true} or @code{type} is a reference
-type then the trait is @code{true}, else if @code{type} is a cv class
+@defbuiltin{bool __has_trivial_copy (@var{type})}
+If @code{__is_trivial (type)} is @code{true} or @var{type} is a reference
+type then the trait is @code{true}, else if @var{type} is a cv class
 or union type with a trivial copy constructor ([class.copy]) then the trait
-is @code{true}, else it is @code{false}.  Requires: @code{type} shall be
+is @code{true}, else it is @code{false}.  Requires: @var{type} shall be
 a complete type, (possibly cv-qualified) @code{void}, or an array of unknown
 bound.
+@enddefbuiltin
 
-@item __has_trivial_constructor (type)
+@defbuiltin{bool __has_trivial_constructor (@var{type})}
 If @code{__is_trivial (type)} is @code{true} then the trait is @code{true},
-else if @code{type} is a cv-qualified class or union type (or array thereof)
+else if @var{type} is a cv-qualified class or union type (or array thereof)
 with a trivial default constructor ([class.ctor]) then the trait is @code{true},
 else it is @code{false}.
-Requires: @code{type} shall be a complete type, (possibly cv-qualified)
+Requires: @var{type} shall be a complete type, (possibly cv-qualified)
 @code{void}, or an array of unknown bound.
+@enddefbuiltin
 
-@item __has_trivial_destructor (type)
-If @code{__is_trivial (type)} is @code{true} or @code{type} is a reference type
-then the trait is @code{true}, else if @code{type} is a cv class or union
+@defbuiltin{bool __has_trivial_destructor (@var{type})}
+If @code{__is_trivial (type)} is @code{true} or @var{type} is a reference type
+then the trait is @code{true}, else if @var{type} is a cv class or union
 type (or array thereof) with a trivial destructor ([class.dtor]) then
 the trait is @code{true}, else it is @code{false}.
-Requires: @code{type} shall be a complete type, (possibly cv-qualified)
+Requires: @var{type} shall be a complete type, (possibly cv-qualified)
 @code{void}, or an array of unknown bound.
+@enddefbuiltin
 
-@item __has_virtual_destructor (type)
-If @code{type} is a class type with a virtual destructor
+@defbuiltin{bool __has_virtual_destructor (@var{type})}
+If @var{type} is a class type with a virtual destructor
 ([class.dtor]) then the trait is @code{true}, else it is @code{false}.
-Requires: If @code{type} is a non-union class type, it shall be a complete type.
+Requires: If @var{type} is a non-union class type, it shall be a complete type.
+@enddefbuiltin
 
-@item __is_abstract (type)
-If @code{type} is an abstract class ([class.abstract]) then the trait
+@defbuiltin{bool __is_abstract (@var{type})}
+If @var{type} is an abstract class ([class.abstract]) then the trait
 is @code{true}, else it is @code{false}.
-Requires: If @code{type} is a non-union class type, it shall be a complete type.
+Requires: If @var{type} is a non-union class type, it shall be a complete type.
+@enddefbuiltin
 
-@item __is_aggregate (type)
-If @code{type} is an aggregate type ([dcl.init.aggr]) the trait is
+@defbuiltin{bool __is_aggregate (@var{type})}
+If @var{type} is an aggregate type ([dcl.init.aggr]) the trait is
 @code{true}, else it is @code{false}.
-Requires: If @code{type} is a class type, it shall be a complete type.
+Requires: If @var{type} is a class type, it shall be a complete type.
+@enddefbuiltin
 
-@item __is_base_of (base_type, derived_type)
-If @code{base_type} is a base class of @code{derived_type}
+@defbuiltin{bool __is_base_of (@var{base_type}, @var{derived_type})}
+If @var{base_type} is a base class of @var{derived_type}
 ([class.derived]) then the trait is @code{true}, otherwise it is @code{false}.
-Top-level cv-qualifications of @code{base_type} and
-@code{derived_type} are ignored.  For the purposes of this trait, a
+Top-level cv-qualifications of @var{base_type} and
+@var{derived_type} are ignored.  For the purposes of this trait, a
 class type is considered is own base.
 Requires: if @code{__is_class (base_type)} and @code{__is_class (derived_type)}
-are @code{true} and @code{base_type} and @code{derived_type} are not the same
-type (disregarding cv-qualifiers), @code{derived_type} shall be a complete
+are @code{true} and @var{base_type} and @var{derived_type} are not the same
+type (disregarding cv-qualifiers), @var{derived_type} shall be a complete
 type.  A diagnostic is produced if this requirement is not met.
+@enddefbuiltin
 
-@item __is_class (type)
-If @code{type} is a cv-qualified class type, and not a union type
+@defbuiltin{bool __is_class (@var{type})}
+If @var{type} is a cv-qualified class type, and not a union type
 ([basic.compound]) the trait is @code{true}, else it is @code{false}.
+@enddefbuiltin
 
-@item __is_empty (type)
+@defbuiltin{bool __is_empty (@var{type})}
 If @code{__is_class (type)} is @code{false} then the trait is @code{false}.
-Otherwise @code{type} is considered empty if and only if: @code{type}
+Otherwise @var{type} is considered empty if and only if: @var{type}
 has no non-static data members, or all non-static data members, if
-any, are bit-fields of length 0, and @code{type} has no virtual
-members, and @code{type} has no virtual base classes, and @code{type}
-has no base classes @code{base_type} for which
+any, are bit-fields of length 0, and @var{type} has no virtual
+members, and @var{type} has no virtual base classes, and @var{type}
+has no base classes @var{base_type} for which
 @code{__is_empty (base_type)} is @code{false}.
-Requires: If @code{type} is a non-union class type, it shall be a complete type.
+Requires: If @var{type} is a non-union class type, it shall be a complete type.
+@enddefbuiltin
 
-@item __is_enum (type)
-If @code{type} is a cv enumeration type ([basic.compound]) the trait is
+@defbuiltin{bool __is_enum (@var{type})}
+If @var{type} is a cv enumeration type ([basic.compound]) the trait is
 @code{true}, else it is @code{false}.
+@enddefbuiltin
 
-@item __is_final (type)
-If @code{type} is a class or union type marked @code{final}, then the trait
+@defbuiltin{bool __is_final (@var{type})}
+If @var{type} is a class or union type marked @code{final}, then the trait
 is @code{true}, else it is @code{false}.
-Requires: If @code{type} is a class type, it shall be a complete type.
+Requires: If @var{type} is a class type, it shall be a complete type.
+@enddefbuiltin
 
-@item __is_literal_type (type)
-If @code{type} is a literal type ([basic.types]) the trait is
+@defbuiltin{bool __is_literal_type (@var{type})}
+If @var{type} is a literal type ([basic.types]) the trait is
 @code{true}, else it is @code{false}.
-Requires: @code{type} shall be a complete type, (possibly cv-qualified)
+Requires: @var{type} shall be a complete type, (possibly cv-qualified)
 @code{void}, or an array of unknown bound.
+@enddefbuiltin
 
-@item __is_pod (type)
-If @code{type} is a cv POD type ([basic.types]) then the trait is @code{true},
+@defbuiltin{bool __is_pod (@var{type})}
+If @var{type} is a cv POD type ([basic.types]) then the trait is @code{true},
 else it is @code{false}.
-Requires: @code{type} shall be a complete type, (possibly cv-qualified)
+Requires: @var{type} shall be a complete type, (possibly cv-qualified)
 @code{void}, or an array of unknown bound.
+@enddefbuiltin
 
-@item __is_polymorphic (type)
-If @code{type} is a polymorphic class ([class.virtual]) then the trait
+@defbuiltin{bool __is_polymorphic (@var{type})}
+If @var{type} is a polymorphic class ([class.virtual]) then the trait
 is @code{true}, else it is @code{false}.
-Requires: If @code{type} is a non-union class type, it shall be a complete type.
+Requires: If @var{type} is a non-union class type, it shall be a complete type.
+@enddefbuiltin
 
-@item __is_standard_layout (type)
-If @code{type} is a standard-layout type ([basic.types]) the trait is
+@defbuiltin{bool __is_standard_layout (@var{type})}
+If @var{type} is a standard-layout type ([basic.types]) the trait is
 @code{true}, else it is @code{false}.
-Requires: @code{type} shall be a complete type, an array of complete types,
+Requires: @var{type} shall be a complete type, an array of complete types,
 or (possibly cv-qualified) @code{void}.
+@enddefbuiltin
 
-@item __is_trivial (type)
-If @code{type} is a trivial type ([basic.types]) the trait is
+@defbuiltin{bool __is_trivial (@var{type})}
+If @var{type} is a trivial type ([basic.types]) the trait is
 @code{true}, else it is @code{false}.
-Requires: @code{type} shall be a complete type, an array of complete types,
+Requires: @var{type} shall be a complete type, an array of complete types,
 or (possibly cv-qualified) @code{void}.
+@enddefbuiltin
 
-@item __is_union (type)
-If @code{type} is a cv union type ([basic.compound]) the trait is
+@defbuiltin{bool __is_union (@var{type})}
+If @var{type} is a cv union type ([basic.compound]) the trait is
 @code{true}, else it is @code{false}.
+@enddefbuiltin
 
-@item __underlying_type (type)
-The underlying type of @code{type}.
-Requires: @code{type} shall be an enumeration type ([dcl.enum]).
+@defbuiltin{bool __underlying_type (@var{type})}
+The underlying type of @var{type}.
+Requires: @var{type} shall be an enumeration type ([dcl.enum]).
+@enddefbuiltin
 
-@item __integer_pack (length)
+@defbuiltin{bool __integer_pack (@var{length})}
 When used as the pattern of a pack expansion within a template
 definition, expands to a template argument pack containing integers
-from @code{0} to @code{length-1}.  This is provided for efficient
-implementation of @code{std::make_integer_sequence}.
-
-@end table
+from @code{0} to @code{@var{length}-1}.  This is provided for
+efficient implementation of @code{std::make_integer_sequence}.
+@enddefbuiltin
 
 
 @node C++ Concepts
@@ -25285,36 +25278,39 @@ type names.
 The following keywords are reserved for concepts.
 
 @table @code
+@kindex assumes
 @item assumes
 States an expression as an assumption, and if possible, verifies that the
 assumption is valid. For example, @code{assume(n > 0)}.
 
+@kindex axiom
 @item axiom
 Introduces an axiom definition. Axioms introduce requirements on values.
 
+@kindex axiom
 @item forall
 Introduces a universally quantified object in an axiom. For example,
 @code{forall (int n) n + 0 == n}).
 
+@kindex axiom
 @item concept
 Introduces a concept definition. Concepts are sets of syntactic and semantic
 requirements on types and their values.
 
+@kindex requires
 @item requires
 Introduces constraints on template arguments or requirements for a member
 function of a class template.
-
 @end table
 
 The front end also exposes a number of internal mechanism that can be used
 to simplify the writing of type traits. Note that some of these traits are
 likely to be removed in the future.
 
-@table @code
-@item __is_same (type1, type2)
-A binary type trait: @code{true} whenever the type arguments are the same.
-
-@end table
+@defbuiltin{bool __is_same (@var{type1}, @var{type2})}
+A binary type trait: @code{true} whenever the @var{type1} and
+@var{type2} refer to the same type.
+@enddefbuiltin
 
 
 @node Deprecated Features
diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi
index bc7cc6e6743..b3d500d4f47 100644
--- a/gcc/doc/gcc.texi
+++ b/gcc/doc/gcc.texi
@@ -37,12 +37,12 @@
 
 @paragraphindent 1
 
+@documentlanguage en_US
 @c %**end of header
 
 @copying
 This file documents the use of the GNU compilers.
 
-@quotation
 Copyright @copyright{} 1988-2023 Free Software Foundation, Inc.
 
 Permission is granted to copy, distribute and/or modify this document
@@ -55,10 +55,13 @@ Texts being (a) (see below), and with the Back-Cover Texts being (b)
 
 (a) The FSF's Front-Cover Text is:
 
+@quotation
      A GNU Manual
+@end quotation
 
 (b) The FSF's Back-Cover Text is:
 
+@quotation
      You have freedom to copy and modify this GNU Manual, like GNU
      software.  Copies published by the Free Software Foundation raise
      funds for GNU development.
diff --git a/gcc/doc/include/gcc-common.texi b/gcc/doc/include/gcc-common.texi
index dda655b06a5..b64cc96b4de 100644
--- a/gcc/doc/include/gcc-common.texi
+++ b/gcc/doc/include/gcc-common.texi
@@ -71,3 +71,19 @@
 @c forced to the bottom of the page.
 @vskip 0pt plus 1filll
 @end macro
+
+@c Convenience macro for defining builtins, in similar spirit
+@c to @deftypefun for functions.  These macros provide syntax similar
+@c to @deftypefun, except all arguments are passed as a single
+@c argument, by being wrapped in curly braces.
+@macro defbuiltin {rest}
+@deftypefn {Built-in Function} \rest\
+@end macro
+
+@macro defbuiltinx {rest}
+@deftypefnx {Built-in Function} \rest\
+@end macro
+
+@macro enddefbuiltin
+@end deftypefn
+@end macro
-- 
2.39.2


^ permalink raw reply	[flat|nested] 59+ messages in thread

* [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-02-23 10:27 [PATCH v2 0/5] A small Texinfo refinement Arsen Arsenović
                   ` (2 preceding siblings ...)
  2023-02-23 10:27 ` [PATCH v2 3/5] doc: Add @defbuiltin family of helpers, set documentlanguage Arsen Arsenović
@ 2023-02-23 10:27 ` Arsen Arsenović
  2023-03-09 23:55   ` Sandra Loosemore
  2023-02-23 10:27 ` [PATCH v2 5/5] update_web_docs_git: Update CSS reference to new manual CSS Arsen Arsenović
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-02-23 10:27 UTC (permalink / raw)
  To: gcc-patches
  Cc: Gerald Pfeifer, Joseph Myers, Sandra Loosemore, Arsen Arsenović

The @gol macro appears to have existed as a workaround for a bug in old
versions of makeinfo and/or texinfo.tex, where they would, in some types
of output, fail to emit line breaks in @gccoptlists.  After updating
texinfo.tex, I noticed that this behavior appears to no longer be
exhibited, instead, both acted correctly and inserted newlines.  The
(groff) manual output also appears unaffected.

gcc/ChangeLog:

	* doc/include/texinfo.tex: Update to 2023-01-17.19.
	* doc/implement-c.texi: Remove usage of @gol.
	* doc/invoke.texi: Ditto.
	* doc/sourcebuild.texi: Ditto.
	* doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
	texinfo.tex versions, the bug it was working around appears to
	be gone.

gcc/fortran/ChangeLog:

	* invoke.texi: Remove usages of @gol.
	* intrinsic.texi: Ditto.
---

This email omits the hunks that are simply the updated texinfo.tex, as
there's nothing to review there.  Nonetheless, these should be applied.
When applying, please apply
https://git.sr.ht/~arsen/gcc/commit/d9306db884d521dccf651d31b045ea7b8c3f78d1.patch

 gcc/doc/implement-c.texi        |    2 +-
 gcc/doc/include/gcc-common.texi |   10 -
 gcc/doc/include/texinfo.tex     | 7599 +++++++++++++++++++------------
 gcc/doc/invoke.texi             | 2704 +++++------
 gcc/doc/sourcebuild.texi        |    4 -
 gcc/fortran/intrinsic.texi      |  722 +--
 gcc/fortran/invoke.texi         |   80 +-
 7 files changed, 6435 insertions(+), 4686 deletions(-)

diff --git a/gcc/doc/implement-c.texi b/gcc/doc/implement-c.texi
index c82f1914b95..b104f8d8480 100644
--- a/gcc/doc/implement-c.texi
+++ b/gcc/doc/implement-c.texi
@@ -293,7 +293,7 @@ The accuracy is unknown.
 
 @item
 @cite{The rounding behaviors characterized by non-standard values
-of @code{FLT_ROUNDS} @gol
+of @code{FLT_ROUNDS}
 (C90, C99 and C11 5.2.4.2.2).}
 
 GCC does not use such values.
diff --git a/gcc/doc/include/gcc-common.texi b/gcc/doc/include/gcc-common.texi
index b64cc96b4de..02e879ebf60 100644
--- a/gcc/doc/include/gcc-common.texi
+++ b/gcc/doc/include/gcc-common.texi
@@ -20,16 +20,6 @@
 \body\
 @end smallexample
 @end macro
-@c Makeinfo handles the above macro OK, TeX needs manual line breaks;
-@c they get lost at some point in handling the macro.  But if @macro is
-@c used here rather than @alias, it produces double line breaks.
-@iftex
-@alias gol = *
-@end iftex
-@ifnottex
-@macro gol
-@end macro
-@end ifnottex
 
 @c For FSF printing, define FSFPRINT.  Also update the ISBN and last
 @c printing date for the manual being printed.
diff --git a/gcc/doc/include/texinfo.tex b/gcc/doc/include/texinfo.tex
index a5a7b2beac7..0f57611a5e4 100644
--- a/gcc/doc/include/texinfo.tex
+++ b/gcc/doc/include/texinfo.tex

				OMITTED

diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index e1f897e8a84..2ff6ced347d 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -186,483 +186,483 @@ in the following sections.
 @table @emph
 @item Overall Options
 @xref{Overall Options,,Options Controlling the Kind of Output}.
-@gccoptlist{-c  -S  -E  -o @var{file} @gol
--dumpbase @var{dumpbase}  -dumpbase-ext @var{auxdropsuf} @gol
--dumpdir @var{dumppfx}  -x @var{language}  @gol
--v  -###  --help@r{[}=@var{class}@r{[},@dots{}@r{]]}  --target-help  --version @gol
--pass-exit-codes  -pipe  -specs=@var{file}  -wrapper  @gol
-@@@var{file}  -ffile-prefix-map=@var{old}=@var{new}  @gol
--fplugin=@var{file}  -fplugin-arg-@var{name}=@var{arg}  @gol
+@gccoptlist{-c  -S  -E  -o @var{file}
+-dumpbase @var{dumpbase}  -dumpbase-ext @var{auxdropsuf}
+-dumpdir @var{dumppfx}  -x @var{language}
+-v  -###  --help@r{[}=@var{class}@r{[},@dots{}@r{]]}  --target-help  --version
+-pass-exit-codes  -pipe  -specs=@var{file}  -wrapper
+@@@var{file}  -ffile-prefix-map=@var{old}=@var{new}
+-fplugin=@var{file}  -fplugin-arg-@var{name}=@var{arg}
 -fdump-ada-spec@r{[}-slim@r{]}  -fada-spec-parent=@var{unit}  -fdump-go-spec=@var{file}}
 
 @item C Language Options
 @xref{C Dialect Options,,Options Controlling C Dialect}.
-@gccoptlist{-ansi  -std=@var{standard}  -aux-info @var{filename} @gol
--fno-asm  @gol
--fno-builtin  -fno-builtin-@var{function}  -fcond-mismatch @gol
--ffreestanding  -fgimple  -fgnu-tm  -fgnu89-inline  -fhosted @gol
--flax-vector-conversions  -fms-extensions @gol
--foffload=@var{arg}  -foffload-options=@var{arg} @gol
--fopenacc  -fopenacc-dim=@var{geom} @gol
--fopenmp  -fopenmp-simd  -fopenmp-target-simd-clone@r{[}=@var{device-type}@r{]} @gol
--fpermitted-flt-eval-methods=@var{standard} @gol
--fplan9-extensions  -fsigned-bitfields  -funsigned-bitfields @gol
--fsigned-char  -funsigned-char -fstrict-flex-arrays[=@var{n}] @gol
+@gccoptlist{-ansi  -std=@var{standard}  -aux-info @var{filename}
+-fno-asm
+-fno-builtin  -fno-builtin-@var{function}  -fcond-mismatch
+-ffreestanding  -fgimple  -fgnu-tm  -fgnu89-inline  -fhosted
+-flax-vector-conversions  -fms-extensions
+-foffload=@var{arg}  -foffload-options=@var{arg}
+-fopenacc  -fopenacc-dim=@var{geom}
+-fopenmp  -fopenmp-simd  -fopenmp-target-simd-clone@r{[}=@var{device-type}@r{]}
+-fpermitted-flt-eval-methods=@var{standard}
+-fplan9-extensions  -fsigned-bitfields  -funsigned-bitfields
+-fsigned-char  -funsigned-char -fstrict-flex-arrays[=@var{n}]
 -fsso-struct=@var{endianness}}
 
 @item C++ Language Options
 @xref{C++ Dialect Options,,Options Controlling C++ Dialect}.
-@gccoptlist{-fabi-version=@var{n}  -fno-access-control @gol
--faligned-new=@var{n}  -fargs-in-order=@var{n}  -fchar8_t  -fcheck-new @gol
--fconstexpr-depth=@var{n}  -fconstexpr-cache-depth=@var{n} @gol
--fconstexpr-loop-limit=@var{n}  -fconstexpr-ops-limit=@var{n} @gol
--fno-elide-constructors @gol
--fno-enforce-eh-specs @gol
--fno-gnu-keywords @gol
--fno-implicit-templates @gol
--fno-implicit-inline-templates @gol
--fno-implement-inlines  @gol
--fmodule-header@r{[}=@var{kind}@r{]} -fmodule-only -fmodules-ts @gol
--fmodule-implicit-inline @gol
--fno-module-lazy @gol
--fmodule-mapper=@var{specification} @gol
--fmodule-version-ignore @gol
--fms-extensions @gol
--fnew-inheriting-ctors @gol
--fnew-ttp-matching @gol
--fno-nonansi-builtins  -fnothrow-opt  -fno-operator-names @gol
--fno-optional-diags  -fpermissive @gol
--fno-pretty-templates @gol
--fno-rtti  -fsized-deallocation @gol
--ftemplate-backtrace-limit=@var{n} @gol
--ftemplate-depth=@var{n} @gol
--fno-threadsafe-statics  -fuse-cxa-atexit @gol
--fno-weak  -nostdinc++ @gol
--fvisibility-inlines-hidden @gol
--fvisibility-ms-compat @gol
--fext-numeric-literals @gol
--flang-info-include-translate@r{[}=@var{header}@r{]} @gol
--flang-info-include-translate-not @gol
--flang-info-module-cmi@r{[}=@var{module}@r{]} @gol
--stdlib=@var{libstdc++,libc++} @gol
--Wabi-tag  -Wcatch-value  -Wcatch-value=@var{n} @gol
--Wno-class-conversion  -Wclass-memaccess @gol
--Wcomma-subscript  -Wconditionally-supported @gol
--Wno-conversion-null  -Wctad-maybe-unsupported @gol
--Wctor-dtor-privacy  -Wdangling-reference @gol
--Wno-delete-incomplete @gol
--Wdelete-non-virtual-dtor  -Wno-deprecated-array-compare @gol
--Wdeprecated-copy -Wdeprecated-copy-dtor @gol
--Wno-deprecated-enum-enum-conversion -Wno-deprecated-enum-float-conversion @gol
--Weffc++  -Wno-exceptions -Wextra-semi  -Wno-inaccessible-base @gol
--Wno-inherited-variadic-ctor  -Wno-init-list-lifetime @gol
--Winvalid-constexpr -Winvalid-imported-macros @gol
--Wno-invalid-offsetof  -Wno-literal-suffix @gol
--Wmismatched-new-delete -Wmismatched-tags @gol
--Wmultiple-inheritance  -Wnamespaces  -Wnarrowing @gol
--Wnoexcept  -Wnoexcept-type  -Wnon-virtual-dtor @gol
--Wpessimizing-move  -Wno-placement-new  -Wplacement-new=@var{n} @gol
--Wrange-loop-construct -Wredundant-move -Wredundant-tags @gol
--Wreorder  -Wregister @gol
--Wstrict-null-sentinel  -Wno-subobject-linkage  -Wtemplates @gol
--Wno-non-template-friend  -Wold-style-cast @gol
--Woverloaded-virtual  -Wno-pmf-conversions -Wself-move -Wsign-promo @gol
--Wsized-deallocation  -Wsuggest-final-methods @gol
--Wsuggest-final-types  -Wsuggest-override  @gol
--Wno-terminate  -Wuseless-cast  -Wno-vexing-parse  @gol
--Wvirtual-inheritance  @gol
+@gccoptlist{-fabi-version=@var{n}  -fno-access-control
+-faligned-new=@var{n}  -fargs-in-order=@var{n}  -fchar8_t  -fcheck-new
+-fconstexpr-depth=@var{n}  -fconstexpr-cache-depth=@var{n}
+-fconstexpr-loop-limit=@var{n}  -fconstexpr-ops-limit=@var{n}
+-fno-elide-constructors
+-fno-enforce-eh-specs
+-fno-gnu-keywords
+-fno-implicit-templates
+-fno-implicit-inline-templates
+-fno-implement-inlines
+-fmodule-header@r{[}=@var{kind}@r{]} -fmodule-only -fmodules-ts
+-fmodule-implicit-inline
+-fno-module-lazy
+-fmodule-mapper=@var{specification}
+-fmodule-version-ignore
+-fms-extensions
+-fnew-inheriting-ctors
+-fnew-ttp-matching
+-fno-nonansi-builtins  -fnothrow-opt  -fno-operator-names
+-fno-optional-diags  -fpermissive
+-fno-pretty-templates
+-fno-rtti  -fsized-deallocation
+-ftemplate-backtrace-limit=@var{n}
+-ftemplate-depth=@var{n}
+-fno-threadsafe-statics  -fuse-cxa-atexit
+-fno-weak  -nostdinc++
+-fvisibility-inlines-hidden
+-fvisibility-ms-compat
+-fext-numeric-literals
+-flang-info-include-translate@r{[}=@var{header}@r{]}
+-flang-info-include-translate-not
+-flang-info-module-cmi@r{[}=@var{module}@r{]}
+-stdlib=@var{libstdc++,libc++}
+-Wabi-tag  -Wcatch-value  -Wcatch-value=@var{n}
+-Wno-class-conversion  -Wclass-memaccess
+-Wcomma-subscript  -Wconditionally-supported
+-Wno-conversion-null  -Wctad-maybe-unsupported
+-Wctor-dtor-privacy  -Wdangling-reference
+-Wno-delete-incomplete
+-Wdelete-non-virtual-dtor  -Wno-deprecated-array-compare
+-Wdeprecated-copy -Wdeprecated-copy-dtor
+-Wno-deprecated-enum-enum-conversion -Wno-deprecated-enum-float-conversion
+-Weffc++  -Wno-exceptions -Wextra-semi  -Wno-inaccessible-base
+-Wno-inherited-variadic-ctor  -Wno-init-list-lifetime
+-Winvalid-constexpr -Winvalid-imported-macros
+-Wno-invalid-offsetof  -Wno-literal-suffix
+-Wmismatched-new-delete -Wmismatched-tags
+-Wmultiple-inheritance  -Wnamespaces  -Wnarrowing
+-Wnoexcept  -Wnoexcept-type  -Wnon-virtual-dtor
+-Wpessimizing-move  -Wno-placement-new  -Wplacement-new=@var{n}
+-Wrange-loop-construct -Wredundant-move -Wredundant-tags
+-Wreorder  -Wregister
+-Wstrict-null-sentinel  -Wno-subobject-linkage  -Wtemplates
+-Wno-non-template-friend  -Wold-style-cast
+-Woverloaded-virtual  -Wno-pmf-conversions -Wself-move -Wsign-promo
+-Wsized-deallocation  -Wsuggest-final-methods
+-Wsuggest-final-types  -Wsuggest-override
+-Wno-terminate  -Wuseless-cast  -Wno-vexing-parse
+-Wvirtual-inheritance
 -Wno-virtual-move-assign  -Wvolatile  -Wzero-as-null-pointer-constant}
 
 @item Objective-C and Objective-C++ Language Options
 @xref{Objective-C and Objective-C++ Dialect Options,,Options Controlling
 Objective-C and Objective-C++ Dialects}.
-@gccoptlist{-fconstant-string-class=@var{class-name} @gol
--fgnu-runtime  -fnext-runtime @gol
--fno-nil-receivers @gol
--fobjc-abi-version=@var{n} @gol
--fobjc-call-cxx-cdtors @gol
--fobjc-direct-dispatch @gol
--fobjc-exceptions @gol
--fobjc-gc @gol
--fobjc-nilcheck @gol
--fobjc-std=objc1 @gol
--fno-local-ivars @gol
--fivar-visibility=@r{[}public@r{|}protected@r{|}private@r{|}package@r{]} @gol
--freplace-objc-classes @gol
--fzero-link @gol
--gen-decls @gol
--Wassign-intercept  -Wno-property-assign-default @gol
--Wno-protocol -Wobjc-root-class -Wselector @gol
--Wstrict-selector-match @gol
+@gccoptlist{-fconstant-string-class=@var{class-name}
+-fgnu-runtime  -fnext-runtime
+-fno-nil-receivers
+-fobjc-abi-version=@var{n}
+-fobjc-call-cxx-cdtors
+-fobjc-direct-dispatch
+-fobjc-exceptions
+-fobjc-gc
+-fobjc-nilcheck
+-fobjc-std=objc1
+-fno-local-ivars
+-fivar-visibility=@r{[}public@r{|}protected@r{|}private@r{|}package@r{]}
+-freplace-objc-classes
+-fzero-link
+-gen-decls
+-Wassign-intercept  -Wno-property-assign-default
+-Wno-protocol -Wobjc-root-class -Wselector
+-Wstrict-selector-match
 -Wundeclared-selector}
 
 @item Diagnostic Message Formatting Options
 @xref{Diagnostic Message Formatting Options,,Options to Control Diagnostic Messages Formatting}.
-@gccoptlist{-fmessage-length=@var{n}  @gol
--fdiagnostics-plain-output @gol
--fdiagnostics-show-location=@r{[}once@r{|}every-line@r{]}  @gol
--fdiagnostics-color=@r{[}auto@r{|}never@r{|}always@r{]}  @gol
--fdiagnostics-urls=@r{[}auto@r{|}never@r{|}always@r{]}  @gol
--fdiagnostics-format=@r{[}text@r{|}sarif-stderr@r{|}sarif-file@r{|}json@r{|}json-stderr@r{|}json-file@r{]}  @gol
--fno-diagnostics-show-option  -fno-diagnostics-show-caret @gol
--fno-diagnostics-show-labels  -fno-diagnostics-show-line-numbers @gol
--fno-diagnostics-show-cwe  @gol
--fno-diagnostics-show-rule  @gol
--fdiagnostics-minimum-margin-width=@var{width} @gol
--fdiagnostics-parseable-fixits  -fdiagnostics-generate-patch @gol
--fdiagnostics-show-template-tree  -fno-elide-type @gol
--fdiagnostics-path-format=@r{[}none@r{|}separate-events@r{|}inline-events@r{]} @gol
--fdiagnostics-show-path-depths @gol
--fno-show-column @gol
--fdiagnostics-column-unit=@r{[}display@r{|}byte@r{]} @gol
--fdiagnostics-column-origin=@var{origin} @gol
+@gccoptlist{-fmessage-length=@var{n}
+-fdiagnostics-plain-output
+-fdiagnostics-show-location=@r{[}once@r{|}every-line@r{]}
+-fdiagnostics-color=@r{[}auto@r{|}never@r{|}always@r{]}
+-fdiagnostics-urls=@r{[}auto@r{|}never@r{|}always@r{]}
+-fdiagnostics-format=@r{[}text@r{|}sarif-stderr@r{|}sarif-file@r{|}json@r{|}json-stderr@r{|}json-file@r{]}
+-fno-diagnostics-show-option  -fno-diagnostics-show-caret
+-fno-diagnostics-show-labels  -fno-diagnostics-show-line-numbers
+-fno-diagnostics-show-cwe
+-fno-diagnostics-show-rule
+-fdiagnostics-minimum-margin-width=@var{width}
+-fdiagnostics-parseable-fixits  -fdiagnostics-generate-patch
+-fdiagnostics-show-template-tree  -fno-elide-type
+-fdiagnostics-path-format=@r{[}none@r{|}separate-events@r{|}inline-events@r{]}
+-fdiagnostics-show-path-depths
+-fno-show-column
+-fdiagnostics-column-unit=@r{[}display@r{|}byte@r{]}
+-fdiagnostics-column-origin=@var{origin}
 -fdiagnostics-escape-format=@r{[}unicode@r{|}bytes@r{]}}
 
 @item Warning Options
 @xref{Warning Options,,Options to Request or Suppress Warnings}.
-@gccoptlist{-fsyntax-only  -fmax-errors=@var{n}  -Wpedantic @gol
--pedantic-errors @gol
--w  -Wextra  -Wall  -Wabi=@var{n} @gol
--Waddress  -Wno-address-of-packed-member  -Waggregate-return @gol
--Walloc-size-larger-than=@var{byte-size}  -Walloc-zero @gol
--Walloca  -Walloca-larger-than=@var{byte-size} @gol
--Wno-aggressive-loop-optimizations @gol
--Warith-conversion @gol
--Warray-bounds  -Warray-bounds=@var{n}  -Warray-compare @gol
--Wno-attributes  -Wattribute-alias=@var{n} -Wno-attribute-alias @gol
--Wno-attribute-warning  @gol
--Wbidi-chars=@r{[}none@r{|}unpaired@r{|}any@r{|}ucn@r{]} @gol
--Wbool-compare  -Wbool-operation @gol
--Wno-builtin-declaration-mismatch @gol
--Wno-builtin-macro-redefined  -Wc90-c99-compat  -Wc99-c11-compat @gol
--Wc11-c2x-compat @gol
--Wc++-compat  -Wc++11-compat  -Wc++14-compat  -Wc++17-compat  @gol
--Wc++20-compat   @gol
--Wno-c++11-extensions  -Wno-c++14-extensions -Wno-c++17-extensions  @gol
--Wno-c++20-extensions  -Wno-c++23-extensions  @gol
--Wcast-align  -Wcast-align=strict  -Wcast-function-type  -Wcast-qual  @gol
--Wchar-subscripts @gol
--Wclobbered  -Wcomment @gol
--Wno-complain-wrong-lang @gol
--Wconversion  -Wno-coverage-mismatch  -Wno-cpp @gol
--Wdangling-else  -Wdangling-pointer  -Wdangling-pointer=@var{n}  @gol
--Wdate-time @gol
--Wno-deprecated  -Wno-deprecated-declarations  -Wno-designated-init @gol
--Wdisabled-optimization @gol
--Wno-discarded-array-qualifiers  -Wno-discarded-qualifiers @gol
--Wno-div-by-zero  -Wdouble-promotion @gol
--Wduplicated-branches  -Wduplicated-cond @gol
--Wempty-body  -Wno-endif-labels  -Wenum-compare  -Wenum-conversion @gol
--Wenum-int-mismatch @gol
--Werror  -Werror=*  -Wexpansion-to-defined  -Wfatal-errors @gol
--Wfloat-conversion  -Wfloat-equal  -Wformat  -Wformat=2 @gol
--Wno-format-contains-nul  -Wno-format-extra-args  @gol
--Wformat-nonliteral  -Wformat-overflow=@var{n} @gol
--Wformat-security  -Wformat-signedness  -Wformat-truncation=@var{n} @gol
--Wformat-y2k  -Wframe-address @gol
--Wframe-larger-than=@var{byte-size}  -Wno-free-nonheap-object @gol
--Wno-if-not-aligned  -Wno-ignored-attributes @gol
--Wignored-qualifiers  -Wno-incompatible-pointer-types @gol
--Wimplicit  -Wimplicit-fallthrough  -Wimplicit-fallthrough=@var{n} @gol
--Wno-implicit-function-declaration  -Wno-implicit-int @gol
--Winfinite-recursion @gol
--Winit-self  -Winline  -Wno-int-conversion  -Wint-in-bool-context @gol
--Wno-int-to-pointer-cast  -Wno-invalid-memory-model @gol
--Winvalid-pch  -Winvalid-utf8  -Wno-unicode  -Wjump-misses-init  @gol
--Wlarger-than=@var{byte-size}  -Wlogical-not-parentheses  -Wlogical-op  @gol
--Wlong-long  -Wno-lto-type-mismatch -Wmain  -Wmaybe-uninitialized @gol
--Wmemset-elt-size  -Wmemset-transposed-args @gol
--Wmisleading-indentation  -Wmissing-attributes  -Wmissing-braces @gol
--Wmissing-field-initializers  -Wmissing-format-attribute @gol
--Wmissing-include-dirs  -Wmissing-noreturn  -Wno-missing-profile @gol
--Wno-multichar  -Wmultistatement-macros  -Wnonnull  -Wnonnull-compare @gol
--Wnormalized=@r{[}none@r{|}id@r{|}nfc@r{|}nfkc@r{]} @gol
--Wnull-dereference  -Wno-odr  @gol
--Wopenacc-parallelism  @gol
--Wopenmp-simd  @gol
--Wno-overflow  -Woverlength-strings  -Wno-override-init-side-effects @gol
--Wpacked  -Wno-packed-bitfield-compat  -Wpacked-not-aligned  -Wpadded @gol
--Wparentheses  -Wno-pedantic-ms-format @gol
--Wpointer-arith  -Wno-pointer-compare  -Wno-pointer-to-int-cast @gol
--Wno-pragmas  -Wno-prio-ctor-dtor  -Wredundant-decls @gol
--Wrestrict  -Wno-return-local-addr  -Wreturn-type @gol
--Wno-scalar-storage-order  -Wsequence-point @gol
--Wshadow  -Wshadow=global  -Wshadow=local  -Wshadow=compatible-local @gol
--Wno-shadow-ivar @gol
--Wno-shift-count-negative  -Wno-shift-count-overflow  -Wshift-negative-value @gol
--Wno-shift-overflow  -Wshift-overflow=@var{n} @gol
--Wsign-compare  -Wsign-conversion @gol
--Wno-sizeof-array-argument @gol
--Wsizeof-array-div @gol
--Wsizeof-pointer-div  -Wsizeof-pointer-memaccess @gol
--Wstack-protector  -Wstack-usage=@var{byte-size}  -Wstrict-aliasing @gol
--Wstrict-aliasing=n  -Wstrict-overflow  -Wstrict-overflow=@var{n} @gol
--Wstring-compare @gol
--Wno-stringop-overflow -Wno-stringop-overread @gol
--Wno-stringop-truncation -Wstrict-flex-arrays @gol
--Wsuggest-attribute=@r{[}pure@r{|}const@r{|}noreturn@r{|}format@r{|}malloc@r{]} @gol
--Wswitch  -Wno-switch-bool  -Wswitch-default  -Wswitch-enum @gol
--Wno-switch-outside-range  -Wno-switch-unreachable  -Wsync-nand @gol
--Wsystem-headers  -Wtautological-compare  -Wtrampolines  -Wtrigraphs @gol
--Wtrivial-auto-var-init -Wtsan -Wtype-limits  -Wundef @gol
--Wuninitialized  -Wunknown-pragmas @gol
--Wunsuffixed-float-constants  -Wunused @gol
--Wunused-but-set-parameter  -Wunused-but-set-variable @gol
--Wunused-const-variable  -Wunused-const-variable=@var{n} @gol
--Wunused-function  -Wunused-label  -Wunused-local-typedefs @gol
--Wunused-macros @gol
--Wunused-parameter  -Wno-unused-result @gol
--Wunused-value  -Wunused-variable @gol
--Wno-varargs  -Wvariadic-macros @gol
--Wvector-operation-performance @gol
--Wvla  -Wvla-larger-than=@var{byte-size}  -Wno-vla-larger-than @gol
--Wvolatile-register-var  -Wwrite-strings @gol
--Wxor-used-as-pow @gol
+@gccoptlist{-fsyntax-only  -fmax-errors=@var{n}  -Wpedantic
+-pedantic-errors
+-w  -Wextra  -Wall  -Wabi=@var{n}
+-Waddress  -Wno-address-of-packed-member  -Waggregate-return
+-Walloc-size-larger-than=@var{byte-size}  -Walloc-zero
+-Walloca  -Walloca-larger-than=@var{byte-size}
+-Wno-aggressive-loop-optimizations
+-Warith-conversion
+-Warray-bounds  -Warray-bounds=@var{n}  -Warray-compare
+-Wno-attributes  -Wattribute-alias=@var{n} -Wno-attribute-alias
+-Wno-attribute-warning
+-Wbidi-chars=@r{[}none@r{|}unpaired@r{|}any@r{|}ucn@r{]}
+-Wbool-compare  -Wbool-operation
+-Wno-builtin-declaration-mismatch
+-Wno-builtin-macro-redefined  -Wc90-c99-compat  -Wc99-c11-compat
+-Wc11-c2x-compat
+-Wc++-compat  -Wc++11-compat  -Wc++14-compat  -Wc++17-compat
+-Wc++20-compat
+-Wno-c++11-extensions  -Wno-c++14-extensions -Wno-c++17-extensions
+-Wno-c++20-extensions  -Wno-c++23-extensions
+-Wcast-align  -Wcast-align=strict  -Wcast-function-type  -Wcast-qual
+-Wchar-subscripts
+-Wclobbered  -Wcomment
+-Wno-complain-wrong-lang
+-Wconversion  -Wno-coverage-mismatch  -Wno-cpp
+-Wdangling-else  -Wdangling-pointer  -Wdangling-pointer=@var{n}
+-Wdate-time
+-Wno-deprecated  -Wno-deprecated-declarations  -Wno-designated-init
+-Wdisabled-optimization
+-Wno-discarded-array-qualifiers  -Wno-discarded-qualifiers
+-Wno-div-by-zero  -Wdouble-promotion
+-Wduplicated-branches  -Wduplicated-cond
+-Wempty-body  -Wno-endif-labels  -Wenum-compare  -Wenum-conversion
+-Wenum-int-mismatch
+-Werror  -Werror=*  -Wexpansion-to-defined  -Wfatal-errors
+-Wfloat-conversion  -Wfloat-equal  -Wformat  -Wformat=2
+-Wno-format-contains-nul  -Wno-format-extra-args
+-Wformat-nonliteral  -Wformat-overflow=@var{n}
+-Wformat-security  -Wformat-signedness  -Wformat-truncation=@var{n}
+-Wformat-y2k  -Wframe-address
+-Wframe-larger-than=@var{byte-size}  -Wno-free-nonheap-object
+-Wno-if-not-aligned  -Wno-ignored-attributes
+-Wignored-qualifiers  -Wno-incompatible-pointer-types
+-Wimplicit  -Wimplicit-fallthrough  -Wimplicit-fallthrough=@var{n}
+-Wno-implicit-function-declaration  -Wno-implicit-int
+-Winfinite-recursion
+-Winit-self  -Winline  -Wno-int-conversion  -Wint-in-bool-context
+-Wno-int-to-pointer-cast  -Wno-invalid-memory-model
+-Winvalid-pch  -Winvalid-utf8  -Wno-unicode  -Wjump-misses-init
+-Wlarger-than=@var{byte-size}  -Wlogical-not-parentheses  -Wlogical-op
+-Wlong-long  -Wno-lto-type-mismatch -Wmain  -Wmaybe-uninitialized
+-Wmemset-elt-size  -Wmemset-transposed-args
+-Wmisleading-indentation  -Wmissing-attributes  -Wmissing-braces
+-Wmissing-field-initializers  -Wmissing-format-attribute
+-Wmissing-include-dirs  -Wmissing-noreturn  -Wno-missing-profile
+-Wno-multichar  -Wmultistatement-macros  -Wnonnull  -Wnonnull-compare
+-Wnormalized=@r{[}none@r{|}id@r{|}nfc@r{|}nfkc@r{]}
+-Wnull-dereference  -Wno-odr
+-Wopenacc-parallelism
+-Wopenmp-simd
+-Wno-overflow  -Woverlength-strings  -Wno-override-init-side-effects
+-Wpacked  -Wno-packed-bitfield-compat  -Wpacked-not-aligned  -Wpadded
+-Wparentheses  -Wno-pedantic-ms-format
+-Wpointer-arith  -Wno-pointer-compare  -Wno-pointer-to-int-cast
+-Wno-pragmas  -Wno-prio-ctor-dtor  -Wredundant-decls
+-Wrestrict  -Wno-return-local-addr  -Wreturn-type
+-Wno-scalar-storage-order  -Wsequence-point
+-Wshadow  -Wshadow=global  -Wshadow=local  -Wshadow=compatible-local
+-Wno-shadow-ivar
+-Wno-shift-count-negative  -Wno-shift-count-overflow  -Wshift-negative-value
+-Wno-shift-overflow  -Wshift-overflow=@var{n}
+-Wsign-compare  -Wsign-conversion
+-Wno-sizeof-array-argument
+-Wsizeof-array-div
+-Wsizeof-pointer-div  -Wsizeof-pointer-memaccess
+-Wstack-protector  -Wstack-usage=@var{byte-size}  -Wstrict-aliasing
+-Wstrict-aliasing=n  -Wstrict-overflow  -Wstrict-overflow=@var{n}
+-Wstring-compare
+-Wno-stringop-overflow -Wno-stringop-overread
+-Wno-stringop-truncation -Wstrict-flex-arrays
+-Wsuggest-attribute=@r{[}pure@r{|}const@r{|}noreturn@r{|}format@r{|}malloc@r{]}
+-Wswitch  -Wno-switch-bool  -Wswitch-default  -Wswitch-enum
+-Wno-switch-outside-range  -Wno-switch-unreachable  -Wsync-nand
+-Wsystem-headers  -Wtautological-compare  -Wtrampolines  -Wtrigraphs
+-Wtrivial-auto-var-init -Wtsan -Wtype-limits  -Wundef
+-Wuninitialized  -Wunknown-pragmas
+-Wunsuffixed-float-constants  -Wunused
+-Wunused-but-set-parameter  -Wunused-but-set-variable
+-Wunused-const-variable  -Wunused-const-variable=@var{n}
+-Wunused-function  -Wunused-label  -Wunused-local-typedefs
+-Wunused-macros
+-Wunused-parameter  -Wno-unused-result
+-Wunused-value  -Wunused-variable
+-Wno-varargs  -Wvariadic-macros
+-Wvector-operation-performance
+-Wvla  -Wvla-larger-than=@var{byte-size}  -Wno-vla-larger-than
+-Wvolatile-register-var  -Wwrite-strings
+-Wxor-used-as-pow
 -Wzero-length-bounds}
 
 @item Static Analyzer Options
 @gccoptlist{
--fanalyzer @gol
--fanalyzer-call-summaries @gol
--fanalyzer-checker=@var{name} @gol
--fno-analyzer-feasibility @gol
--fanalyzer-fine-grained @gol
--fno-analyzer-state-merge @gol
--fno-analyzer-state-purge @gol
--fno-analyzer-suppress-followups @gol
--fanalyzer-transitivity @gol
--fno-analyzer-undo-inlining @gol
--fanalyzer-verbose-edges @gol
--fanalyzer-verbose-state-changes @gol
--fanalyzer-verbosity=@var{level} @gol
--fdump-analyzer @gol
--fdump-analyzer-callgraph @gol
--fdump-analyzer-exploded-graph @gol
--fdump-analyzer-exploded-nodes @gol
--fdump-analyzer-exploded-nodes-2 @gol
--fdump-analyzer-exploded-nodes-3 @gol
--fdump-analyzer-exploded-paths @gol
--fdump-analyzer-feasibility @gol
--fdump-analyzer-json @gol
--fdump-analyzer-state-purge @gol
--fdump-analyzer-stderr @gol
--fdump-analyzer-supergraph @gol
--fdump-analyzer-untracked @gol
--Wno-analyzer-double-fclose @gol
--Wno-analyzer-double-free @gol
--Wno-analyzer-exposure-through-output-file @gol
--Wno-analyzer-exposure-through-uninit-copy @gol
--Wno-analyzer-fd-access-mode-mismatch @gol
--Wno-analyzer-fd-double-close @gol
--Wno-analyzer-fd-leak @gol
--Wno-analyzer-fd-phase-mismatch @gol
--Wno-analyzer-fd-type-mismatch @gol
--Wno-analyzer-fd-use-after-close @gol
--Wno-analyzer-fd-use-without-check @gol
--Wno-analyzer-file-leak @gol
--Wno-analyzer-free-of-non-heap @gol
--Wno-analyzer-imprecise-fp-arithmetic @gol
--Wno-analyzer-infinite-recursion @gol
--Wno-analyzer-jump-through-null @gol
--Wno-analyzer-malloc-leak @gol
--Wno-analyzer-mismatching-deallocation @gol
--Wno-analyzer-null-argument @gol
--Wno-analyzer-null-dereference @gol
--Wno-analyzer-out-of-bounds @gol
--Wno-analyzer-possible-null-argument @gol
--Wno-analyzer-possible-null-dereference @gol
--Wno-analyzer-putenv-of-auto-var @gol
--Wno-analyzer-shift-count-negative @gol
--Wno-analyzer-shift-count-overflow @gol
--Wno-analyzer-stale-setjmp-buffer @gol
--Wno-analyzer-tainted-allocation-size @gol
--Wno-analyzer-tainted-assertion @gol
--Wno-analyzer-tainted-array-index @gol
--Wno-analyzer-tainted-divisor @gol
--Wno-analyzer-tainted-offset @gol
--Wno-analyzer-tainted-size @gol
--Wanalyzer-too-complex @gol
--Wno-analyzer-unsafe-call-within-signal-handler @gol
--Wno-analyzer-use-after-free @gol
--Wno-analyzer-use-of-pointer-in-stale-stack-frame @gol
--Wno-analyzer-use-of-uninitialized-value @gol
--Wno-analyzer-va-arg-type-mismatch @gol
--Wno-analyzer-va-list-exhausted @gol
--Wno-analyzer-va-list-leak @gol
--Wno-analyzer-va-list-use-after-va-end @gol
--Wno-analyzer-write-to-const @gol
--Wno-analyzer-write-to-string-literal @gol
+-fanalyzer
+-fanalyzer-call-summaries
+-fanalyzer-checker=@var{name}
+-fno-analyzer-feasibility
+-fanalyzer-fine-grained
+-fno-analyzer-state-merge
+-fno-analyzer-state-purge
+-fno-analyzer-suppress-followups
+-fanalyzer-transitivity
+-fno-analyzer-undo-inlining
+-fanalyzer-verbose-edges
+-fanalyzer-verbose-state-changes
+-fanalyzer-verbosity=@var{level}
+-fdump-analyzer
+-fdump-analyzer-callgraph
+-fdump-analyzer-exploded-graph
+-fdump-analyzer-exploded-nodes
+-fdump-analyzer-exploded-nodes-2
+-fdump-analyzer-exploded-nodes-3
+-fdump-analyzer-exploded-paths
+-fdump-analyzer-feasibility
+-fdump-analyzer-json
+-fdump-analyzer-state-purge
+-fdump-analyzer-stderr
+-fdump-analyzer-supergraph
+-fdump-analyzer-untracked
+-Wno-analyzer-double-fclose
+-Wno-analyzer-double-free
+-Wno-analyzer-exposure-through-output-file
+-Wno-analyzer-exposure-through-uninit-copy
+-Wno-analyzer-fd-access-mode-mismatch
+-Wno-analyzer-fd-double-close
+-Wno-analyzer-fd-leak
+-Wno-analyzer-fd-phase-mismatch
+-Wno-analyzer-fd-type-mismatch
+-Wno-analyzer-fd-use-after-close
+-Wno-analyzer-fd-use-without-check
+-Wno-analyzer-file-leak
+-Wno-analyzer-free-of-non-heap
+-Wno-analyzer-imprecise-fp-arithmetic
+-Wno-analyzer-infinite-recursion
+-Wno-analyzer-jump-through-null
+-Wno-analyzer-malloc-leak
+-Wno-analyzer-mismatching-deallocation
+-Wno-analyzer-null-argument
+-Wno-analyzer-null-dereference
+-Wno-analyzer-out-of-bounds
+-Wno-analyzer-possible-null-argument
+-Wno-analyzer-possible-null-dereference
+-Wno-analyzer-putenv-of-auto-var
+-Wno-analyzer-shift-count-negative
+-Wno-analyzer-shift-count-overflow
+-Wno-analyzer-stale-setjmp-buffer
+-Wno-analyzer-tainted-allocation-size
+-Wno-analyzer-tainted-assertion
+-Wno-analyzer-tainted-array-index
+-Wno-analyzer-tainted-divisor
+-Wno-analyzer-tainted-offset
+-Wno-analyzer-tainted-size
+-Wanalyzer-too-complex
+-Wno-analyzer-unsafe-call-within-signal-handler
+-Wno-analyzer-use-after-free
+-Wno-analyzer-use-of-pointer-in-stale-stack-frame
+-Wno-analyzer-use-of-uninitialized-value
+-Wno-analyzer-va-arg-type-mismatch
+-Wno-analyzer-va-list-exhausted
+-Wno-analyzer-va-list-leak
+-Wno-analyzer-va-list-use-after-va-end
+-Wno-analyzer-write-to-const
+-Wno-analyzer-write-to-string-literal
 }
 
 @item C and Objective-C-only Warning Options
-@gccoptlist{-Wbad-function-cast  -Wmissing-declarations @gol
--Wmissing-parameter-type  -Wmissing-prototypes  -Wnested-externs @gol
--Wold-style-declaration  -Wold-style-definition @gol
--Wstrict-prototypes  -Wtraditional  -Wtraditional-conversion @gol
+@gccoptlist{-Wbad-function-cast  -Wmissing-declarations
+-Wmissing-parameter-type  -Wmissing-prototypes  -Wnested-externs
+-Wold-style-declaration  -Wold-style-definition
+-Wstrict-prototypes  -Wtraditional  -Wtraditional-conversion
 -Wdeclaration-after-statement  -Wpointer-sign}
 
 @item Debugging Options
 @xref{Debugging Options,,Options for Debugging Your Program}.
-@gccoptlist{-g  -g@var{level}  -gdwarf  -gdwarf-@var{version} @gol
--gbtf -gctf  -gctf@var{level} @gol
--ggdb  -grecord-gcc-switches  -gno-record-gcc-switches @gol
--gstrict-dwarf  -gno-strict-dwarf @gol
--gas-loc-support  -gno-as-loc-support @gol
--gas-locview-support  -gno-as-locview-support @gol
--gcolumn-info  -gno-column-info  -gdwarf32  -gdwarf64 @gol
--gstatement-frontiers  -gno-statement-frontiers @gol
--gvariable-location-views  -gno-variable-location-views @gol
--ginternal-reset-location-views  -gno-internal-reset-location-views @gol
--ginline-points  -gno-inline-points @gol
--gvms -gz@r{[}=@var{type}@r{]} @gol
--gsplit-dwarf  -gdescribe-dies  -gno-describe-dies @gol
--fdebug-prefix-map=@var{old}=@var{new}  -fdebug-types-section @gol
--fno-eliminate-unused-debug-types @gol
--femit-struct-debug-baseonly  -femit-struct-debug-reduced @gol
--femit-struct-debug-detailed@r{[}=@var{spec-list}@r{]} @gol
--fno-eliminate-unused-debug-symbols  -femit-class-debug-always @gol
--fno-merge-debug-strings  -fno-dwarf2-cfi-asm @gol
+@gccoptlist{-g  -g@var{level}  -gdwarf  -gdwarf-@var{version}
+-gbtf -gctf  -gctf@var{level}
+-ggdb  -grecord-gcc-switches  -gno-record-gcc-switches
+-gstrict-dwarf  -gno-strict-dwarf
+-gas-loc-support  -gno-as-loc-support
+-gas-locview-support  -gno-as-locview-support
+-gcolumn-info  -gno-column-info  -gdwarf32  -gdwarf64
+-gstatement-frontiers  -gno-statement-frontiers
+-gvariable-location-views  -gno-variable-location-views
+-ginternal-reset-location-views  -gno-internal-reset-location-views
+-ginline-points  -gno-inline-points
+-gvms -gz@r{[}=@var{type}@r{]}
+-gsplit-dwarf  -gdescribe-dies  -gno-describe-dies
+-fdebug-prefix-map=@var{old}=@var{new}  -fdebug-types-section
+-fno-eliminate-unused-debug-types
+-femit-struct-debug-baseonly  -femit-struct-debug-reduced
+-femit-struct-debug-detailed@r{[}=@var{spec-list}@r{]}
+-fno-eliminate-unused-debug-symbols  -femit-class-debug-always
+-fno-merge-debug-strings  -fno-dwarf2-cfi-asm
 -fvar-tracking  -fvar-tracking-assignments}
 
 @item Optimization Options
 @xref{Optimize Options,,Options that Control Optimization}.
-@gccoptlist{-faggressive-loop-optimizations @gol
--falign-functions[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]] @gol
--falign-jumps[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]] @gol
--falign-labels[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]] @gol
--falign-loops[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]] @gol
--fno-allocation-dce -fallow-store-data-races @gol
--fassociative-math  -fauto-profile  -fauto-profile[=@var{path}] @gol
--fauto-inc-dec  -fbranch-probabilities @gol
--fcaller-saves @gol
--fcombine-stack-adjustments  -fconserve-stack @gol
--fcompare-elim  -fcprop-registers  -fcrossjumping @gol
--fcse-follow-jumps  -fcse-skip-blocks  -fcx-fortran-rules @gol
--fcx-limited-range @gol
--fdata-sections  -fdce  -fdelayed-branch @gol
--fdelete-null-pointer-checks  -fdevirtualize  -fdevirtualize-speculatively @gol
--fdevirtualize-at-ltrans  -fdse @gol
--fearly-inlining  -fipa-sra  -fexpensive-optimizations  -ffat-lto-objects @gol
--ffast-math  -ffinite-math-only  -ffloat-store  -fexcess-precision=@var{style} @gol
--ffinite-loops @gol
--fforward-propagate  -ffp-contract=@var{style}  -ffunction-sections @gol
--fgcse  -fgcse-after-reload  -fgcse-las  -fgcse-lm  -fgraphite-identity @gol
--fgcse-sm  -fhoist-adjacent-loads  -fif-conversion @gol
--fif-conversion2  -findirect-inlining @gol
--finline-functions  -finline-functions-called-once  -finline-limit=@var{n} @gol
--finline-small-functions -fipa-modref -fipa-cp  -fipa-cp-clone @gol
--fipa-bit-cp  -fipa-vrp  -fipa-pta  -fipa-profile  -fipa-pure-const @gol
--fipa-reference  -fipa-reference-addressable @gol
--fipa-stack-alignment  -fipa-icf  -fira-algorithm=@var{algorithm} @gol
--flive-patching=@var{level} @gol
--fira-region=@var{region}  -fira-hoist-pressure @gol
--fira-loop-pressure  -fno-ira-share-save-slots @gol
--fno-ira-share-spill-slots @gol
--fisolate-erroneous-paths-dereference  -fisolate-erroneous-paths-attribute @gol
--fivopts  -fkeep-inline-functions  -fkeep-static-functions @gol
--fkeep-static-consts  -flimit-function-alignment  -flive-range-shrinkage @gol
--floop-block  -floop-interchange  -floop-strip-mine @gol
--floop-unroll-and-jam  -floop-nest-optimize @gol
--floop-parallelize-all  -flra-remat  -flto  -flto-compression-level @gol
--flto-partition=@var{alg}  -fmerge-all-constants @gol
--fmerge-constants  -fmodulo-sched  -fmodulo-sched-allow-regmoves @gol
--fmove-loop-invariants  -fmove-loop-stores  -fno-branch-count-reg @gol
--fno-defer-pop  -fno-fp-int-builtin-inexact  -fno-function-cse @gol
--fno-guess-branch-probability  -fno-inline  -fno-math-errno  -fno-peephole @gol
--fno-peephole2  -fno-printf-return-value  -fno-sched-interblock @gol
--fno-sched-spec  -fno-signed-zeros @gol
--fno-toplevel-reorder  -fno-trapping-math  -fno-zero-initialized-in-bss @gol
--fomit-frame-pointer  -foptimize-sibling-calls @gol
--fpartial-inlining  -fpeel-loops  -fpredictive-commoning @gol
--fprefetch-loop-arrays @gol
--fprofile-correction @gol
--fprofile-use  -fprofile-use=@var{path} -fprofile-partial-training @gol
--fprofile-values -fprofile-reorder-functions @gol
--freciprocal-math  -free  -frename-registers  -freorder-blocks @gol
--freorder-blocks-algorithm=@var{algorithm} @gol
--freorder-blocks-and-partition  -freorder-functions @gol
--frerun-cse-after-loop  -freschedule-modulo-scheduled-loops @gol
--frounding-math  -fsave-optimization-record @gol
--fsched2-use-superblocks  -fsched-pressure @gol
--fsched-spec-load  -fsched-spec-load-dangerous @gol
--fsched-stalled-insns-dep[=@var{n}]  -fsched-stalled-insns[=@var{n}] @gol
--fsched-group-heuristic  -fsched-critical-path-heuristic @gol
--fsched-spec-insn-heuristic  -fsched-rank-heuristic @gol
--fsched-last-insn-heuristic  -fsched-dep-count-heuristic @gol
--fschedule-fusion @gol
--fschedule-insns  -fschedule-insns2  -fsection-anchors @gol
--fselective-scheduling  -fselective-scheduling2 @gol
--fsel-sched-pipelining  -fsel-sched-pipelining-outer-loops @gol
--fsemantic-interposition  -fshrink-wrap  -fshrink-wrap-separate @gol
--fsignaling-nans @gol
--fsingle-precision-constant  -fsplit-ivs-in-unroller  -fsplit-loops@gol
--fsplit-paths @gol
--fsplit-wide-types  -fsplit-wide-types-early  -fssa-backprop  -fssa-phiopt @gol
--fstdarg-opt  -fstore-merging  -fstrict-aliasing -fipa-strict-aliasing @gol
--fthread-jumps  -ftracer  -ftree-bit-ccp @gol
--ftree-builtin-call-dce  -ftree-ccp  -ftree-ch @gol
--ftree-coalesce-vars  -ftree-copy-prop  -ftree-dce  -ftree-dominator-opts @gol
--ftree-dse  -ftree-forwprop  -ftree-fre  -fcode-hoisting @gol
--ftree-loop-if-convert  -ftree-loop-im @gol
--ftree-phiprop  -ftree-loop-distribution  -ftree-loop-distribute-patterns @gol
--ftree-loop-ivcanon  -ftree-loop-linear  -ftree-loop-optimize @gol
--ftree-loop-vectorize @gol
--ftree-parallelize-loops=@var{n}  -ftree-pre  -ftree-partial-pre  -ftree-pta @gol
--ftree-reassoc  -ftree-scev-cprop  -ftree-sink  -ftree-slsr  -ftree-sra @gol
--ftree-switch-conversion  -ftree-tail-merge @gol
--ftree-ter  -ftree-vectorize  -ftree-vrp  -ftrivial-auto-var-init @gol
--funconstrained-commons -funit-at-a-time  -funroll-all-loops @gol
--funroll-loops -funsafe-math-optimizations  -funswitch-loops @gol
--fipa-ra  -fvariable-expansion-in-unroller  -fvect-cost-model  -fvpt @gol
--fweb  -fwhole-program  -fwpa  -fuse-linker-plugin -fzero-call-used-regs @gol
+@gccoptlist{-faggressive-loop-optimizations
+-falign-functions[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
+-falign-jumps[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
+-falign-labels[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
+-falign-loops[=@var{n}[:@var{m}:[@var{n2}[:@var{m2}]]]]
+-fno-allocation-dce -fallow-store-data-races
+-fassociative-math  -fauto-profile  -fauto-profile[=@var{path}]
+-fauto-inc-dec  -fbranch-probabilities
+-fcaller-saves
+-fcombine-stack-adjustments  -fconserve-stack
+-fcompare-elim  -fcprop-registers  -fcrossjumping
+-fcse-follow-jumps  -fcse-skip-blocks  -fcx-fortran-rules
+-fcx-limited-range
+-fdata-sections  -fdce  -fdelayed-branch
+-fdelete-null-pointer-checks  -fdevirtualize  -fdevirtualize-speculatively
+-fdevirtualize-at-ltrans  -fdse
+-fearly-inlining  -fipa-sra  -fexpensive-optimizations  -ffat-lto-objects
+-ffast-math  -ffinite-math-only  -ffloat-store  -fexcess-precision=@var{style}
+-ffinite-loops
+-fforward-propagate  -ffp-contract=@var{style}  -ffunction-sections
+-fgcse  -fgcse-after-reload  -fgcse-las  -fgcse-lm  -fgraphite-identity
+-fgcse-sm  -fhoist-adjacent-loads  -fif-conversion
+-fif-conversion2  -findirect-inlining
+-finline-functions  -finline-functions-called-once  -finline-limit=@var{n}
+-finline-small-functions -fipa-modref -fipa-cp  -fipa-cp-clone
+-fipa-bit-cp  -fipa-vrp  -fipa-pta  -fipa-profile  -fipa-pure-const
+-fipa-reference  -fipa-reference-addressable
+-fipa-stack-alignment  -fipa-icf  -fira-algorithm=@var{algorithm}
+-flive-patching=@var{level}
+-fira-region=@var{region}  -fira-hoist-pressure
+-fira-loop-pressure  -fno-ira-share-save-slots
+-fno-ira-share-spill-slots
+-fisolate-erroneous-paths-dereference  -fisolate-erroneous-paths-attribute
+-fivopts  -fkeep-inline-functions  -fkeep-static-functions
+-fkeep-static-consts  -flimit-function-alignment  -flive-range-shrinkage
+-floop-block  -floop-interchange  -floop-strip-mine
+-floop-unroll-and-jam  -floop-nest-optimize
+-floop-parallelize-all  -flra-remat  -flto  -flto-compression-level
+-flto-partition=@var{alg}  -fmerge-all-constants
+-fmerge-constants  -fmodulo-sched  -fmodulo-sched-allow-regmoves
+-fmove-loop-invariants  -fmove-loop-stores  -fno-branch-count-reg
+-fno-defer-pop  -fno-fp-int-builtin-inexact  -fno-function-cse
+-fno-guess-branch-probability  -fno-inline  -fno-math-errno  -fno-peephole
+-fno-peephole2  -fno-printf-return-value  -fno-sched-interblock
+-fno-sched-spec  -fno-signed-zeros
+-fno-toplevel-reorder  -fno-trapping-math  -fno-zero-initialized-in-bss
+-fomit-frame-pointer  -foptimize-sibling-calls
+-fpartial-inlining  -fpeel-loops  -fpredictive-commoning
+-fprefetch-loop-arrays
+-fprofile-correction
+-fprofile-use  -fprofile-use=@var{path} -fprofile-partial-training
+-fprofile-values -fprofile-reorder-functions
+-freciprocal-math  -free  -frename-registers  -freorder-blocks
+-freorder-blocks-algorithm=@var{algorithm}
+-freorder-blocks-and-partition  -freorder-functions
+-frerun-cse-after-loop  -freschedule-modulo-scheduled-loops
+-frounding-math  -fsave-optimization-record
+-fsched2-use-superblocks  -fsched-pressure
+-fsched-spec-load  -fsched-spec-load-dangerous
+-fsched-stalled-insns-dep[=@var{n}]  -fsched-stalled-insns[=@var{n}]
+-fsched-group-heuristic  -fsched-critical-path-heuristic
+-fsched-spec-insn-heuristic  -fsched-rank-heuristic
+-fsched-last-insn-heuristic  -fsched-dep-count-heuristic
+-fschedule-fusion
+-fschedule-insns  -fschedule-insns2  -fsection-anchors
+-fselective-scheduling  -fselective-scheduling2
+-fsel-sched-pipelining  -fsel-sched-pipelining-outer-loops
+-fsemantic-interposition  -fshrink-wrap  -fshrink-wrap-separate
+-fsignaling-nans
+-fsingle-precision-constant  -fsplit-ivs-in-unroller  -fsplit-loops
+-fsplit-paths
+-fsplit-wide-types  -fsplit-wide-types-early  -fssa-backprop  -fssa-phiopt
+-fstdarg-opt  -fstore-merging  -fstrict-aliasing -fipa-strict-aliasing
+-fthread-jumps  -ftracer  -ftree-bit-ccp
+-ftree-builtin-call-dce  -ftree-ccp  -ftree-ch
+-ftree-coalesce-vars  -ftree-copy-prop  -ftree-dce  -ftree-dominator-opts
+-ftree-dse  -ftree-forwprop  -ftree-fre  -fcode-hoisting
+-ftree-loop-if-convert  -ftree-loop-im
+-ftree-phiprop  -ftree-loop-distribution  -ftree-loop-distribute-patterns
+-ftree-loop-ivcanon  -ftree-loop-linear  -ftree-loop-optimize
+-ftree-loop-vectorize
+-ftree-parallelize-loops=@var{n}  -ftree-pre  -ftree-partial-pre  -ftree-pta
+-ftree-reassoc  -ftree-scev-cprop  -ftree-sink  -ftree-slsr  -ftree-sra
+-ftree-switch-conversion  -ftree-tail-merge
+-ftree-ter  -ftree-vectorize  -ftree-vrp  -ftrivial-auto-var-init
+-funconstrained-commons -funit-at-a-time  -funroll-all-loops
+-funroll-loops -funsafe-math-optimizations  -funswitch-loops
+-fipa-ra  -fvariable-expansion-in-unroller  -fvect-cost-model  -fvpt
+-fweb  -fwhole-program  -fwpa  -fuse-linker-plugin -fzero-call-used-regs
 --param @var{name}=@var{value}
 -O  -O0  -O1  -O2  -O3  -Os  -Ofast  -Og  -Oz}
 
 @item Program Instrumentation Options
 @xref{Instrumentation Options,,Program Instrumentation Options}.
-@gccoptlist{-p  -pg  -fprofile-arcs  --coverage  -ftest-coverage @gol
--fprofile-abs-path @gol
--fprofile-dir=@var{path}  -fprofile-generate  -fprofile-generate=@var{path} @gol
--fprofile-info-section  -fprofile-info-section=@var{name} @gol
--fprofile-note=@var{path} -fprofile-prefix-path=@var{path} @gol
--fprofile-update=@var{method} -fprofile-filter-files=@var{regex} @gol
--fprofile-exclude-files=@var{regex} @gol
--fprofile-reproducible=@r{[}multithreaded@r{|}parallel-runs@r{|}serial@r{]} @gol
--fsanitize=@var{style}  -fsanitize-recover  -fsanitize-recover=@var{style} @gol
--fsanitize-trap   -fsanitize-trap=@var{style}  @gol
--fasan-shadow-offset=@var{number}  -fsanitize-sections=@var{s1},@var{s2},... @gol
--fsanitize-undefined-trap-on-error  -fbounds-check @gol
--fcf-protection=@r{[}full@r{|}branch@r{|}return@r{|}none@r{|}check@r{]} @gol
--fharden-compares -fharden-conditional-branches @gol
--fstack-protector  -fstack-protector-all  -fstack-protector-strong @gol
--fstack-protector-explicit  -fstack-check @gol
--fstack-limit-register=@var{reg}  -fstack-limit-symbol=@var{sym} @gol
--fno-stack-limit  -fsplit-stack @gol
--fvtable-verify=@r{[}std@r{|}preinit@r{|}none@r{]} @gol
--fvtv-counts  -fvtv-debug @gol
--finstrument-functions  -finstrument-functions-once @gol
--finstrument-functions-exclude-function-list=@var{sym},@var{sym},@dots{} @gol
--finstrument-functions-exclude-file-list=@var{file},@var{file},@dots{}} @gol
--fprofile-prefix-map=@var{old}=@var{new}
+@gccoptlist{-p  -pg  -fprofile-arcs  --coverage  -ftest-coverage
+-fprofile-abs-path
+-fprofile-dir=@var{path}  -fprofile-generate  -fprofile-generate=@var{path}
+-fprofile-info-section  -fprofile-info-section=@var{name}
+-fprofile-note=@var{path} -fprofile-prefix-path=@var{path}
+-fprofile-update=@var{method} -fprofile-filter-files=@var{regex}
+-fprofile-exclude-files=@var{regex}
+-fprofile-reproducible=@r{[}multithreaded@r{|}parallel-runs@r{|}serial@r{]}
+-fsanitize=@var{style}  -fsanitize-recover  -fsanitize-recover=@var{style}
+-fsanitize-trap   -fsanitize-trap=@var{style}
+-fasan-shadow-offset=@var{number}  -fsanitize-sections=@var{s1},@var{s2},...
+-fsanitize-undefined-trap-on-error  -fbounds-check
+-fcf-protection=@r{[}full@r{|}branch@r{|}return@r{|}none@r{|}check@r{]}
+-fharden-compares -fharden-conditional-branches
+-fstack-protector  -fstack-protector-all  -fstack-protector-strong
+-fstack-protector-explicit  -fstack-check
+-fstack-limit-register=@var{reg}  -fstack-limit-symbol=@var{sym}
+-fno-stack-limit  -fsplit-stack
+-fvtable-verify=@r{[}std@r{|}preinit@r{|}none@r{]}
+-fvtv-counts  -fvtv-debug
+-finstrument-functions  -finstrument-functions-once
+-finstrument-functions-exclude-function-list=@var{sym},@var{sym},@dots{}
+-finstrument-functions-exclude-file-list=@var{file},@var{file},@dots{}
+-fprofile-prefix-map=@var{old}=@var{new}}
 
 @item Preprocessor Options
 @xref{Preprocessor Options,,Options Controlling the Preprocessor}.
-@gccoptlist{-A@var{question}=@var{answer} @gol
--A-@var{question}@r{[}=@var{answer}@r{]} @gol
--C  -CC  -D@var{macro}@r{[}=@var{defn}@r{]} @gol
--dD  -dI  -dM  -dN  -dU @gol
--fdebug-cpp  -fdirectives-only  -fdollars-in-identifiers  @gol
--fexec-charset=@var{charset}  -fextended-identifiers  @gol
--finput-charset=@var{charset}  -flarge-source-files  @gol
--fmacro-prefix-map=@var{old}=@var{new} -fmax-include-depth=@var{depth} @gol
--fno-canonical-system-headers  -fpch-deps  -fpch-preprocess  @gol
--fpreprocessed  -ftabstop=@var{width}  -ftrack-macro-expansion  @gol
--fwide-exec-charset=@var{charset}  -fworking-directory @gol
--H  -imacros @var{file}  -include @var{file} @gol
--M  -MD  -MF  -MG  -MM  -MMD  -MP  -MQ  -MT -Mno-modules @gol
--no-integrated-cpp  -P  -pthread  -remap @gol
--traditional  -traditional-cpp  -trigraphs @gol
--U@var{macro}  -undef  @gol
+@gccoptlist{-A@var{question}=@var{answer}
+-A-@var{question}@r{[}=@var{answer}@r{]}
+-C  -CC  -D@var{macro}@r{[}=@var{defn}@r{]}
+-dD  -dI  -dM  -dN  -dU
+-fdebug-cpp  -fdirectives-only  -fdollars-in-identifiers
+-fexec-charset=@var{charset}  -fextended-identifiers
+-finput-charset=@var{charset}  -flarge-source-files
+-fmacro-prefix-map=@var{old}=@var{new} -fmax-include-depth=@var{depth}
+-fno-canonical-system-headers  -fpch-deps  -fpch-preprocess
+-fpreprocessed  -ftabstop=@var{width}  -ftrack-macro-expansion
+-fwide-exec-charset=@var{charset}  -fworking-directory
+-H  -imacros @var{file}  -include @var{file}
+-M  -MD  -MF  -MG  -MM  -MMD  -MP  -MQ  -MT -Mno-modules
+-no-integrated-cpp  -P  -pthread  -remap
+-traditional  -traditional-cpp  -trigraphs
+-U@var{macro}  -undef
 -Wp,@var{option}  -Xpreprocessor @var{option}}
 
 @item Assembler Options
@@ -671,88 +671,88 @@ Objective-C and Objective-C++ Dialects}.
 
 @item Linker Options
 @xref{Link Options,,Options for Linking}.
-@gccoptlist{@var{object-file-name}  -fuse-ld=@var{linker}  -l@var{library} @gol
--nostartfiles  -nodefaultlibs  -nolibc  -nostdlib  -nostdlib++ @gol
--e @var{entry}  --entry=@var{entry} @gol
--pie  -pthread  -r  -rdynamic @gol
--s  -static  -static-pie  -static-libgcc  -static-libstdc++ @gol
--static-libasan  -static-libtsan  -static-liblsan  -static-libubsan @gol
--shared  -shared-libgcc  -symbolic @gol
--T @var{script}  -Wl,@var{option}  -Xlinker @var{option} @gol
+@gccoptlist{@var{object-file-name}  -fuse-ld=@var{linker}  -l@var{library}
+-nostartfiles  -nodefaultlibs  -nolibc  -nostdlib  -nostdlib++
+-e @var{entry}  --entry=@var{entry}
+-pie  -pthread  -r  -rdynamic
+-s  -static  -static-pie  -static-libgcc  -static-libstdc++
+-static-libasan  -static-libtsan  -static-liblsan  -static-libubsan
+-shared  -shared-libgcc  -symbolic
+-T @var{script}  -Wl,@var{option}  -Xlinker @var{option}
 -u @var{symbol}  -z @var{keyword}}
 
 @item Directory Options
 @xref{Directory Options,,Options for Directory Search}.
-@gccoptlist{-B@var{prefix}  -I@var{dir}  -I- @gol
--idirafter @var{dir} @gol
--imacros @var{file}  -imultilib @var{dir} @gol
--iplugindir=@var{dir}  -iprefix @var{file} @gol
--iquote @var{dir}  -isysroot @var{dir}  -isystem @var{dir} @gol
--iwithprefix @var{dir}  -iwithprefixbefore @var{dir}  @gol
--L@var{dir}  -no-canonical-prefixes  --no-sysroot-suffix @gol
+@gccoptlist{-B@var{prefix}  -I@var{dir}  -I-
+-idirafter @var{dir}
+-imacros @var{file}  -imultilib @var{dir}
+-iplugindir=@var{dir}  -iprefix @var{file}
+-iquote @var{dir}  -isysroot @var{dir}  -isystem @var{dir}
+-iwithprefix @var{dir}  -iwithprefixbefore @var{dir}
+-L@var{dir}  -no-canonical-prefixes  --no-sysroot-suffix
 -nostdinc  -nostdinc++  --sysroot=@var{dir}}
 
 @item Code Generation Options
 @xref{Code Gen Options,,Options for Code Generation Conventions}.
-@gccoptlist{-fcall-saved-@var{reg}  -fcall-used-@var{reg} @gol
--ffixed-@var{reg}  -fexceptions @gol
--fnon-call-exceptions  -fdelete-dead-exceptions  -funwind-tables @gol
--fasynchronous-unwind-tables @gol
--fno-gnu-unique @gol
--finhibit-size-directive  -fcommon  -fno-ident @gol
--fpcc-struct-return  -fpic  -fPIC  -fpie  -fPIE  -fno-plt @gol
--fno-jump-tables -fno-bit-tests @gol
--frecord-gcc-switches @gol
--freg-struct-return  -fshort-enums  -fshort-wchar @gol
--fverbose-asm  -fpack-struct[=@var{n}]  @gol
--fleading-underscore  -ftls-model=@var{model} @gol
--fstack-reuse=@var{reuse_level} @gol
--ftrampolines  -ftrapv  -fwrapv @gol
--fvisibility=@r{[}default@r{|}internal@r{|}hidden@r{|}protected@r{]} @gol
+@gccoptlist{-fcall-saved-@var{reg}  -fcall-used-@var{reg}
+-ffixed-@var{reg}  -fexceptions
+-fnon-call-exceptions  -fdelete-dead-exceptions  -funwind-tables
+-fasynchronous-unwind-tables
+-fno-gnu-unique
+-finhibit-size-directive  -fcommon  -fno-ident
+-fpcc-struct-return  -fpic  -fPIC  -fpie  -fPIE  -fno-plt
+-fno-jump-tables -fno-bit-tests
+-frecord-gcc-switches
+-freg-struct-return  -fshort-enums  -fshort-wchar
+-fverbose-asm  -fpack-struct[=@var{n}]
+-fleading-underscore  -ftls-model=@var{model}
+-fstack-reuse=@var{reuse_level}
+-ftrampolines  -ftrapv  -fwrapv
+-fvisibility=@r{[}default@r{|}internal@r{|}hidden@r{|}protected@r{]}
 -fstrict-volatile-bitfields  -fsync-libcalls}
 
 @item Developer Options
 @xref{Developer Options,,GCC Developer Options}.
-@gccoptlist{-d@var{letters}  -dumpspecs  -dumpmachine  -dumpversion @gol
+@gccoptlist{-d@var{letters}  -dumpspecs  -dumpmachine  -dumpversion
 -dumpfullversion  -fcallgraph-info@r{[}=su,da@r{]}
 -fchecking  -fchecking=@var{n}
--fdbg-cnt-list @gol  -fdbg-cnt=@var{counter-value-list} @gol
--fdisable-ipa-@var{pass_name} @gol
--fdisable-rtl-@var{pass_name} @gol
--fdisable-rtl-@var{pass-name}=@var{range-list} @gol
--fdisable-tree-@var{pass_name} @gol
--fdisable-tree-@var{pass-name}=@var{range-list} @gol
--fdump-debug  -fdump-earlydebug @gol
--fdump-noaddr  -fdump-unnumbered  -fdump-unnumbered-links @gol
--fdump-final-insns@r{[}=@var{file}@r{]} @gol
--fdump-ipa-all  -fdump-ipa-cgraph  -fdump-ipa-inline @gol
--fdump-lang-all @gol
--fdump-lang-@var{switch} @gol
--fdump-lang-@var{switch}-@var{options} @gol
--fdump-lang-@var{switch}-@var{options}=@var{filename} @gol
--fdump-passes @gol
--fdump-rtl-@var{pass}  -fdump-rtl-@var{pass}=@var{filename} @gol
--fdump-statistics @gol
--fdump-tree-all @gol
--fdump-tree-@var{switch} @gol
--fdump-tree-@var{switch}-@var{options} @gol
--fdump-tree-@var{switch}-@var{options}=@var{filename} @gol
--fcompare-debug@r{[}=@var{opts}@r{]}  -fcompare-debug-second @gol
--fenable-@var{kind}-@var{pass} @gol
--fenable-@var{kind}-@var{pass}=@var{range-list} @gol
--fira-verbose=@var{n} @gol
--flto-report  -flto-report-wpa  -fmem-report-wpa @gol
--fmem-report  -fpre-ipa-mem-report  -fpost-ipa-mem-report @gol
--fopt-info  -fopt-info-@var{options}@r{[}=@var{file}@r{]} @gol
--fmultiflags  -fprofile-report @gol
--frandom-seed=@var{string}  -fsched-verbose=@var{n} @gol
--fsel-sched-verbose  -fsel-sched-dump-cfg  -fsel-sched-pipelining-verbose @gol
--fstats  -fstack-usage  -ftime-report  -ftime-report-details @gol
--fvar-tracking-assignments-toggle  -gtoggle @gol
--print-file-name=@var{library}  -print-libgcc-file-name @gol
--print-multi-directory  -print-multi-lib  -print-multi-os-directory @gol
--print-prog-name=@var{program}  -print-search-dirs  -Q @gol
--print-sysroot  -print-sysroot-headers-suffix @gol
+-fdbg-cnt-list  -fdbg-cnt=@var{counter-value-list}
+-fdisable-ipa-@var{pass_name}
+-fdisable-rtl-@var{pass_name}
+-fdisable-rtl-@var{pass-name}=@var{range-list}
+-fdisable-tree-@var{pass_name}
+-fdisable-tree-@var{pass-name}=@var{range-list}
+-fdump-debug  -fdump-earlydebug
+-fdump-noaddr  -fdump-unnumbered  -fdump-unnumbered-links
+-fdump-final-insns@r{[}=@var{file}@r{]}
+-fdump-ipa-all  -fdump-ipa-cgraph  -fdump-ipa-inline
+-fdump-lang-all
+-fdump-lang-@var{switch}
+-fdump-lang-@var{switch}-@var{options}
+-fdump-lang-@var{switch}-@var{options}=@var{filename}
+-fdump-passes
+-fdump-rtl-@var{pass}  -fdump-rtl-@var{pass}=@var{filename}
+-fdump-statistics
+-fdump-tree-all
+-fdump-tree-@var{switch}
+-fdump-tree-@var{switch}-@var{options}
+-fdump-tree-@var{switch}-@var{options}=@var{filename}
+-fcompare-debug@r{[}=@var{opts}@r{]}  -fcompare-debug-second
+-fenable-@var{kind}-@var{pass}
+-fenable-@var{kind}-@var{pass}=@var{range-list}
+-fira-verbose=@var{n}
+-flto-report  -flto-report-wpa  -fmem-report-wpa
+-fmem-report  -fpre-ipa-mem-report  -fpost-ipa-mem-report
+-fopt-info  -fopt-info-@var{options}@r{[}=@var{file}@r{]}
+-fmultiflags  -fprofile-report
+-frandom-seed=@var{string}  -fsched-verbose=@var{n}
+-fsel-sched-verbose  -fsel-sched-dump-cfg  -fsel-sched-pipelining-verbose
+-fstats  -fstack-usage  -ftime-report  -ftime-report-details
+-fvar-tracking-assignments-toggle  -gtoggle
+-print-file-name=@var{library}  -print-libgcc-file-name
+-print-multi-directory  -print-multi-lib  -print-multi-os-directory
+-print-prog-name=@var{program}  -print-search-dirs  -Q
+-print-sysroot  -print-sysroot-headers-suffix
 -save-temps  -save-temps=cwd  -save-temps=obj  -time@r{[}=@var{file}@r{]}}
 
 @item Machine-Dependent Options
@@ -762,183 +762,183 @@ Objective-C and Objective-C++ Dialects}.
 @c so users have a clue at guessing where the ones they want will be.
 
 @emph{AArch64 Options}
-@gccoptlist{-mabi=@var{name}  -mbig-endian  -mlittle-endian @gol
--mgeneral-regs-only @gol
--mcmodel=tiny  -mcmodel=small  -mcmodel=large @gol
--mstrict-align  -mno-strict-align @gol
--momit-leaf-frame-pointer @gol
--mtls-dialect=desc  -mtls-dialect=traditional @gol
--mtls-size=@var{size} @gol
--mfix-cortex-a53-835769  -mfix-cortex-a53-843419 @gol
--mlow-precision-recip-sqrt  -mlow-precision-sqrt  -mlow-precision-div @gol
--mpc-relative-literal-loads @gol
--msign-return-address=@var{scope} @gol
+@gccoptlist{-mabi=@var{name}  -mbig-endian  -mlittle-endian
+-mgeneral-regs-only
+-mcmodel=tiny  -mcmodel=small  -mcmodel=large
+-mstrict-align  -mno-strict-align
+-momit-leaf-frame-pointer
+-mtls-dialect=desc  -mtls-dialect=traditional
+-mtls-size=@var{size}
+-mfix-cortex-a53-835769  -mfix-cortex-a53-843419
+-mlow-precision-recip-sqrt  -mlow-precision-sqrt  -mlow-precision-div
+-mpc-relative-literal-loads
+-msign-return-address=@var{scope}
 -mbranch-protection=@var{none}|@var{standard}|@var{pac-ret}[+@var{leaf}
-+@var{b-key}]|@var{bti} @gol
--mharden-sls=@var{opts} @gol
--march=@var{name}  -mcpu=@var{name}  -mtune=@var{name}  @gol
--moverride=@var{string}  -mverbose-cost-dump @gol
--mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{sysreg} @gol
--mstack-protector-guard-offset=@var{offset} -mtrack-speculation @gol
++@var{b-key}]|@var{bti}
+-mharden-sls=@var{opts}
+-march=@var{name}  -mcpu=@var{name}  -mtune=@var{name}
+-moverride=@var{string}  -mverbose-cost-dump
+-mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{sysreg}
+-mstack-protector-guard-offset=@var{offset} -mtrack-speculation
 -moutline-atomics }
 
 @emph{Adapteva Epiphany Options}
-@gccoptlist{-mhalf-reg-file  -mprefer-short-insn-regs @gol
--mbranch-cost=@var{num}  -mcmove  -mnops=@var{num}  -msoft-cmpsf @gol
--msplit-lohi  -mpost-inc  -mpost-modify  -mstack-offset=@var{num} @gol
--mround-nearest  -mlong-calls  -mshort-calls  -msmall16 @gol
--mfp-mode=@var{mode}  -mvect-double  -max-vect-align=@var{num} @gol
+@gccoptlist{-mhalf-reg-file  -mprefer-short-insn-regs
+-mbranch-cost=@var{num}  -mcmove  -mnops=@var{num}  -msoft-cmpsf
+-msplit-lohi  -mpost-inc  -mpost-modify  -mstack-offset=@var{num}
+-mround-nearest  -mlong-calls  -mshort-calls  -msmall16
+-mfp-mode=@var{mode}  -mvect-double  -max-vect-align=@var{num}
 -msplit-vecmove-early  -m1reg-@var{reg}}
 
 @emph{AMD GCN Options}
 @gccoptlist{-march=@var{gpu} -mtune=@var{gpu} -mstack-size=@var{bytes}}
 
 @emph{ARC Options}
-@gccoptlist{-mbarrel-shifter  -mjli-always @gol
--mcpu=@var{cpu}  -mA6  -mARC600  -mA7  -mARC700 @gol
--mdpfp  -mdpfp-compact  -mdpfp-fast  -mno-dpfp-lrsr @gol
--mea  -mno-mpy  -mmul32x16  -mmul64  -matomic @gol
--mnorm  -mspfp  -mspfp-compact  -mspfp-fast  -msimd  -msoft-float  -mswap @gol
--mcrc  -mdsp-packa  -mdvbf  -mlock  -mmac-d16  -mmac-24  -mrtsc  -mswape @gol
--mtelephony  -mxy  -misize  -mannotate-align  -marclinux  -marclinux_prof @gol
--mlong-calls  -mmedium-calls  -msdata  -mirq-ctrl-saved @gol
--mrgf-banked-regs  -mlpc-width=@var{width}  -G @var{num} @gol
--mvolatile-cache  -mtp-regno=@var{regno} @gol
--malign-call  -mauto-modify-reg  -mbbit-peephole  -mno-brcc @gol
--mcase-vector-pcrel  -mcompact-casesi  -mno-cond-exec  -mearly-cbranchsi @gol
--mexpand-adddi  -mindexed-loads  -mlra  -mlra-priority-none @gol
--mlra-priority-compact -mlra-priority-noncompact  -mmillicode @gol
--mmixed-code  -mq-class  -mRcq  -mRcw  -msize-level=@var{level} @gol
--mtune=@var{cpu}  -mmultcost=@var{num}  -mcode-density-frame @gol
--munalign-prob-threshold=@var{probability}  -mmpy-option=@var{multo} @gol
+@gccoptlist{-mbarrel-shifter  -mjli-always
+-mcpu=@var{cpu}  -mA6  -mARC600  -mA7  -mARC700
+-mdpfp  -mdpfp-compact  -mdpfp-fast  -mno-dpfp-lrsr
+-mea  -mno-mpy  -mmul32x16  -mmul64  -matomic
+-mnorm  -mspfp  -mspfp-compact  -mspfp-fast  -msimd  -msoft-float  -mswap
+-mcrc  -mdsp-packa  -mdvbf  -mlock  -mmac-d16  -mmac-24  -mrtsc  -mswape
+-mtelephony  -mxy  -misize  -mannotate-align  -marclinux  -marclinux_prof
+-mlong-calls  -mmedium-calls  -msdata  -mirq-ctrl-saved
+-mrgf-banked-regs  -mlpc-width=@var{width}  -G @var{num}
+-mvolatile-cache  -mtp-regno=@var{regno}
+-malign-call  -mauto-modify-reg  -mbbit-peephole  -mno-brcc
+-mcase-vector-pcrel  -mcompact-casesi  -mno-cond-exec  -mearly-cbranchsi
+-mexpand-adddi  -mindexed-loads  -mlra  -mlra-priority-none
+-mlra-priority-compact -mlra-priority-noncompact  -mmillicode
+-mmixed-code  -mq-class  -mRcq  -mRcw  -msize-level=@var{level}
+-mtune=@var{cpu}  -mmultcost=@var{num}  -mcode-density-frame
+-munalign-prob-threshold=@var{probability}  -mmpy-option=@var{multo}
 -mdiv-rem  -mcode-density  -mll64  -mfpu=@var{fpu}  -mrf16  -mbranch-index}
 
 @emph{ARM Options}
-@gccoptlist{-mapcs-frame  -mno-apcs-frame @gol
--mabi=@var{name} @gol
--mapcs-stack-check  -mno-apcs-stack-check @gol
--mapcs-reentrant  -mno-apcs-reentrant @gol
--mgeneral-regs-only @gol
--msched-prolog  -mno-sched-prolog @gol
--mlittle-endian  -mbig-endian @gol
--mbe8  -mbe32 @gol
--mfloat-abi=@var{name} @gol
+@gccoptlist{-mapcs-frame  -mno-apcs-frame
+-mabi=@var{name}
+-mapcs-stack-check  -mno-apcs-stack-check
+-mapcs-reentrant  -mno-apcs-reentrant
+-mgeneral-regs-only
+-msched-prolog  -mno-sched-prolog
+-mlittle-endian  -mbig-endian
+-mbe8  -mbe32
+-mfloat-abi=@var{name}
 -mfp16-format=@var{name}
--mthumb-interwork  -mno-thumb-interwork @gol
--mcpu=@var{name}  -march=@var{name}  -mfpu=@var{name}  @gol
--mtune=@var{name}  -mprint-tune-info @gol
--mstructure-size-boundary=@var{n} @gol
--mabort-on-noreturn @gol
--mlong-calls  -mno-long-calls @gol
--msingle-pic-base  -mno-single-pic-base @gol
--mpic-register=@var{reg} @gol
--mnop-fun-dllimport @gol
--mpoke-function-name @gol
--mthumb  -marm  -mflip-thumb @gol
--mtpcs-frame  -mtpcs-leaf-frame @gol
--mcaller-super-interworking  -mcallee-super-interworking @gol
--mtp=@var{name}  -mtls-dialect=@var{dialect} @gol
--mword-relocations @gol
--mfix-cortex-m3-ldrd @gol
--mfix-cortex-a57-aes-1742098 @gol
--mfix-cortex-a72-aes-1655431 @gol
--munaligned-access @gol
--mneon-for-64bits @gol
--mslow-flash-data @gol
--masm-syntax-unified @gol
--mrestrict-it @gol
--mverbose-cost-dump @gol
--mpure-code @gol
--mcmse @gol
--mfix-cmse-cve-2021-35465 @gol
--mstack-protector-guard=@var{guard} -mstack-protector-guard-offset=@var{offset} @gol
--mfdpic @gol
+-mthumb-interwork  -mno-thumb-interwork
+-mcpu=@var{name}  -march=@var{name}  -mfpu=@var{name}
+-mtune=@var{name}  -mprint-tune-info
+-mstructure-size-boundary=@var{n}
+-mabort-on-noreturn
+-mlong-calls  -mno-long-calls
+-msingle-pic-base  -mno-single-pic-base
+-mpic-register=@var{reg}
+-mnop-fun-dllimport
+-mpoke-function-name
+-mthumb  -marm  -mflip-thumb
+-mtpcs-frame  -mtpcs-leaf-frame
+-mcaller-super-interworking  -mcallee-super-interworking
+-mtp=@var{name}  -mtls-dialect=@var{dialect}
+-mword-relocations
+-mfix-cortex-m3-ldrd
+-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}
+-mfdpic
 -mbranch-protection=@var{none}|@var{standard}|@var{pac-ret}[+@var{leaf}]
 [+@var{bti}]|@var{bti}[+@var{pac-ret}[+@var{leaf}]]}
 
 @emph{AVR Options}
-@gccoptlist{-mmcu=@var{mcu}  -mabsdata  -maccumulate-args @gol
--mbranch-cost=@var{cost} @gol
--mcall-prologues  -mgas-isr-prologues  -mint8 @gol
--mdouble=@var{bits} -mlong-double=@var{bits} @gol
--mn_flash=@var{size}  -mno-interrupts @gol
--mmain-is-OS_task  -mrelax  -mrmw  -mstrict-X  -mtiny-stack @gol
--mfract-convert-truncate @gol
--mshort-calls  -nodevicelib  -nodevicespecs @gol
+@gccoptlist{-mmcu=@var{mcu}  -mabsdata  -maccumulate-args
+-mbranch-cost=@var{cost}
+-mcall-prologues  -mgas-isr-prologues  -mint8
+-mdouble=@var{bits} -mlong-double=@var{bits}
+-mn_flash=@var{size}  -mno-interrupts
+-mmain-is-OS_task  -mrelax  -mrmw  -mstrict-X  -mtiny-stack
+-mfract-convert-truncate
+-mshort-calls  -nodevicelib  -nodevicespecs
 -Waddr-space-convert  -Wmisspelled-isr}
 
 @emph{Blackfin Options}
-@gccoptlist{-mcpu=@var{cpu}@r{[}-@var{sirevision}@r{]} @gol
--msim  -momit-leaf-frame-pointer  -mno-omit-leaf-frame-pointer @gol
--mspecld-anomaly  -mno-specld-anomaly  -mcsync-anomaly  -mno-csync-anomaly @gol
--mlow-64k  -mno-low64k  -mstack-check-l1  -mid-shared-library @gol
--mno-id-shared-library  -mshared-library-id=@var{n} @gol
--mleaf-id-shared-library  -mno-leaf-id-shared-library @gol
--msep-data  -mno-sep-data  -mlong-calls  -mno-long-calls @gol
--mfast-fp  -minline-plt  -mmulticore  -mcorea  -mcoreb  -msdram @gol
+@gccoptlist{-mcpu=@var{cpu}@r{[}-@var{sirevision}@r{]}
+-msim  -momit-leaf-frame-pointer  -mno-omit-leaf-frame-pointer
+-mspecld-anomaly  -mno-specld-anomaly  -mcsync-anomaly  -mno-csync-anomaly
+-mlow-64k  -mno-low64k  -mstack-check-l1  -mid-shared-library
+-mno-id-shared-library  -mshared-library-id=@var{n}
+-mleaf-id-shared-library  -mno-leaf-id-shared-library
+-msep-data  -mno-sep-data  -mlong-calls  -mno-long-calls
+-mfast-fp  -minline-plt  -mmulticore  -mcorea  -mcoreb  -msdram
 -micplb}
 
 @emph{C6X Options}
-@gccoptlist{-mbig-endian  -mlittle-endian  -march=@var{cpu} @gol
+@gccoptlist{-mbig-endian  -mlittle-endian  -march=@var{cpu}
 -msim  -msdata=@var{sdata-type}}
 
 @emph{CRIS Options}
 @gccoptlist{-mcpu=@var{cpu}  -march=@var{cpu}
--mtune=@var{cpu} -mmax-stack-frame=@var{n} @gol
--metrax4  -metrax100  -mpdebug  -mcc-init  -mno-side-effects @gol
--mstack-align  -mdata-align  -mconst-align @gol
--m32-bit  -m16-bit  -m8-bit  -mno-prologue-epilogue @gol
--melf  -maout  -sim  -sim2 @gol
+-mtune=@var{cpu} -mmax-stack-frame=@var{n}
+-metrax4  -metrax100  -mpdebug  -mcc-init  -mno-side-effects
+-mstack-align  -mdata-align  -mconst-align
+-m32-bit  -m16-bit  -m8-bit  -mno-prologue-epilogue
+-melf  -maout  -sim  -sim2
 -mmul-bug-workaround  -mno-mul-bug-workaround}
 
 @emph{C-SKY Options}
-@gccoptlist{-march=@var{arch}  -mcpu=@var{cpu} @gol
--mbig-endian  -EB  -mlittle-endian  -EL @gol
--mhard-float  -msoft-float  -mfpu=@var{fpu}  -mdouble-float  -mfdivdu @gol
--mfloat-abi=@var{name} @gol
--melrw  -mistack  -mmp  -mcp  -mcache  -msecurity  -mtrust @gol
--mdsp  -medsp  -mvdsp @gol
--mdiv  -msmart  -mhigh-registers  -manchor @gol
--mpushpop  -mmultiple-stld  -mconstpool  -mstack-size  -mccrt @gol
+@gccoptlist{-march=@var{arch}  -mcpu=@var{cpu}
+-mbig-endian  -EB  -mlittle-endian  -EL
+-mhard-float  -msoft-float  -mfpu=@var{fpu}  -mdouble-float  -mfdivdu
+-mfloat-abi=@var{name}
+-melrw  -mistack  -mmp  -mcp  -mcache  -msecurity  -mtrust
+-mdsp  -medsp  -mvdsp
+-mdiv  -msmart  -mhigh-registers  -manchor
+-mpushpop  -mmultiple-stld  -mconstpool  -mstack-size  -mccrt
 -mbranch-cost=@var{n}  -mcse-cc  -msched-prolog -msim}
 
 @emph{Darwin Options}
-@gccoptlist{-all_load  -allowable_client  -arch  -arch_errors_fatal @gol
--arch_only  -bind_at_load  -bundle  -bundle_loader @gol
--client_name  -compatibility_version  -current_version @gol
--dead_strip @gol
--dependency-file  -dylib_file  -dylinker_install_name @gol
--dynamic  -dynamiclib  -exported_symbols_list @gol
--filelist  -flat_namespace  -force_cpusubtype_ALL @gol
--force_flat_namespace  -headerpad_max_install_names @gol
--iframework @gol
--image_base  -init  -install_name  -keep_private_externs @gol
--multi_module  -multiply_defined  -multiply_defined_unused @gol
--noall_load   -no_dead_strip_inits_and_terms @gol
--nofixprebinding  -nomultidefs  -noprebind  -noseglinkedit @gol
--pagezero_size  -prebind  -prebind_all_twolevel_modules @gol
--private_bundle  -read_only_relocs  -sectalign @gol
--sectobjectsymbols  -whyload  -seg1addr @gol
--sectcreate  -sectobjectsymbols  -sectorder @gol
--segaddr  -segs_read_only_addr  -segs_read_write_addr @gol
--seg_addr_table  -seg_addr_table_filename  -seglinkedit @gol
--segprot  -segs_read_only_addr  -segs_read_write_addr @gol
--single_module  -static  -sub_library  -sub_umbrella @gol
--twolevel_namespace  -umbrella  -undefined @gol
--unexported_symbols_list  -weak_reference_mismatches @gol
--whatsloaded  -F  -gused  -gfull  -mmacosx-version-min=@var{version} @gol
+@gccoptlist{-all_load  -allowable_client  -arch  -arch_errors_fatal
+-arch_only  -bind_at_load  -bundle  -bundle_loader
+-client_name  -compatibility_version  -current_version
+-dead_strip
+-dependency-file  -dylib_file  -dylinker_install_name
+-dynamic  -dynamiclib  -exported_symbols_list
+-filelist  -flat_namespace  -force_cpusubtype_ALL
+-force_flat_namespace  -headerpad_max_install_names
+-iframework
+-image_base  -init  -install_name  -keep_private_externs
+-multi_module  -multiply_defined  -multiply_defined_unused
+-noall_load   -no_dead_strip_inits_and_terms
+-nofixprebinding  -nomultidefs  -noprebind  -noseglinkedit
+-pagezero_size  -prebind  -prebind_all_twolevel_modules
+-private_bundle  -read_only_relocs  -sectalign
+-sectobjectsymbols  -whyload  -seg1addr
+-sectcreate  -sectobjectsymbols  -sectorder
+-segaddr  -segs_read_only_addr  -segs_read_write_addr
+-seg_addr_table  -seg_addr_table_filename  -seglinkedit
+-segprot  -segs_read_only_addr  -segs_read_write_addr
+-single_module  -static  -sub_library  -sub_umbrella
+-twolevel_namespace  -umbrella  -undefined
+-unexported_symbols_list  -weak_reference_mismatches
+-whatsloaded  -F  -gused  -gfull  -mmacosx-version-min=@var{version}
 -mkernel  -mone-byte-bool}
 
 @emph{DEC Alpha Options}
-@gccoptlist{-mno-fp-regs  -msoft-float @gol
--mieee  -mieee-with-inexact  -mieee-conformant @gol
--mfp-trap-mode=@var{mode}  -mfp-rounding-mode=@var{mode} @gol
--mtrap-precision=@var{mode}  -mbuild-constants @gol
--mcpu=@var{cpu-type}  -mtune=@var{cpu-type} @gol
--mbwx  -mmax  -mfix  -mcix @gol
--mfloat-vax  -mfloat-ieee @gol
--mexplicit-relocs  -msmall-data  -mlarge-data @gol
--msmall-text  -mlarge-text @gol
+@gccoptlist{-mno-fp-regs  -msoft-float
+-mieee  -mieee-with-inexact  -mieee-conformant
+-mfp-trap-mode=@var{mode}  -mfp-rounding-mode=@var{mode}
+-mtrap-precision=@var{mode}  -mbuild-constants
+-mcpu=@var{cpu-type}  -mtune=@var{cpu-type}
+-mbwx  -mmax  -mfix  -mcix
+-mfloat-vax  -mfloat-ieee
+-mexplicit-relocs  -msmall-data  -mlarge-data
+-msmall-text  -mlarge-text
 -mmemory-latency=@var{time}}
 
 @emph{eBPF Options}
@@ -953,526 +953,526 @@ Objective-C and Objective-C++ Dialects}.
 @gccoptlist{-msim  -mlra  -mnodiv  -mft32b  -mcompress  -mnopm}
 
 @emph{FRV Options}
-@gccoptlist{-mgpr-32  -mgpr-64  -mfpr-32  -mfpr-64 @gol
--mhard-float  -msoft-float @gol
--malloc-cc  -mfixed-cc  -mdword  -mno-dword @gol
--mdouble  -mno-double @gol
--mmedia  -mno-media  -mmuladd  -mno-muladd @gol
--mfdpic  -minline-plt  -mgprel-ro  -multilib-library-pic @gol
--mlinked-fp  -mlong-calls  -malign-labels @gol
--mlibrary-pic  -macc-4  -macc-8 @gol
--mpack  -mno-pack  -mno-eflags  -mcond-move  -mno-cond-move @gol
--moptimize-membar  -mno-optimize-membar @gol
--mscc  -mno-scc  -mcond-exec  -mno-cond-exec @gol
--mvliw-branch  -mno-vliw-branch @gol
--mmulti-cond-exec  -mno-multi-cond-exec  -mnested-cond-exec @gol
--mno-nested-cond-exec  -mtomcat-stats @gol
--mTLS  -mtls @gol
+@gccoptlist{-mgpr-32  -mgpr-64  -mfpr-32  -mfpr-64
+-mhard-float  -msoft-float
+-malloc-cc  -mfixed-cc  -mdword  -mno-dword
+-mdouble  -mno-double
+-mmedia  -mno-media  -mmuladd  -mno-muladd
+-mfdpic  -minline-plt  -mgprel-ro  -multilib-library-pic
+-mlinked-fp  -mlong-calls  -malign-labels
+-mlibrary-pic  -macc-4  -macc-8
+-mpack  -mno-pack  -mno-eflags  -mcond-move  -mno-cond-move
+-moptimize-membar  -mno-optimize-membar
+-mscc  -mno-scc  -mcond-exec  -mno-cond-exec
+-mvliw-branch  -mno-vliw-branch
+-mmulti-cond-exec  -mno-multi-cond-exec  -mnested-cond-exec
+-mno-nested-cond-exec  -mtomcat-stats
+-mTLS  -mtls
 -mcpu=@var{cpu}}
 
 @emph{GNU/Linux Options}
-@gccoptlist{-mglibc  -muclibc  -mmusl  -mbionic  -mandroid @gol
+@gccoptlist{-mglibc  -muclibc  -mmusl  -mbionic  -mandroid
 -tno-android-cc  -tno-android-ld}
 
 @emph{H8/300 Options}
 @gccoptlist{-mrelax  -mh  -ms  -mn  -mexr  -mno-exr  -mint32  -malign-300}
 
 @emph{HPPA Options}
-@gccoptlist{-march=@var{architecture-type} @gol
--matomic-libcalls  -mbig-switch @gol
--mcaller-copies  -mdisable-fpregs  -mdisable-indexing @gol
--mordered  -mfast-indirect-calls  -mgas  -mgnu-ld   -mhp-ld @gol
--mfixed-range=@var{register-range} @gol
--mcoherent-ldcw -mjump-in-delay  -mlinker-opt  -mlong-calls @gol
--mlong-load-store  -mno-atomic-libcalls  -mno-disable-fpregs @gol
--mno-disable-indexing  -mno-fast-indirect-calls  -mno-gas @gol
--mno-jump-in-delay  -mno-long-load-store @gol
--mno-portable-runtime  -mno-soft-float @gol
--mno-space-regs  -msoft-float  -mpa-risc-1-0 @gol
--mpa-risc-1-1  -mpa-risc-2-0  -mportable-runtime @gol
--mschedule=@var{cpu-type}  -mspace-regs  -msoft-mult  -msio  -mwsio @gol
+@gccoptlist{-march=@var{architecture-type}
+-matomic-libcalls  -mbig-switch
+-mcaller-copies  -mdisable-fpregs  -mdisable-indexing
+-mordered  -mfast-indirect-calls  -mgas  -mgnu-ld   -mhp-ld
+-mfixed-range=@var{register-range}
+-mcoherent-ldcw -mjump-in-delay  -mlinker-opt  -mlong-calls
+-mlong-load-store  -mno-atomic-libcalls  -mno-disable-fpregs
+-mno-disable-indexing  -mno-fast-indirect-calls  -mno-gas
+-mno-jump-in-delay  -mno-long-load-store
+-mno-portable-runtime  -mno-soft-float
+-mno-space-regs  -msoft-float  -mpa-risc-1-0
+-mpa-risc-1-1  -mpa-risc-2-0  -mportable-runtime
+-mschedule=@var{cpu-type}  -mspace-regs  -msoft-mult  -msio  -mwsio
 -munix=@var{unix-std}  -nolibdld  -static  -threads}
 
 @emph{IA-64 Options}
-@gccoptlist{-mbig-endian  -mlittle-endian  -mgnu-as  -mgnu-ld  -mno-pic @gol
--mvolatile-asm-stop  -mregister-names  -msdata  -mno-sdata @gol
--mconstant-gp  -mauto-pic  -mfused-madd @gol
--minline-float-divide-min-latency @gol
--minline-float-divide-max-throughput @gol
--mno-inline-float-divide @gol
--minline-int-divide-min-latency @gol
--minline-int-divide-max-throughput  @gol
--mno-inline-int-divide @gol
--minline-sqrt-min-latency  -minline-sqrt-max-throughput @gol
--mno-inline-sqrt @gol
--mdwarf2-asm  -mearly-stop-bits @gol
--mfixed-range=@var{register-range}  -mtls-size=@var{tls-size} @gol
--mtune=@var{cpu-type}  -milp32  -mlp64 @gol
--msched-br-data-spec  -msched-ar-data-spec  -msched-control-spec @gol
--msched-br-in-data-spec  -msched-ar-in-data-spec  -msched-in-control-spec @gol
--msched-spec-ldc  -msched-spec-control-ldc @gol
--msched-prefer-non-data-spec-insns  -msched-prefer-non-control-spec-insns @gol
--msched-stop-bits-after-every-cycle  -msched-count-spec-in-critical-path @gol
--msel-sched-dont-check-control-spec  -msched-fp-mem-deps-zero-cost @gol
+@gccoptlist{-mbig-endian  -mlittle-endian  -mgnu-as  -mgnu-ld  -mno-pic
+-mvolatile-asm-stop  -mregister-names  -msdata  -mno-sdata
+-mconstant-gp  -mauto-pic  -mfused-madd
+-minline-float-divide-min-latency
+-minline-float-divide-max-throughput
+-mno-inline-float-divide
+-minline-int-divide-min-latency
+-minline-int-divide-max-throughput
+-mno-inline-int-divide
+-minline-sqrt-min-latency  -minline-sqrt-max-throughput
+-mno-inline-sqrt
+-mdwarf2-asm  -mearly-stop-bits
+-mfixed-range=@var{register-range}  -mtls-size=@var{tls-size}
+-mtune=@var{cpu-type}  -milp32  -mlp64
+-msched-br-data-spec  -msched-ar-data-spec  -msched-control-spec
+-msched-br-in-data-spec  -msched-ar-in-data-spec  -msched-in-control-spec
+-msched-spec-ldc  -msched-spec-control-ldc
+-msched-prefer-non-data-spec-insns  -msched-prefer-non-control-spec-insns
+-msched-stop-bits-after-every-cycle  -msched-count-spec-in-critical-path
+-msel-sched-dont-check-control-spec  -msched-fp-mem-deps-zero-cost
 -msched-max-memory-insns-hard-limit  -msched-max-memory-insns=@var{max-insns}}
 
 @emph{LM32 Options}
-@gccoptlist{-mbarrel-shift-enabled  -mdivide-enabled  -mmultiply-enabled @gol
+@gccoptlist{-mbarrel-shift-enabled  -mdivide-enabled  -mmultiply-enabled
 -msign-extend-enabled  -muser-enabled}
 
 @emph{LoongArch Options}
-@gccoptlist{-march=@var{cpu-type}  -mtune=@var{cpu-type} -mabi=@var{base-abi-type} @gol
--mfpu=@var{fpu-type} -msoft-float -msingle-float -mdouble-float @gol
--mbranch-cost=@var{n}  -mcheck-zero-division -mno-check-zero-division @gol
--mcond-move-int  -mno-cond-move-int @gol
--mcond-move-float  -mno-cond-move-float @gol
--memcpy  -mno-memcpy -mstrict-align -mno-strict-align @gol
--mmax-inline-memcpy-size=@var{n} @gol
--mexplicit-relocs -mno-explicit-relocs @gol
--mdirect-extern-access -mno-direct-extern-access @gol
+@gccoptlist{-march=@var{cpu-type}  -mtune=@var{cpu-type} -mabi=@var{base-abi-type}
+-mfpu=@var{fpu-type} -msoft-float -msingle-float -mdouble-float
+-mbranch-cost=@var{n}  -mcheck-zero-division -mno-check-zero-division
+-mcond-move-int  -mno-cond-move-int
+-mcond-move-float  -mno-cond-move-float
+-memcpy  -mno-memcpy -mstrict-align -mno-strict-align
+-mmax-inline-memcpy-size=@var{n}
+-mexplicit-relocs -mno-explicit-relocs
+-mdirect-extern-access -mno-direct-extern-access
 -mcmodel=@var{code-model}}
 
 @emph{M32R/D Options}
-@gccoptlist{-m32r2  -m32rx  -m32r @gol
--mdebug @gol
--malign-loops  -mno-align-loops @gol
--missue-rate=@var{number} @gol
--mbranch-cost=@var{number} @gol
--mmodel=@var{code-size-model-type} @gol
--msdata=@var{sdata-type} @gol
--mno-flush-func  -mflush-func=@var{name} @gol
--mno-flush-trap  -mflush-trap=@var{number} @gol
+@gccoptlist{-m32r2  -m32rx  -m32r
+-mdebug
+-malign-loops  -mno-align-loops
+-missue-rate=@var{number}
+-mbranch-cost=@var{number}
+-mmodel=@var{code-size-model-type}
+-msdata=@var{sdata-type}
+-mno-flush-func  -mflush-func=@var{name}
+-mno-flush-trap  -mflush-trap=@var{number}
 -G @var{num}}
 
 @emph{M32C Options}
 @gccoptlist{-mcpu=@var{cpu}  -msim  -memregs=@var{number}}
 
 @emph{M680x0 Options}
-@gccoptlist{-march=@var{arch}  -mcpu=@var{cpu}  -mtune=@var{tune} @gol
--m68000  -m68020  -m68020-40  -m68020-60  -m68030  -m68040 @gol
--m68060  -mcpu32  -m5200  -m5206e  -m528x  -m5307  -m5407 @gol
--mcfv4e  -mbitfield  -mno-bitfield  -mc68000  -mc68020 @gol
--mnobitfield  -mrtd  -mno-rtd  -mdiv  -mno-div  -mshort @gol
--mno-short  -mhard-float  -m68881  -msoft-float  -mpcrel @gol
--malign-int  -mstrict-align  -msep-data  -mno-sep-data @gol
--mshared-library-id=n  -mid-shared-library  -mno-id-shared-library @gol
+@gccoptlist{-march=@var{arch}  -mcpu=@var{cpu}  -mtune=@var{tune}
+-m68000  -m68020  -m68020-40  -m68020-60  -m68030  -m68040
+-m68060  -mcpu32  -m5200  -m5206e  -m528x  -m5307  -m5407
+-mcfv4e  -mbitfield  -mno-bitfield  -mc68000  -mc68020
+-mnobitfield  -mrtd  -mno-rtd  -mdiv  -mno-div  -mshort
+-mno-short  -mhard-float  -m68881  -msoft-float  -mpcrel
+-malign-int  -mstrict-align  -msep-data  -mno-sep-data
+-mshared-library-id=n  -mid-shared-library  -mno-id-shared-library
 -mxgot  -mno-xgot  -mlong-jump-table-offsets}
 
 @emph{MCore Options}
-@gccoptlist{-mhardlit  -mno-hardlit  -mdiv  -mno-div  -mrelax-immediates @gol
--mno-relax-immediates  -mwide-bitfields  -mno-wide-bitfields @gol
--m4byte-functions  -mno-4byte-functions  -mcallgraph-data @gol
--mno-callgraph-data  -mslow-bytes  -mno-slow-bytes  -mno-lsim @gol
+@gccoptlist{-mhardlit  -mno-hardlit  -mdiv  -mno-div  -mrelax-immediates
+-mno-relax-immediates  -mwide-bitfields  -mno-wide-bitfields
+-m4byte-functions  -mno-4byte-functions  -mcallgraph-data
+-mno-callgraph-data  -mslow-bytes  -mno-slow-bytes  -mno-lsim
 -mlittle-endian  -mbig-endian  -m210  -m340  -mstack-increment}
 
 @emph{MicroBlaze Options}
-@gccoptlist{-msoft-float  -mhard-float  -msmall-divides  -mcpu=@var{cpu} @gol
--mmemcpy  -mxl-soft-mul  -mxl-soft-div  -mxl-barrel-shift @gol
--mxl-pattern-compare  -mxl-stack-check  -mxl-gp-opt  -mno-clearbss @gol
--mxl-multiply-high  -mxl-float-convert  -mxl-float-sqrt @gol
--mbig-endian  -mlittle-endian  -mxl-reorder  -mxl-mode-@var{app-model} @gol
+@gccoptlist{-msoft-float  -mhard-float  -msmall-divides  -mcpu=@var{cpu}
+-mmemcpy  -mxl-soft-mul  -mxl-soft-div  -mxl-barrel-shift
+-mxl-pattern-compare  -mxl-stack-check  -mxl-gp-opt  -mno-clearbss
+-mxl-multiply-high  -mxl-float-convert  -mxl-float-sqrt
+-mbig-endian  -mlittle-endian  -mxl-reorder  -mxl-mode-@var{app-model}
 -mpic-data-is-text-relative}
 
 @emph{MIPS Options}
-@gccoptlist{-EL  -EB  -march=@var{arch}  -mtune=@var{arch} @gol
--mips1  -mips2  -mips3  -mips4  -mips32  -mips32r2  -mips32r3  -mips32r5 @gol
--mips32r6  -mips64  -mips64r2  -mips64r3  -mips64r5  -mips64r6 @gol
--mips16  -mno-mips16  -mflip-mips16 @gol
--minterlink-compressed  -mno-interlink-compressed @gol
--minterlink-mips16  -mno-interlink-mips16 @gol
--mabi=@var{abi}  -mabicalls  -mno-abicalls @gol
--mshared  -mno-shared  -mplt  -mno-plt  -mxgot  -mno-xgot @gol
--mgp32  -mgp64  -mfp32  -mfpxx  -mfp64  -mhard-float  -msoft-float @gol
--mno-float  -msingle-float  -mdouble-float @gol
--modd-spreg  -mno-odd-spreg @gol
--mabs=@var{mode}  -mnan=@var{encoding} @gol
--mdsp  -mno-dsp  -mdspr2  -mno-dspr2 @gol
--mmcu  -mmno-mcu @gol
--meva  -mno-eva @gol
--mvirt  -mno-virt @gol
--mxpa  -mno-xpa @gol
--mcrc  -mno-crc @gol
--mginv  -mno-ginv @gol
--mmicromips  -mno-micromips @gol
--mmsa  -mno-msa @gol
--mloongson-mmi  -mno-loongson-mmi @gol
--mloongson-ext  -mno-loongson-ext @gol
--mloongson-ext2  -mno-loongson-ext2 @gol
--mfpu=@var{fpu-type} @gol
--msmartmips  -mno-smartmips @gol
--mpaired-single  -mno-paired-single  -mdmx  -mno-mdmx @gol
--mips3d  -mno-mips3d  -mmt  -mno-mt  -mllsc  -mno-llsc @gol
--mlong64  -mlong32  -msym32  -mno-sym32 @gol
--G@var{num}  -mlocal-sdata  -mno-local-sdata @gol
--mextern-sdata  -mno-extern-sdata  -mgpopt  -mno-gopt @gol
--membedded-data  -mno-embedded-data @gol
--muninit-const-in-rodata  -mno-uninit-const-in-rodata @gol
--mcode-readable=@var{setting} @gol
--msplit-addresses  -mno-split-addresses @gol
--mexplicit-relocs  -mno-explicit-relocs @gol
--mcheck-zero-division  -mno-check-zero-division @gol
--mdivide-traps  -mdivide-breaks @gol
--mload-store-pairs  -mno-load-store-pairs @gol
--munaligned-access  -mno-unaligned-access @gol
--mmemcpy  -mno-memcpy  -mlong-calls  -mno-long-calls @gol
--mmad  -mno-mad  -mimadd  -mno-imadd  -mfused-madd  -mno-fused-madd  -nocpp @gol
--mfix-24k  -mno-fix-24k @gol
--mfix-r4000  -mno-fix-r4000  -mfix-r4400  -mno-fix-r4400 @gol
--mfix-r5900  -mno-fix-r5900 @gol
--mfix-r10000  -mno-fix-r10000  -mfix-rm7000  -mno-fix-rm7000 @gol
--mfix-vr4120  -mno-fix-vr4120 @gol
--mfix-vr4130  -mno-fix-vr4130  -mfix-sb1  -mno-fix-sb1 @gol
--mflush-func=@var{func}  -mno-flush-func @gol
--mbranch-cost=@var{num}  -mbranch-likely  -mno-branch-likely @gol
--mcompact-branches=@var{policy} @gol
--mfp-exceptions  -mno-fp-exceptions @gol
--mvr4130-align  -mno-vr4130-align  -msynci  -mno-synci @gol
--mlxc1-sxc1  -mno-lxc1-sxc1  -mmadd4  -mno-madd4 @gol
--mrelax-pic-calls  -mno-relax-pic-calls  -mmcount-ra-address @gol
+@gccoptlist{-EL  -EB  -march=@var{arch}  -mtune=@var{arch}
+-mips1  -mips2  -mips3  -mips4  -mips32  -mips32r2  -mips32r3  -mips32r5
+-mips32r6  -mips64  -mips64r2  -mips64r3  -mips64r5  -mips64r6
+-mips16  -mno-mips16  -mflip-mips16
+-minterlink-compressed  -mno-interlink-compressed
+-minterlink-mips16  -mno-interlink-mips16
+-mabi=@var{abi}  -mabicalls  -mno-abicalls
+-mshared  -mno-shared  -mplt  -mno-plt  -mxgot  -mno-xgot
+-mgp32  -mgp64  -mfp32  -mfpxx  -mfp64  -mhard-float  -msoft-float
+-mno-float  -msingle-float  -mdouble-float
+-modd-spreg  -mno-odd-spreg
+-mabs=@var{mode}  -mnan=@var{encoding}
+-mdsp  -mno-dsp  -mdspr2  -mno-dspr2
+-mmcu  -mmno-mcu
+-meva  -mno-eva
+-mvirt  -mno-virt
+-mxpa  -mno-xpa
+-mcrc  -mno-crc
+-mginv  -mno-ginv
+-mmicromips  -mno-micromips
+-mmsa  -mno-msa
+-mloongson-mmi  -mno-loongson-mmi
+-mloongson-ext  -mno-loongson-ext
+-mloongson-ext2  -mno-loongson-ext2
+-mfpu=@var{fpu-type}
+-msmartmips  -mno-smartmips
+-mpaired-single  -mno-paired-single  -mdmx  -mno-mdmx
+-mips3d  -mno-mips3d  -mmt  -mno-mt  -mllsc  -mno-llsc
+-mlong64  -mlong32  -msym32  -mno-sym32
+-G@var{num}  -mlocal-sdata  -mno-local-sdata
+-mextern-sdata  -mno-extern-sdata  -mgpopt  -mno-gopt
+-membedded-data  -mno-embedded-data
+-muninit-const-in-rodata  -mno-uninit-const-in-rodata
+-mcode-readable=@var{setting}
+-msplit-addresses  -mno-split-addresses
+-mexplicit-relocs  -mno-explicit-relocs
+-mcheck-zero-division  -mno-check-zero-division
+-mdivide-traps  -mdivide-breaks
+-mload-store-pairs  -mno-load-store-pairs
+-munaligned-access  -mno-unaligned-access
+-mmemcpy  -mno-memcpy  -mlong-calls  -mno-long-calls
+-mmad  -mno-mad  -mimadd  -mno-imadd  -mfused-madd  -mno-fused-madd  -nocpp
+-mfix-24k  -mno-fix-24k
+-mfix-r4000  -mno-fix-r4000  -mfix-r4400  -mno-fix-r4400
+-mfix-r5900  -mno-fix-r5900
+-mfix-r10000  -mno-fix-r10000  -mfix-rm7000  -mno-fix-rm7000
+-mfix-vr4120  -mno-fix-vr4120
+-mfix-vr4130  -mno-fix-vr4130  -mfix-sb1  -mno-fix-sb1
+-mflush-func=@var{func}  -mno-flush-func
+-mbranch-cost=@var{num}  -mbranch-likely  -mno-branch-likely
+-mcompact-branches=@var{policy}
+-mfp-exceptions  -mno-fp-exceptions
+-mvr4130-align  -mno-vr4130-align  -msynci  -mno-synci
+-mlxc1-sxc1  -mno-lxc1-sxc1  -mmadd4  -mno-madd4
+-mrelax-pic-calls  -mno-relax-pic-calls  -mmcount-ra-address
 -mframe-header-opt  -mno-frame-header-opt}
 
 @emph{MMIX Options}
-@gccoptlist{-mlibfuncs  -mno-libfuncs  -mepsilon  -mno-epsilon  -mabi=gnu @gol
--mabi=mmixware  -mzero-extend  -mknuthdiv  -mtoplevel-symbols @gol
--melf  -mbranch-predict  -mno-branch-predict  -mbase-addresses @gol
+@gccoptlist{-mlibfuncs  -mno-libfuncs  -mepsilon  -mno-epsilon  -mabi=gnu
+-mabi=mmixware  -mzero-extend  -mknuthdiv  -mtoplevel-symbols
+-melf  -mbranch-predict  -mno-branch-predict  -mbase-addresses
 -mno-base-addresses  -msingle-exit  -mno-single-exit}
 
 @emph{MN10300 Options}
-@gccoptlist{-mmult-bug  -mno-mult-bug @gol
--mno-am33  -mam33  -mam33-2  -mam34 @gol
--mtune=@var{cpu-type} @gol
--mreturn-pointer-on-d0 @gol
+@gccoptlist{-mmult-bug  -mno-mult-bug
+-mno-am33  -mam33  -mam33-2  -mam34
+-mtune=@var{cpu-type}
+-mreturn-pointer-on-d0
 -mno-crt0  -mrelax  -mliw  -msetlb}
 
 @emph{Moxie Options}
 @gccoptlist{-meb  -mel  -mmul.x  -mno-crt0}
 
 @emph{MSP430 Options}
-@gccoptlist{-msim  -masm-hex  -mmcu=  -mcpu=  -mlarge  -msmall  -mrelax @gol
--mwarn-mcu @gol
--mcode-region=  -mdata-region= @gol
--msilicon-errata=  -msilicon-errata-warn= @gol
+@gccoptlist{-msim  -masm-hex  -mmcu=  -mcpu=  -mlarge  -msmall  -mrelax
+-mwarn-mcu
+-mcode-region=  -mdata-region=
+-msilicon-errata=  -msilicon-errata-warn=
 -mhwmult=  -minrt  -mtiny-printf  -mmax-inline-shift=}
 
 @emph{NDS32 Options}
-@gccoptlist{-mbig-endian  -mlittle-endian @gol
--mreduced-regs  -mfull-regs @gol
--mcmov  -mno-cmov @gol
--mext-perf  -mno-ext-perf @gol
--mext-perf2  -mno-ext-perf2 @gol
--mext-string  -mno-ext-string @gol
--mv3push  -mno-v3push @gol
--m16bit  -mno-16bit @gol
--misr-vector-size=@var{num} @gol
--mcache-block-size=@var{num} @gol
--march=@var{arch} @gol
--mcmodel=@var{code-model} @gol
+@gccoptlist{-mbig-endian  -mlittle-endian
+-mreduced-regs  -mfull-regs
+-mcmov  -mno-cmov
+-mext-perf  -mno-ext-perf
+-mext-perf2  -mno-ext-perf2
+-mext-string  -mno-ext-string
+-mv3push  -mno-v3push
+-m16bit  -mno-16bit
+-misr-vector-size=@var{num}
+-mcache-block-size=@var{num}
+-march=@var{arch}
+-mcmodel=@var{code-model}
 -mctor-dtor  -mrelax}
 
 @emph{Nios II Options}
-@gccoptlist{-G @var{num}  -mgpopt=@var{option}  -mgpopt  -mno-gpopt @gol
--mgprel-sec=@var{regexp}  -mr0rel-sec=@var{regexp} @gol
--mel  -meb @gol
--mno-bypass-cache  -mbypass-cache @gol
--mno-cache-volatile  -mcache-volatile @gol
--mno-fast-sw-div  -mfast-sw-div @gol
--mhw-mul  -mno-hw-mul  -mhw-mulx  -mno-hw-mulx  -mno-hw-div  -mhw-div @gol
--mcustom-@var{insn}=@var{N}  -mno-custom-@var{insn} @gol
--mcustom-fpu-cfg=@var{name} @gol
--mhal  -msmallc  -msys-crt0=@var{name}  -msys-lib=@var{name} @gol
+@gccoptlist{-G @var{num}  -mgpopt=@var{option}  -mgpopt  -mno-gpopt
+-mgprel-sec=@var{regexp}  -mr0rel-sec=@var{regexp}
+-mel  -meb
+-mno-bypass-cache  -mbypass-cache
+-mno-cache-volatile  -mcache-volatile
+-mno-fast-sw-div  -mfast-sw-div
+-mhw-mul  -mno-hw-mul  -mhw-mulx  -mno-hw-mulx  -mno-hw-div  -mhw-div
+-mcustom-@var{insn}=@var{N}  -mno-custom-@var{insn}
+-mcustom-fpu-cfg=@var{name}
+-mhal  -msmallc  -msys-crt0=@var{name}  -msys-lib=@var{name}
 -march=@var{arch}  -mbmx  -mno-bmx  -mcdx  -mno-cdx}
 
 @emph{Nvidia PTX Options}
 @gccoptlist{-m64  -mmainkernel  -moptimize}
 
 @emph{OpenRISC Options}
-@gccoptlist{-mboard=@var{name}  -mnewlib  -mhard-mul  -mhard-div @gol
--msoft-mul  -msoft-div @gol
--msoft-float  -mhard-float  -mdouble-float -munordered-float @gol
--mcmov  -mror  -mrori  -msext  -msfimm  -mshftimm @gol
+@gccoptlist{-mboard=@var{name}  -mnewlib  -mhard-mul  -mhard-div
+-msoft-mul  -msoft-div
+-msoft-float  -mhard-float  -mdouble-float -munordered-float
+-mcmov  -mror  -mrori  -msext  -msfimm  -mshftimm
 -mcmodel=@var{code-model}}
 
 @emph{PDP-11 Options}
-@gccoptlist{-mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45  -m10 @gol
--mint32  -mno-int16  -mint16  -mno-int32 @gol
+@gccoptlist{-mfpu  -msoft-float  -mac0  -mno-ac0  -m40  -m45  -m10
+-mint32  -mno-int16  -mint16  -mno-int32
 -msplit  -munix-asm  -mdec-asm  -mgnu-asm  -mlra}
 
 @emph{PowerPC Options}
 See RS/6000 and PowerPC Options.
 
 @emph{PRU Options}
-@gccoptlist{-mmcu=@var{mcu}  -minrt  -mno-relax  -mloop @gol
+@gccoptlist{-mmcu=@var{mcu}  -minrt  -mno-relax  -mloop
 -mabi=@var{variant}}
 
 @emph{RISC-V Options}
-@gccoptlist{-mbranch-cost=@var{N-instruction} @gol
--mplt  -mno-plt @gol
--mabi=@var{ABI-string} @gol
--mfdiv  -mno-fdiv @gol
--mdiv  -mno-div @gol
--misa-spec=@var{ISA-spec-string} @gol
--march=@var{ISA-string} @gol
--mtune=@var{processor-string} @gol
--mpreferred-stack-boundary=@var{num} @gol
--msmall-data-limit=@var{N-bytes} @gol
--msave-restore  -mno-save-restore @gol
--mshorten-memrefs  -mno-shorten-memrefs @gol
--mstrict-align  -mno-strict-align @gol
--mcmodel=medlow  -mcmodel=medany @gol
--mexplicit-relocs  -mno-explicit-relocs @gol
--mrelax  -mno-relax @gol
--mriscv-attribute  -mno-riscv-attribute @gol
--malign-data=@var{type} @gol
--mbig-endian  -mlittle-endian @gol
--mstack-protector-guard=@var{guard}  -mstack-protector-guard-reg=@var{reg} @gol
--mstack-protector-guard-offset=@var{offset} @gol
+@gccoptlist{-mbranch-cost=@var{N-instruction}
+-mplt  -mno-plt
+-mabi=@var{ABI-string}
+-mfdiv  -mno-fdiv
+-mdiv  -mno-div
+-misa-spec=@var{ISA-spec-string}
+-march=@var{ISA-string}
+-mtune=@var{processor-string}
+-mpreferred-stack-boundary=@var{num}
+-msmall-data-limit=@var{N-bytes}
+-msave-restore  -mno-save-restore
+-mshorten-memrefs  -mno-shorten-memrefs
+-mstrict-align  -mno-strict-align
+-mcmodel=medlow  -mcmodel=medany
+-mexplicit-relocs  -mno-explicit-relocs
+-mrelax  -mno-relax
+-mriscv-attribute  -mno-riscv-attribute
+-malign-data=@var{type}
+-mbig-endian  -mlittle-endian
+-mstack-protector-guard=@var{guard}  -mstack-protector-guard-reg=@var{reg}
+-mstack-protector-guard-offset=@var{offset}
 -mcsr-check -mno-csr-check}
 
 @emph{RL78 Options}
-@gccoptlist{-msim  -mmul=none  -mmul=g13  -mmul=g14  -mallregs @gol
--mcpu=g10  -mcpu=g13  -mcpu=g14  -mg10  -mg13  -mg14 @gol
+@gccoptlist{-msim  -mmul=none  -mmul=g13  -mmul=g14  -mallregs
+-mcpu=g10  -mcpu=g13  -mcpu=g14  -mg10  -mg13  -mg14
 -m64bit-doubles  -m32bit-doubles  -msave-mduc-in-interrupts}
 
 @emph{RS/6000 and PowerPC Options}
-@gccoptlist{-mcpu=@var{cpu-type} @gol
--mtune=@var{cpu-type} @gol
--mcmodel=@var{code-model} @gol
--mpowerpc64 @gol
--maltivec  -mno-altivec @gol
--mpowerpc-gpopt  -mno-powerpc-gpopt @gol
--mpowerpc-gfxopt  -mno-powerpc-gfxopt @gol
--mmfcrf  -mno-mfcrf  -mpopcntb  -mno-popcntb  -mpopcntd  -mno-popcntd @gol
--mfprnd  -mno-fprnd @gol
--mcmpb  -mno-cmpb  -mhard-dfp  -mno-hard-dfp @gol
--mfull-toc   -mminimal-toc  -mno-fp-in-toc  -mno-sum-in-toc @gol
--m64  -m32  -mxl-compat  -mno-xl-compat  -mpe @gol
--malign-power  -malign-natural @gol
--msoft-float  -mhard-float  -mmultiple  -mno-multiple @gol
--mupdate  -mno-update @gol
--mavoid-indexed-addresses  -mno-avoid-indexed-addresses @gol
--mfused-madd  -mno-fused-madd  -mbit-align  -mno-bit-align @gol
--mstrict-align  -mno-strict-align  -mrelocatable @gol
--mno-relocatable  -mrelocatable-lib  -mno-relocatable-lib @gol
--mtoc  -mno-toc  -mlittle  -mlittle-endian  -mbig  -mbig-endian @gol
--mdynamic-no-pic  -mswdiv  -msingle-pic-base @gol
--mprioritize-restricted-insns=@var{priority} @gol
--msched-costly-dep=@var{dependence_type} @gol
--minsert-sched-nops=@var{scheme} @gol
--mcall-aixdesc  -mcall-eabi  -mcall-freebsd  @gol
--mcall-linux  -mcall-netbsd  -mcall-openbsd  @gol
--mcall-sysv  -mcall-sysv-eabi  -mcall-sysv-noeabi @gol
--mtraceback=@var{traceback_type} @gol
--maix-struct-return  -msvr4-struct-return @gol
--mabi=@var{abi-type}  -msecure-plt  -mbss-plt @gol
--mlongcall  -mno-longcall  -mpltseq  -mno-pltseq  @gol
--mblock-move-inline-limit=@var{num} @gol
--mblock-compare-inline-limit=@var{num} @gol
--mblock-compare-inline-loop-limit=@var{num} @gol
--mno-block-ops-unaligned-vsx @gol
--mstring-compare-inline-limit=@var{num} @gol
--misel  -mno-isel @gol
--mvrsave  -mno-vrsave @gol
--mmulhw  -mno-mulhw @gol
--mdlmzb  -mno-dlmzb @gol
--mprototype  -mno-prototype @gol
--msim  -mmvme  -mads  -myellowknife  -memb  -msdata @gol
--msdata=@var{opt}  -mreadonly-in-sdata  -mvxworks  -G @var{num} @gol
--mrecip  -mrecip=@var{opt}  -mno-recip  -mrecip-precision @gol
--mno-recip-precision @gol
--mveclibabi=@var{type}  -mfriz  -mno-friz @gol
--mpointers-to-nested-functions  -mno-pointers-to-nested-functions @gol
--msave-toc-indirect  -mno-save-toc-indirect @gol
--mpower8-fusion  -mno-mpower8-fusion  -mpower8-vector  -mno-power8-vector @gol
--mcrypto  -mno-crypto  -mhtm  -mno-htm @gol
--mquad-memory  -mno-quad-memory @gol
--mquad-memory-atomic  -mno-quad-memory-atomic @gol
--mcompat-align-parm  -mno-compat-align-parm @gol
--mfloat128  -mno-float128  -mfloat128-hardware  -mno-float128-hardware @gol
--mgnu-attribute  -mno-gnu-attribute @gol
--mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{reg} @gol
--mstack-protector-guard-offset=@var{offset} -mprefixed -mno-prefixed @gol
--mpcrel -mno-pcrel -mmma -mno-mmma -mrop-protect -mno-rop-protect @gol
+@gccoptlist{-mcpu=@var{cpu-type}
+-mtune=@var{cpu-type}
+-mcmodel=@var{code-model}
+-mpowerpc64
+-maltivec  -mno-altivec
+-mpowerpc-gpopt  -mno-powerpc-gpopt
+-mpowerpc-gfxopt  -mno-powerpc-gfxopt
+-mmfcrf  -mno-mfcrf  -mpopcntb  -mno-popcntb  -mpopcntd  -mno-popcntd
+-mfprnd  -mno-fprnd
+-mcmpb  -mno-cmpb  -mhard-dfp  -mno-hard-dfp
+-mfull-toc   -mminimal-toc  -mno-fp-in-toc  -mno-sum-in-toc
+-m64  -m32  -mxl-compat  -mno-xl-compat  -mpe
+-malign-power  -malign-natural
+-msoft-float  -mhard-float  -mmultiple  -mno-multiple
+-mupdate  -mno-update
+-mavoid-indexed-addresses  -mno-avoid-indexed-addresses
+-mfused-madd  -mno-fused-madd  -mbit-align  -mno-bit-align
+-mstrict-align  -mno-strict-align  -mrelocatable
+-mno-relocatable  -mrelocatable-lib  -mno-relocatable-lib
+-mtoc  -mno-toc  -mlittle  -mlittle-endian  -mbig  -mbig-endian
+-mdynamic-no-pic  -mswdiv  -msingle-pic-base
+-mprioritize-restricted-insns=@var{priority}
+-msched-costly-dep=@var{dependence_type}
+-minsert-sched-nops=@var{scheme}
+-mcall-aixdesc  -mcall-eabi  -mcall-freebsd
+-mcall-linux  -mcall-netbsd  -mcall-openbsd
+-mcall-sysv  -mcall-sysv-eabi  -mcall-sysv-noeabi
+-mtraceback=@var{traceback_type}
+-maix-struct-return  -msvr4-struct-return
+-mabi=@var{abi-type}  -msecure-plt  -mbss-plt
+-mlongcall  -mno-longcall  -mpltseq  -mno-pltseq
+-mblock-move-inline-limit=@var{num}
+-mblock-compare-inline-limit=@var{num}
+-mblock-compare-inline-loop-limit=@var{num}
+-mno-block-ops-unaligned-vsx
+-mstring-compare-inline-limit=@var{num}
+-misel  -mno-isel
+-mvrsave  -mno-vrsave
+-mmulhw  -mno-mulhw
+-mdlmzb  -mno-dlmzb
+-mprototype  -mno-prototype
+-msim  -mmvme  -mads  -myellowknife  -memb  -msdata
+-msdata=@var{opt}  -mreadonly-in-sdata  -mvxworks  -G @var{num}
+-mrecip  -mrecip=@var{opt}  -mno-recip  -mrecip-precision
+-mno-recip-precision
+-mveclibabi=@var{type}  -mfriz  -mno-friz
+-mpointers-to-nested-functions  -mno-pointers-to-nested-functions
+-msave-toc-indirect  -mno-save-toc-indirect
+-mpower8-fusion  -mno-mpower8-fusion  -mpower8-vector  -mno-power8-vector
+-mcrypto  -mno-crypto  -mhtm  -mno-htm
+-mquad-memory  -mno-quad-memory
+-mquad-memory-atomic  -mno-quad-memory-atomic
+-mcompat-align-parm  -mno-compat-align-parm
+-mfloat128  -mno-float128  -mfloat128-hardware  -mno-float128-hardware
+-mgnu-attribute  -mno-gnu-attribute
+-mstack-protector-guard=@var{guard} -mstack-protector-guard-reg=@var{reg}
+-mstack-protector-guard-offset=@var{offset} -mprefixed -mno-prefixed
+-mpcrel -mno-pcrel -mmma -mno-mmma -mrop-protect -mno-rop-protect
 -mprivileged -mno-privileged}
 
 @emph{RX Options}
-@gccoptlist{-m64bit-doubles  -m32bit-doubles  -fpu  -nofpu@gol
--mcpu=@gol
--mbig-endian-data  -mlittle-endian-data @gol
--msmall-data @gol
--msim  -mno-sim@gol
--mas100-syntax  -mno-as100-syntax@gol
--mrelax@gol
--mmax-constant-size=@gol
--mint-register=@gol
--mpid@gol
--mallow-string-insns  -mno-allow-string-insns@gol
--mjsr@gol
--mno-warn-multiple-fast-interrupts@gol
+@gccoptlist{-m64bit-doubles  -m32bit-doubles  -fpu  -nofpu
+-mcpu=
+-mbig-endian-data  -mlittle-endian-data
+-msmall-data
+-msim  -mno-sim
+-mas100-syntax  -mno-as100-syntax
+-mrelax
+-mmax-constant-size=
+-mint-register=
+-mpid
+-mallow-string-insns  -mno-allow-string-insns
+-mjsr
+-mno-warn-multiple-fast-interrupts
 -msave-acc-in-interrupts}
 
 @emph{S/390 and zSeries Options}
-@gccoptlist{-mtune=@var{cpu-type}  -march=@var{cpu-type} @gol
--mhard-float  -msoft-float  -mhard-dfp  -mno-hard-dfp @gol
--mlong-double-64  -mlong-double-128 @gol
--mbackchain  -mno-backchain  -mpacked-stack  -mno-packed-stack @gol
--msmall-exec  -mno-small-exec  -mmvcle  -mno-mvcle @gol
--m64  -m31  -mdebug  -mno-debug  -mesa  -mzarch @gol
--mhtm  -mvx  -mzvector @gol
--mtpf-trace  -mno-tpf-trace  -mtpf-trace-skip  -mno-tpf-trace-skip @gol
--mfused-madd  -mno-fused-madd @gol
--mwarn-framesize  -mwarn-dynamicstack  -mstack-size  -mstack-guard @gol
+@gccoptlist{-mtune=@var{cpu-type}  -march=@var{cpu-type}
+-mhard-float  -msoft-float  -mhard-dfp  -mno-hard-dfp
+-mlong-double-64  -mlong-double-128
+-mbackchain  -mno-backchain  -mpacked-stack  -mno-packed-stack
+-msmall-exec  -mno-small-exec  -mmvcle  -mno-mvcle
+-m64  -m31  -mdebug  -mno-debug  -mesa  -mzarch
+-mhtm  -mvx  -mzvector
+-mtpf-trace  -mno-tpf-trace  -mtpf-trace-skip  -mno-tpf-trace-skip
+-mfused-madd  -mno-fused-madd
+-mwarn-framesize  -mwarn-dynamicstack  -mstack-size  -mstack-guard
 -mhotpatch=@var{halfwords},@var{halfwords}}
 
 @emph{SH Options}
-@gccoptlist{-m1  -m2  -m2e @gol
--m2a-nofpu  -m2a-single-only  -m2a-single  -m2a @gol
--m3  -m3e @gol
--m4-nofpu  -m4-single-only  -m4-single  -m4 @gol
--m4a-nofpu  -m4a-single-only  -m4a-single  -m4a  -m4al @gol
--mb  -ml  -mdalign  -mrelax @gol
--mbigtable  -mfmovd  -mrenesas  -mno-renesas  -mnomacsave @gol
--mieee  -mno-ieee  -mbitops  -misize  -minline-ic_invalidate  -mpadstruct @gol
--mprefergot  -musermode  -multcost=@var{number}  -mdiv=@var{strategy} @gol
--mdivsi3_libfunc=@var{name}  -mfixed-range=@var{register-range} @gol
--maccumulate-outgoing-args @gol
--matomic-model=@var{atomic-model} @gol
--mbranch-cost=@var{num}  -mzdcbranch  -mno-zdcbranch @gol
--mcbranch-force-delay-slot @gol
--mfused-madd  -mno-fused-madd  -mfsca  -mno-fsca  -mfsrra  -mno-fsrra @gol
+@gccoptlist{-m1  -m2  -m2e
+-m2a-nofpu  -m2a-single-only  -m2a-single  -m2a
+-m3  -m3e
+-m4-nofpu  -m4-single-only  -m4-single  -m4
+-m4a-nofpu  -m4a-single-only  -m4a-single  -m4a  -m4al
+-mb  -ml  -mdalign  -mrelax
+-mbigtable  -mfmovd  -mrenesas  -mno-renesas  -mnomacsave
+-mieee  -mno-ieee  -mbitops  -misize  -minline-ic_invalidate  -mpadstruct
+-mprefergot  -musermode  -multcost=@var{number}  -mdiv=@var{strategy}
+-mdivsi3_libfunc=@var{name}  -mfixed-range=@var{register-range}
+-maccumulate-outgoing-args
+-matomic-model=@var{atomic-model}
+-mbranch-cost=@var{num}  -mzdcbranch  -mno-zdcbranch
+-mcbranch-force-delay-slot
+-mfused-madd  -mno-fused-madd  -mfsca  -mno-fsca  -mfsrra  -mno-fsrra
 -mpretend-cmove  -mtas}
 
 @emph{Solaris 2 Options}
-@gccoptlist{-mclear-hwcap  -mno-clear-hwcap  -mimpure-text  -mno-impure-text @gol
+@gccoptlist{-mclear-hwcap  -mno-clear-hwcap  -mimpure-text  -mno-impure-text
 -pthreads}
 
 @emph{SPARC Options}
-@gccoptlist{-mcpu=@var{cpu-type} @gol
--mtune=@var{cpu-type} @gol
--mcmodel=@var{code-model} @gol
--mmemory-model=@var{mem-model} @gol
--m32  -m64  -mapp-regs  -mno-app-regs @gol
--mfaster-structs  -mno-faster-structs  -mflat  -mno-flat @gol
--mfpu  -mno-fpu  -mhard-float  -msoft-float @gol
--mhard-quad-float  -msoft-quad-float @gol
--mstack-bias  -mno-stack-bias @gol
--mstd-struct-return  -mno-std-struct-return @gol
--munaligned-doubles  -mno-unaligned-doubles @gol
--muser-mode  -mno-user-mode @gol
--mv8plus  -mno-v8plus  -mvis  -mno-vis @gol
--mvis2  -mno-vis2  -mvis3  -mno-vis3 @gol
--mvis4  -mno-vis4  -mvis4b  -mno-vis4b @gol
--mcbcond  -mno-cbcond  -mfmaf  -mno-fmaf  -mfsmuld  -mno-fsmuld  @gol
--mpopc  -mno-popc  -msubxc  -mno-subxc @gol
--mfix-at697f  -mfix-ut699  -mfix-ut700  -mfix-gr712rc @gol
+@gccoptlist{-mcpu=@var{cpu-type}
+-mtune=@var{cpu-type}
+-mcmodel=@var{code-model}
+-mmemory-model=@var{mem-model}
+-m32  -m64  -mapp-regs  -mno-app-regs
+-mfaster-structs  -mno-faster-structs  -mflat  -mno-flat
+-mfpu  -mno-fpu  -mhard-float  -msoft-float
+-mhard-quad-float  -msoft-quad-float
+-mstack-bias  -mno-stack-bias
+-mstd-struct-return  -mno-std-struct-return
+-munaligned-doubles  -mno-unaligned-doubles
+-muser-mode  -mno-user-mode
+-mv8plus  -mno-v8plus  -mvis  -mno-vis
+-mvis2  -mno-vis2  -mvis3  -mno-vis3
+-mvis4  -mno-vis4  -mvis4b  -mno-vis4b
+-mcbcond  -mno-cbcond  -mfmaf  -mno-fmaf  -mfsmuld  -mno-fsmuld
+-mpopc  -mno-popc  -msubxc  -mno-subxc
+-mfix-at697f  -mfix-ut699  -mfix-ut700  -mfix-gr712rc
 -mlra  -mno-lra}
 
 @emph{System V Options}
 @gccoptlist{-Qy  -Qn  -YP,@var{paths}  -Ym,@var{dir}}
 
 @emph{V850 Options}
-@gccoptlist{-mlong-calls  -mno-long-calls  -mep  -mno-ep @gol
--mprolog-function  -mno-prolog-function  -mspace @gol
--mtda=@var{n}  -msda=@var{n}  -mzda=@var{n} @gol
--mapp-regs  -mno-app-regs @gol
--mdisable-callt  -mno-disable-callt @gol
--mv850e2v3  -mv850e2  -mv850e1  -mv850es @gol
--mv850e  -mv850  -mv850e3v5 @gol
--mloop @gol
--mrelax @gol
--mlong-jumps @gol
--msoft-float @gol
--mhard-float @gol
--mgcc-abi @gol
--mrh850-abi @gol
+@gccoptlist{-mlong-calls  -mno-long-calls  -mep  -mno-ep
+-mprolog-function  -mno-prolog-function  -mspace
+-mtda=@var{n}  -msda=@var{n}  -mzda=@var{n}
+-mapp-regs  -mno-app-regs
+-mdisable-callt  -mno-disable-callt
+-mv850e2v3  -mv850e2  -mv850e1  -mv850es
+-mv850e  -mv850  -mv850e3v5
+-mloop
+-mrelax
+-mlong-jumps
+-msoft-float
+-mhard-float
+-mgcc-abi
+-mrh850-abi
 -mbig-switch}
 
 @emph{VAX Options}
 @gccoptlist{-mg  -mgnu  -munix  -mlra}
 
 @emph{Visium Options}
-@gccoptlist{-mdebug  -msim  -mfpu  -mno-fpu  -mhard-float  -msoft-float @gol
+@gccoptlist{-mdebug  -msim  -mfpu  -mno-fpu  -mhard-float  -msoft-float
 -mcpu=@var{cpu-type}  -mtune=@var{cpu-type}  -msv-mode  -muser-mode}
 
 @emph{VMS Options}
-@gccoptlist{-mvms-return-codes  -mdebug-main=@var{prefix}  -mmalloc64 @gol
+@gccoptlist{-mvms-return-codes  -mdebug-main=@var{prefix}  -mmalloc64
 -mpointer-size=@var{size}}
 
 @emph{VxWorks Options}
-@gccoptlist{-mrtp  -non-static  -Bstatic  -Bdynamic @gol
+@gccoptlist{-mrtp  -non-static  -Bstatic  -Bdynamic
 -Xbind-lazy  -Xbind-now}
 
 @emph{x86 Options}
-@gccoptlist{-mtune=@var{cpu-type}  -march=@var{cpu-type} @gol
--mtune-ctrl=@var{feature-list}  -mdump-tune-features  -mno-default @gol
--mfpmath=@var{unit} @gol
--masm=@var{dialect}  -mno-fancy-math-387 @gol
--mno-fp-ret-in-387  -m80387  -mhard-float  -msoft-float @gol
--mno-wide-multiply  -mrtd  -malign-double @gol
--mpreferred-stack-boundary=@var{num} @gol
--mincoming-stack-boundary=@var{num} @gol
--mcld  -mcx16  -msahf  -mmovbe  -mcrc32 -mmwait @gol
--mrecip  -mrecip=@var{opt} @gol
--mvzeroupper  -mprefer-avx128  -mprefer-vector-width=@var{opt} @gol
--mmove-max=@var{bits} -mstore-max=@var{bits} @gol
--mmmx  -msse  -msse2  -msse3  -mssse3  -msse4.1  -msse4.2  -msse4  -mavx @gol
--mavx2  -mavx512f  -mavx512pf  -mavx512er  -mavx512cd  -mavx512vl @gol
--mavx512bw  -mavx512dq  -mavx512ifma  -mavx512vbmi  -msha  -maes @gol
--mpclmul  -mfsgsbase  -mrdrnd  -mf16c  -mfma  -mpconfig  -mwbnoinvd  @gol
--mptwrite  -mprefetchwt1  -mclflushopt  -mclwb  -mxsavec  -mxsaves @gol
--msse4a  -m3dnow  -m3dnowa  -mpopcnt  -mabm  -mbmi  -mtbm  -mfma4  -mxop @gol
--madx  -mlzcnt  -mbmi2  -mfxsr  -mxsave  -mxsaveopt  -mrtm  -mhle  -mlwp @gol
--mmwaitx  -mclzero  -mpku  -mthreads  -mgfni  -mvaes  -mwaitpkg @gol
--mshstk -mmanual-endbr -mcet-switch -mforce-indirect-call @gol
--mavx512vbmi2 -mavx512bf16 -menqcmd @gol
--mvpclmulqdq  -mavx512bitalg  -mmovdiri  -mmovdir64b  -mavx512vpopcntdq @gol
--mavx5124fmaps  -mavx512vnni  -mavx5124vnniw  -mprfchw  -mrdpid @gol
--mrdseed  -msgx -mavx512vp2intersect -mserialize -mtsxldtrk@gol
--mamx-tile  -mamx-int8  -mamx-bf16 -muintr -mhreset -mavxvnni@gol
--mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 @gol
--mprefetchi -mraoint @gol
--mcldemote  -mms-bitfields  -mno-align-stringops  -minline-all-stringops @gol
--minline-stringops-dynamically  -mstringop-strategy=@var{alg} @gol
--mkl -mwidekl @gol
--mmemcpy-strategy=@var{strategy}  -mmemset-strategy=@var{strategy} @gol
--mpush-args  -maccumulate-outgoing-args  -m128bit-long-double @gol
--m96bit-long-double  -mlong-double-64  -mlong-double-80  -mlong-double-128 @gol
--mregparm=@var{num}  -msseregparm @gol
--mveclibabi=@var{type}  -mvect8-ret-in-mem @gol
--mpc32  -mpc64  -mpc80  -mdaz-ftz -mstackrealign @gol
--momit-leaf-frame-pointer  -mno-red-zone  -mno-tls-direct-seg-refs @gol
--mcmodel=@var{code-model}  -mabi=@var{name}  -maddress-mode=@var{mode} @gol
--m32  -m64  -mx32  -m16  -miamcu  -mlarge-data-threshold=@var{num} @gol
--msse2avx  -mfentry  -mrecord-mcount  -mnop-mcount  -m8bit-idiv @gol
--minstrument-return=@var{type} -mfentry-name=@var{name} -mfentry-section=@var{name} @gol
--mavx256-split-unaligned-load  -mavx256-split-unaligned-store @gol
--malign-data=@var{type}  -mstack-protector-guard=@var{guard} @gol
--mstack-protector-guard-reg=@var{reg} @gol
--mstack-protector-guard-offset=@var{offset} @gol
--mstack-protector-guard-symbol=@var{symbol} @gol
--mgeneral-regs-only  -mcall-ms2sysv-xlogues -mrelax-cmpxchg-loop @gol
--mindirect-branch=@var{choice}  -mfunction-return=@var{choice} @gol
--mindirect-branch-register -mharden-sls=@var{choice} @gol
--mindirect-branch-cs-prefix -mneeded -mno-direct-extern-access @gol
+@gccoptlist{-mtune=@var{cpu-type}  -march=@var{cpu-type}
+-mtune-ctrl=@var{feature-list}  -mdump-tune-features  -mno-default
+-mfpmath=@var{unit}
+-masm=@var{dialect}  -mno-fancy-math-387
+-mno-fp-ret-in-387  -m80387  -mhard-float  -msoft-float
+-mno-wide-multiply  -mrtd  -malign-double
+-mpreferred-stack-boundary=@var{num}
+-mincoming-stack-boundary=@var{num}
+-mcld  -mcx16  -msahf  -mmovbe  -mcrc32 -mmwait
+-mrecip  -mrecip=@var{opt}
+-mvzeroupper  -mprefer-avx128  -mprefer-vector-width=@var{opt}
+-mmove-max=@var{bits} -mstore-max=@var{bits}
+-mmmx  -msse  -msse2  -msse3  -mssse3  -msse4.1  -msse4.2  -msse4  -mavx
+-mavx2  -mavx512f  -mavx512pf  -mavx512er  -mavx512cd  -mavx512vl
+-mavx512bw  -mavx512dq  -mavx512ifma  -mavx512vbmi  -msha  -maes
+-mpclmul  -mfsgsbase  -mrdrnd  -mf16c  -mfma  -mpconfig  -mwbnoinvd
+-mptwrite  -mprefetchwt1  -mclflushopt  -mclwb  -mxsavec  -mxsaves
+-msse4a  -m3dnow  -m3dnowa  -mpopcnt  -mabm  -mbmi  -mtbm  -mfma4  -mxop
+-madx  -mlzcnt  -mbmi2  -mfxsr  -mxsave  -mxsaveopt  -mrtm  -mhle  -mlwp
+-mmwaitx  -mclzero  -mpku  -mthreads  -mgfni  -mvaes  -mwaitpkg
+-mshstk -mmanual-endbr -mcet-switch -mforce-indirect-call
+-mavx512vbmi2 -mavx512bf16 -menqcmd
+-mvpclmulqdq  -mavx512bitalg  -mmovdiri  -mmovdir64b  -mavx512vpopcntdq
+-mavx5124fmaps  -mavx512vnni  -mavx5124vnniw  -mprfchw  -mrdpid
+-mrdseed  -msgx -mavx512vp2intersect -mserialize -mtsxldtrk
+-mamx-tile  -mamx-int8  -mamx-bf16 -muintr -mhreset -mavxvnni
+-mavx512fp16 -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16
+-mprefetchi -mraoint
+-mcldemote  -mms-bitfields  -mno-align-stringops  -minline-all-stringops
+-minline-stringops-dynamically  -mstringop-strategy=@var{alg}
+-mkl -mwidekl
+-mmemcpy-strategy=@var{strategy}  -mmemset-strategy=@var{strategy}
+-mpush-args  -maccumulate-outgoing-args  -m128bit-long-double
+-m96bit-long-double  -mlong-double-64  -mlong-double-80  -mlong-double-128
+-mregparm=@var{num}  -msseregparm
+-mveclibabi=@var{type}  -mvect8-ret-in-mem
+-mpc32  -mpc64  -mpc80  -mdaz-ftz -mstackrealign
+-momit-leaf-frame-pointer  -mno-red-zone  -mno-tls-direct-seg-refs
+-mcmodel=@var{code-model}  -mabi=@var{name}  -maddress-mode=@var{mode}
+-m32  -m64  -mx32  -m16  -miamcu  -mlarge-data-threshold=@var{num}
+-msse2avx  -mfentry  -mrecord-mcount  -mnop-mcount  -m8bit-idiv
+-minstrument-return=@var{type} -mfentry-name=@var{name} -mfentry-section=@var{name}
+-mavx256-split-unaligned-load  -mavx256-split-unaligned-store
+-malign-data=@var{type}  -mstack-protector-guard=@var{guard}
+-mstack-protector-guard-reg=@var{reg}
+-mstack-protector-guard-offset=@var{offset}
+-mstack-protector-guard-symbol=@var{symbol}
+-mgeneral-regs-only  -mcall-ms2sysv-xlogues -mrelax-cmpxchg-loop
+-mindirect-branch=@var{choice}  -mfunction-return=@var{choice}
+-mindirect-branch-register -mharden-sls=@var{choice}
+-mindirect-branch-cs-prefix -mneeded -mno-direct-extern-access
 -munroll-only-small-loops -mlam=@var{choice}}
 
 @emph{x86 Windows Options}
-@gccoptlist{-mconsole  -mcygwin  -mno-cygwin  -mdll @gol
--mnop-fun-dllimport  -mthread @gol
+@gccoptlist{-mconsole  -mcygwin  -mno-cygwin  -mdll
+-mnop-fun-dllimport  -mthread
 -municode  -mwin32  -mwindows  -fno-set-stack-executable}
 
 @emph{Xstormy16 Options}
 @gccoptlist{-msim}
 
 @emph{Xtensa Options}
-@gccoptlist{-mconst16  -mno-const16 @gol
--mfused-madd  -mno-fused-madd @gol
--mforce-no-pic @gol
--mserialize-volatile  -mno-serialize-volatile @gol
--mtext-section-literals  -mno-text-section-literals @gol
--mauto-litpools  -mno-auto-litpools @gol
--mtarget-align  -mno-target-align @gol
--mlongcalls  -mno-longcalls @gol
--mabi=@var{abi-type} @gol
+@gccoptlist{-mconst16  -mno-const16
+-mfused-madd  -mno-fused-madd
+-mforce-no-pic
+-mserialize-volatile  -mno-serialize-volatile
+-mtext-section-literals  -mno-text-section-literals
+-mauto-litpools  -mno-auto-litpools
+-mtarget-align  -mno-target-align
+-mlongcalls  -mno-longcalls
+-mabi=@var{abi-type}
 -mextra-l32r-costs=@var{cycles}}
 
 @emph{zSeries Options}
@@ -5043,10 +5043,10 @@ may be useful when running @command{dejagnu} or other utilities that need to
 parse diagnostics output and prefer that it remain more stable over time.
 @option{-fdiagnostics-plain-output} is currently equivalent to the following
 options:
-@gccoptlist{-fno-diagnostics-show-caret @gol
--fno-diagnostics-show-line-numbers @gol
--fdiagnostics-color=never @gol
--fdiagnostics-urls=never @gol
+@gccoptlist{-fno-diagnostics-show-caret
+-fno-diagnostics-show-line-numbers
+-fdiagnostics-color=never
+-fdiagnostics-urls=never
 -fdiagnostics-path-format=separate-events}
 In the future, if GCC changes the default appearance of its diagnostics, the
 corresponding option to disable the new behavior will be added to this list.
@@ -6028,70 +6028,70 @@ Options} and @ref{Objective-C and Objective-C++ Dialect Options}.
 
 @option{-Wall} turns on the following warning flags:
 
-@gccoptlist{-Waddress   @gol
--Warray-bounds=1 @r{(only with} @option{-O2}@r{)}  @gol
--Warray-compare @gol
--Warray-parameter=2 @r{(C and Objective-C only)} @gol
--Wbool-compare  @gol
--Wbool-operation  @gol
--Wc++11-compat  -Wc++14-compat  @gol
--Wcatch-value @r{(C++ and Objective-C++ only)}  @gol
--Wchar-subscripts  @gol
--Wcomment  @gol
--Wdangling-pointer=2  @gol
--Wduplicate-decl-specifier @r{(C and Objective-C only)} @gol
--Wenum-compare @r{(in C/ObjC; this is on by default in C++)} @gol
--Wenum-int-mismatch @r{(C and Objective-C only)} @gol
--Wformat   @gol
--Wformat-overflow  @gol
--Wformat-truncation  @gol
--Wint-in-bool-context  @gol
--Wimplicit @r{(C and Objective-C only)} @gol
--Wimplicit-int @r{(C and Objective-C only)} @gol
--Wimplicit-function-declaration @r{(C and Objective-C only)} @gol
--Winit-self @r{(only for C++)} @gol
--Wlogical-not-parentheses @gol
--Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)}  @gol
--Wmaybe-uninitialized @gol
--Wmemset-elt-size @gol
--Wmemset-transposed-args @gol
--Wmisleading-indentation @r{(only for C/C++)} @gol
--Wmismatched-dealloc @gol
--Wmismatched-new-delete @r{(only for C/C++)} @gol
--Wmissing-attributes @gol
--Wmissing-braces @r{(only for C/ObjC)} @gol
--Wmultistatement-macros  @gol
--Wnarrowing @r{(only for C++)}  @gol
--Wnonnull  @gol
--Wnonnull-compare  @gol
--Wopenmp-simd @gol
--Wparentheses  @gol
--Wpessimizing-move @r{(only for C++)}  @gol
--Wpointer-sign  @gol
--Wrange-loop-construct @r{(only for C++)}  @gol
--Wreorder   @gol
--Wrestrict   @gol
--Wreturn-type  @gol
--Wself-move @r{(only for C++)}  @gol
--Wsequence-point  @gol
--Wsign-compare @r{(only in C++)}  @gol
--Wsizeof-array-div @gol
--Wsizeof-pointer-div @gol
--Wsizeof-pointer-memaccess @gol
--Wstrict-aliasing  @gol
--Wstrict-overflow=1  @gol
--Wswitch  @gol
--Wtautological-compare  @gol
--Wtrigraphs  @gol
--Wuninitialized  @gol
--Wunknown-pragmas  @gol
--Wunused-function  @gol
--Wunused-label     @gol
--Wunused-value     @gol
--Wunused-variable  @gol
--Wuse-after-free=2  @gol
--Wvla-parameter @r{(C and Objective-C only)} @gol
--Wvolatile-register-var  @gol
+@gccoptlist{-Waddress
+-Warray-bounds=1 @r{(only with} @option{-O2}@r{)}
+-Warray-compare
+-Warray-parameter=2 @r{(C and Objective-C only)}
+-Wbool-compare
+-Wbool-operation
+-Wc++11-compat  -Wc++14-compat
+-Wcatch-value @r{(C++ and Objective-C++ only)}
+-Wchar-subscripts
+-Wcomment
+-Wdangling-pointer=2
+-Wduplicate-decl-specifier @r{(C and Objective-C only)}
+-Wenum-compare @r{(in C/ObjC; this is on by default in C++)}
+-Wenum-int-mismatch @r{(C and Objective-C only)}
+-Wformat
+-Wformat-overflow
+-Wformat-truncation
+-Wint-in-bool-context
+-Wimplicit @r{(C and Objective-C only)}
+-Wimplicit-int @r{(C and Objective-C only)}
+-Wimplicit-function-declaration @r{(C and Objective-C only)}
+-Winit-self @r{(only for C++)}
+-Wlogical-not-parentheses
+-Wmain @r{(only for C/ObjC and unless} @option{-ffreestanding}@r{)}
+-Wmaybe-uninitialized
+-Wmemset-elt-size
+-Wmemset-transposed-args
+-Wmisleading-indentation @r{(only for C/C++)}
+-Wmismatched-dealloc
+-Wmismatched-new-delete @r{(only for C/C++)}
+-Wmissing-attributes
+-Wmissing-braces @r{(only for C/ObjC)}
+-Wmultistatement-macros
+-Wnarrowing @r{(only for C++)}
+-Wnonnull
+-Wnonnull-compare
+-Wopenmp-simd
+-Wparentheses
+-Wpessimizing-move @r{(only for C++)}
+-Wpointer-sign
+-Wrange-loop-construct @r{(only for C++)}
+-Wreorder
+-Wrestrict
+-Wreturn-type
+-Wself-move @r{(only for C++)}
+-Wsequence-point
+-Wsign-compare @r{(only in C++)}
+-Wsizeof-array-div
+-Wsizeof-pointer-div
+-Wsizeof-pointer-memaccess
+-Wstrict-aliasing
+-Wstrict-overflow=1
+-Wswitch
+-Wtautological-compare
+-Wtrigraphs
+-Wuninitialized
+-Wunknown-pragmas
+-Wunused-function
+-Wunused-label
+-Wunused-value
+-Wunused-variable
+-Wuse-after-free=2
+-Wvla-parameter @r{(C and Objective-C only)}
+-Wvolatile-register-var
 -Wzero-length-bounds}
 
 Note that some warning flags are not implied by @option{-Wall}.  Some of
@@ -6110,24 +6110,24 @@ This enables some extra warning flags that are not enabled by
 @option{-Wall}. (This option used to be called @option{-W}.  The older
 name is still supported, but the newer name is more descriptive.)
 
-@gccoptlist{-Wclobbered  @gol
--Wcast-function-type  @gol
--Wdeprecated-copy @r{(C++ only)} @gol
--Wempty-body  @gol
--Wenum-conversion @r{(C only)} @gol
--Wignored-qualifiers @gol
--Wimplicit-fallthrough=3 @gol
--Wmissing-field-initializers  @gol
--Wmissing-parameter-type @r{(C only)}  @gol
--Wold-style-declaration @r{(C only)}  @gol
--Woverride-init  @gol
--Wsign-compare @r{(C only)} @gol
--Wstring-compare @gol
--Wredundant-move @r{(only for C++)}  @gol
--Wtype-limits  @gol
--Wuninitialized  @gol
--Wshift-negative-value @r{(in C++11 to C++17 and in C99 and newer)}  @gol
--Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)} @gol
+@gccoptlist{-Wclobbered
+-Wcast-function-type
+-Wdeprecated-copy @r{(C++ only)}
+-Wempty-body
+-Wenum-conversion @r{(C only)}
+-Wignored-qualifiers
+-Wimplicit-fallthrough=3
+-Wmissing-field-initializers
+-Wmissing-parameter-type @r{(C only)}
+-Wold-style-declaration @r{(C only)}
+-Woverride-init
+-Wsign-compare @r{(C only)}
+-Wstring-compare
+-Wredundant-move @r{(only for C++)}
+-Wtype-limits
+-Wuninitialized
+-Wshift-negative-value @r{(in C++11 to C++17 and in C99 and newer)}
+-Wunused-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}
 -Wunused-but-set-parameter @r{(only with} @option{-Wunused} @r{or} @option{-Wall}@r{)}}
 
 
@@ -10113,53 +10113,53 @@ The analyzer is only suitable for use on C code in this release.
 
 Enabling this option effectively enables the following warnings:
 
-@gccoptlist{ @gol
--Wanalyzer-allocation-size @gol
--Wanalyzer-deref-before-check @gol
--Wanalyzer-double-fclose @gol
--Wanalyzer-double-free @gol
--Wanalyzer-exposure-through-output-file @gol
--Wanalyzer-exposure-through-uninit-copy @gol
--Wanalyzer-fd-access-mode-mismatch @gol
--Wanalyzer-fd-double-close @gol
--Wanalyzer-fd-leak @gol
--Wanalyzer-fd-phase-mismatch @gol
--Wanalyzer-fd-type-mismatch @gol
--Wanalyzer-fd-use-after-close @gol
--Wanalyzer-fd-use-without-check @gol
--Wanalyzer-file-leak @gol
--Wanalyzer-free-of-non-heap @gol
--Wanalyzer-imprecise-fp-arithmetic @gol
--Wanalyzer-infinite-recursion @gol
--Wanalyzer-jump-through-null @gol
--Wanalyzer-malloc-leak @gol
--Wanalyzer-mismatching-deallocation @gol
--Wanalyzer-null-argument @gol
--Wanalyzer-null-dereference @gol
--Wanalyzer-out-of-bounds @gol
--Wanalyzer-possible-null-argument @gol
--Wanalyzer-possible-null-dereference @gol
--Wanalyzer-putenv-of-auto-var @gol
--Wanalyzer-shift-count-negative @gol
--Wanalyzer-shift-count-overflow @gol
--Wanalyzer-stale-setjmp-buffer @gol
--Wanalyzer-unsafe-call-within-signal-handler @gol
--Wanalyzer-use-after-free @gol
--Wanalyzer-use-of-pointer-in-stale-stack-frame @gol
--Wanalyzer-use-of-uninitialized-value @gol
--Wanalyzer-va-arg-type-mismatch @gol
--Wanalyzer-va-list-exhausted @gol
--Wanalyzer-va-list-leak @gol
--Wanalyzer-va-list-use-after-va-end @gol
--Wanalyzer-write-to-const @gol
--Wanalyzer-write-to-string-literal @gol
+@gccoptlist{
+-Wanalyzer-allocation-size
+-Wanalyzer-deref-before-check
+-Wanalyzer-double-fclose
+-Wanalyzer-double-free
+-Wanalyzer-exposure-through-output-file
+-Wanalyzer-exposure-through-uninit-copy
+-Wanalyzer-fd-access-mode-mismatch
+-Wanalyzer-fd-double-close
+-Wanalyzer-fd-leak
+-Wanalyzer-fd-phase-mismatch
+-Wanalyzer-fd-type-mismatch
+-Wanalyzer-fd-use-after-close
+-Wanalyzer-fd-use-without-check
+-Wanalyzer-file-leak
+-Wanalyzer-free-of-non-heap
+-Wanalyzer-imprecise-fp-arithmetic
+-Wanalyzer-infinite-recursion
+-Wanalyzer-jump-through-null
+-Wanalyzer-malloc-leak
+-Wanalyzer-mismatching-deallocation
+-Wanalyzer-null-argument
+-Wanalyzer-null-dereference
+-Wanalyzer-out-of-bounds
+-Wanalyzer-possible-null-argument
+-Wanalyzer-possible-null-dereference
+-Wanalyzer-putenv-of-auto-var
+-Wanalyzer-shift-count-negative
+-Wanalyzer-shift-count-overflow
+-Wanalyzer-stale-setjmp-buffer
+-Wanalyzer-unsafe-call-within-signal-handler
+-Wanalyzer-use-after-free
+-Wanalyzer-use-of-pointer-in-stale-stack-frame
+-Wanalyzer-use-of-uninitialized-value
+-Wanalyzer-va-arg-type-mismatch
+-Wanalyzer-va-list-exhausted
+-Wanalyzer-va-list-leak
+-Wanalyzer-va-list-use-after-va-end
+-Wanalyzer-write-to-const
+-Wanalyzer-write-to-string-literal
 }
 @ignore
--Wanalyzer-tainted-allocation-size @gol
--Wanalyzer-tainted-array-index @gol
--Wanalyzer-tainted-divisor @gol
--Wanalyzer-tainted-offset @gol
--Wanalyzer-tainted-size @gol
+-Wanalyzer-tainted-allocation-size
+-Wanalyzer-tainted-array-index
+-Wanalyzer-tainted-divisor
+-Wanalyzer-tainted-offset
+-Wanalyzer-tainted-size
 @end ignore
 
 This option is only available if GCC was configured with analyzer
@@ -10955,28 +10955,28 @@ to enable them.
 @emph{Note:} currently, @option{-fanalyzer-checker=taint} disables the
 following warnings from @option{-fanalyzer}:
 
-@gccoptlist{ @gol
--Wanalyzer-deref-before-check @gol
--Wanalyzer-double-fclose @gol
--Wanalyzer-double-free @gol
--Wanalyzer-exposure-through-output-file @gol
--Wanalyzer-fd-access-mode-mismatch @gol
--Wanalyzer-fd-double-close @gol
--Wanalyzer-fd-leak @gol
--Wanalyzer-fd-use-after-close @gol
--Wanalyzer-fd-use-without-check @gol
--Wanalyzer-file-leak @gol
--Wanalyzer-free-of-non-heap @gol
--Wanalyzer-malloc-leak @gol
--Wanalyzer-mismatching-deallocation @gol
--Wanalyzer-null-argument @gol
--Wanalyzer-null-dereference @gol
--Wanalyzer-possible-null-argument @gol
--Wanalyzer-possible-null-dereference @gol
--Wanalyzer-unsafe-call-within-signal-handler @gol
--Wanalyzer-use-after-free @gol
--Wanalyzer-va-list-leak @gol
--Wanalyzer-va-list-use-after-va-end @gol
+@gccoptlist{
+-Wanalyzer-deref-before-check
+-Wanalyzer-double-fclose
+-Wanalyzer-double-free
+-Wanalyzer-exposure-through-output-file
+-Wanalyzer-fd-access-mode-mismatch
+-Wanalyzer-fd-double-close
+-Wanalyzer-fd-leak
+-Wanalyzer-fd-use-after-close
+-Wanalyzer-fd-use-without-check
+-Wanalyzer-file-leak
+-Wanalyzer-free-of-non-heap
+-Wanalyzer-malloc-leak
+-Wanalyzer-mismatching-deallocation
+-Wanalyzer-null-argument
+-Wanalyzer-null-dereference
+-Wanalyzer-possible-null-argument
+-Wanalyzer-possible-null-dereference
+-Wanalyzer-unsafe-call-within-signal-handler
+-Wanalyzer-use-after-free
+-Wanalyzer-va-list-leak
+-Wanalyzer-va-list-use-after-va-end
 }
 
 @opindex fanalyzer-feasibility
@@ -11728,52 +11728,52 @@ compilation time.
 @option{-O} turns on the following optimization flags:
 
 @c Please keep the following list alphabetized.
-@gccoptlist{-fauto-inc-dec @gol
--fbranch-count-reg @gol
--fcombine-stack-adjustments @gol
--fcompare-elim @gol
--fcprop-registers @gol
--fdce @gol
--fdefer-pop @gol
--fdelayed-branch @gol
--fdse @gol
--fforward-propagate @gol
--fguess-branch-probability @gol
--fif-conversion @gol
--fif-conversion2 @gol
--finline-functions-called-once @gol
--fipa-modref @gol
--fipa-profile @gol
--fipa-pure-const @gol
--fipa-reference @gol
--fipa-reference-addressable @gol
--fmerge-constants @gol
--fmove-loop-invariants @gol
--fmove-loop-stores@gol
--fomit-frame-pointer @gol
--freorder-blocks @gol
--fshrink-wrap @gol
--fshrink-wrap-separate @gol
--fsplit-wide-types @gol
--fssa-backprop @gol
--fssa-phiopt @gol
--ftree-bit-ccp @gol
--ftree-ccp @gol
--ftree-ch @gol
--ftree-coalesce-vars @gol
--ftree-copy-prop @gol
--ftree-dce @gol
--ftree-dominator-opts @gol
--ftree-dse @gol
--ftree-forwprop @gol
--ftree-fre @gol
--ftree-phiprop @gol
--ftree-pta @gol
--ftree-scev-cprop @gol
--ftree-sink @gol
--ftree-slsr @gol
--ftree-sra @gol
--ftree-ter @gol
+@gccoptlist{-fauto-inc-dec
+-fbranch-count-reg
+-fcombine-stack-adjustments
+-fcompare-elim
+-fcprop-registers
+-fdce
+-fdefer-pop
+-fdelayed-branch
+-fdse
+-fforward-propagate
+-fguess-branch-probability
+-fif-conversion
+-fif-conversion2
+-finline-functions-called-once
+-fipa-modref
+-fipa-profile
+-fipa-pure-const
+-fipa-reference
+-fipa-reference-addressable
+-fmerge-constants
+-fmove-loop-invariants
+-fmove-loop-stores
+-fomit-frame-pointer
+-freorder-blocks
+-fshrink-wrap
+-fshrink-wrap-separate
+-fsplit-wide-types
+-fssa-backprop
+-fssa-phiopt
+-ftree-bit-ccp
+-ftree-ccp
+-ftree-ch
+-ftree-coalesce-vars
+-ftree-copy-prop
+-ftree-dce
+-ftree-dominator-opts
+-ftree-dse
+-ftree-forwprop
+-ftree-fre
+-ftree-phiprop
+-ftree-pta
+-ftree-scev-cprop
+-ftree-sink
+-ftree-slsr
+-ftree-sra
+-ftree-ter
 -funit-at-a-time}
 
 @opindex O2
@@ -11787,43 +11787,43 @@ and the performance of the generated code.
 also turns on the following optimization flags:
 
 @c Please keep the following list alphabetized!
-@gccoptlist{-falign-functions  -falign-jumps @gol
--falign-labels  -falign-loops @gol
--fcaller-saves @gol
--fcode-hoisting @gol
--fcrossjumping @gol
--fcse-follow-jumps  -fcse-skip-blocks @gol
--fdelete-null-pointer-checks @gol
--fdevirtualize  -fdevirtualize-speculatively @gol
--fexpensive-optimizations @gol
--ffinite-loops @gol
--fgcse  -fgcse-lm  @gol
--fhoist-adjacent-loads @gol
--finline-functions @gol
--finline-small-functions @gol
--findirect-inlining @gol
--fipa-bit-cp  -fipa-cp  -fipa-icf @gol
--fipa-ra  -fipa-sra  -fipa-vrp @gol
--fisolate-erroneous-paths-dereference @gol
--flra-remat @gol
--foptimize-sibling-calls @gol
--foptimize-strlen @gol
--fpartial-inlining @gol
--fpeephole2 @gol
--freorder-blocks-algorithm=stc @gol
--freorder-blocks-and-partition  -freorder-functions @gol
--frerun-cse-after-loop  @gol
--fschedule-insns  -fschedule-insns2 @gol
--fsched-interblock  -fsched-spec @gol
--fstore-merging @gol
--fstrict-aliasing @gol
--fthread-jumps @gol
--ftree-builtin-call-dce @gol
--ftree-loop-vectorize @gol
--ftree-pre @gol
--ftree-slp-vectorize @gol
--ftree-switch-conversion  -ftree-tail-merge @gol
--ftree-vrp @gol
+@gccoptlist{-falign-functions  -falign-jumps
+-falign-labels  -falign-loops
+-fcaller-saves
+-fcode-hoisting
+-fcrossjumping
+-fcse-follow-jumps  -fcse-skip-blocks
+-fdelete-null-pointer-checks
+-fdevirtualize  -fdevirtualize-speculatively
+-fexpensive-optimizations
+-ffinite-loops
+-fgcse  -fgcse-lm
+-fhoist-adjacent-loads
+-finline-functions
+-finline-small-functions
+-findirect-inlining
+-fipa-bit-cp  -fipa-cp  -fipa-icf
+-fipa-ra  -fipa-sra  -fipa-vrp
+-fisolate-erroneous-paths-dereference
+-flra-remat
+-foptimize-sibling-calls
+-foptimize-strlen
+-fpartial-inlining
+-fpeephole2
+-freorder-blocks-algorithm=stc
+-freorder-blocks-and-partition  -freorder-functions
+-frerun-cse-after-loop
+-fschedule-insns  -fschedule-insns2
+-fsched-interblock  -fsched-spec
+-fstore-merging
+-fstrict-aliasing
+-fthread-jumps
+-ftree-builtin-call-dce
+-ftree-loop-vectorize
+-ftree-pre
+-ftree-slp-vectorize
+-ftree-switch-conversion  -ftree-tail-merge
+-ftree-vrp
 -fvect-cost-model=very-cheap}
 
 Please note the warning under @option{-fgcse} about
@@ -11835,18 +11835,18 @@ Optimize yet more.  @option{-O3} turns on all optimizations specified
 by @option{-O2} and also turns on the following optimization flags:
 
 @c Please keep the following list alphabetized!
-@gccoptlist{-fgcse-after-reload @gol
+@gccoptlist{-fgcse-after-reload
 -fipa-cp-clone
--floop-interchange @gol
--floop-unroll-and-jam @gol
--fpeel-loops @gol
--fpredictive-commoning @gol
--fsplit-loops @gol
--fsplit-paths @gol
--ftree-loop-distribution @gol
--ftree-partial-pre @gol
--funswitch-loops @gol
--fvect-cost-model=dynamic @gol
+-floop-interchange
+-floop-unroll-and-jam
+-fpeel-loops
+-fpredictive-commoning
+-fsplit-loops
+-fsplit-paths
+-ftree-loop-distribution
+-ftree-partial-pre
+-funswitch-loops
+-fvect-cost-model=dynamic
 -fversion-loops-for-strides}
 
 @opindex O0
@@ -11859,8 +11859,8 @@ results.  This is the default.
 Optimize for size.  @option{-Os} enables all @option{-O2} optimizations 
 except those that often increase code size:
 
-@gccoptlist{-falign-functions  -falign-jumps @gol
--falign-labels  -falign-loops @gol
+@gccoptlist{-falign-functions  -falign-jumps
+-falign-labels  -falign-loops
 -fprefetch-loop-arrays  -freorder-blocks-algorithm=stc}
 
 It also enables @option{-finline-functions}, causes the compiler to tune for
@@ -11891,10 +11891,10 @@ optimization passes so that individual options controlling them have
 no effect.  Otherwise @option{-Og} enables all @option{-O1} 
 optimization flags except for those that may interfere with debugging:
 
-@gccoptlist{-fbranch-count-reg  -fdelayed-branch @gol
--fdse  -fif-conversion  -fif-conversion2  @gol
--finline-functions-called-once @gol
--fmove-loop-invariants  -fmove-loop-stores  -fssa-phiopt @gol
+@gccoptlist{-fbranch-count-reg  -fdelayed-branch
+-fdse  -fif-conversion  -fif-conversion2
+-finline-functions-called-once
+-fmove-loop-invariants  -fmove-loop-stores  -fssa-phiopt
 -ftree-bit-ccp  -ftree-dse  -ftree-pta  -ftree-sra}
 
 @opindex Oz
@@ -12939,9 +12939,9 @@ As a result, when patching a function, all its callers and its clones'
 callers are impacted, therefore need to be patched as well.
 
 @option{-flive-patching=inline-clone} disables the following optimization flags:
-@gccoptlist{-fwhole-program  -fipa-pta  -fipa-reference  -fipa-ra @gol
--fipa-icf  -fipa-icf-functions  -fipa-icf-variables @gol
--fipa-bit-cp  -fipa-vrp  -fipa-pure-const  -fipa-reference-addressable @gol
+@gccoptlist{-fwhole-program  -fipa-pta  -fipa-reference  -fipa-ra
+-fipa-icf  -fipa-icf-functions  -fipa-icf-variables
+-fipa-bit-cp  -fipa-vrp  -fipa-pure-const  -fipa-reference-addressable
 -fipa-stack-alignment -fipa-modref}
 
 @item inline-only-static
@@ -14148,12 +14148,12 @@ Enable profile feedback-directed optimizations,
 and the following optimizations, many of which
 are generally profitable only with profile feedback available:
 
-@gccoptlist{-fbranch-probabilities  -fprofile-values @gol
--funroll-loops  -fpeel-loops  -ftracer  -fvpt @gol
--finline-functions  -fipa-cp  -fipa-cp-clone  -fipa-bit-cp @gol
--fpredictive-commoning  -fsplit-loops  -funswitch-loops @gol
--fgcse-after-reload  -ftree-loop-vectorize  -ftree-slp-vectorize @gol
--fvect-cost-model=dynamic  -ftree-loop-distribute-patterns @gol
+@gccoptlist{-fbranch-probabilities  -fprofile-values
+-funroll-loops  -fpeel-loops  -ftracer  -fvpt
+-finline-functions  -fipa-cp  -fipa-cp-clone  -fipa-bit-cp
+-fpredictive-commoning  -fsplit-loops  -funswitch-loops
+-fgcse-after-reload  -ftree-loop-vectorize  -ftree-slp-vectorize
+-fvect-cost-model=dynamic  -ftree-loop-distribute-patterns
 -fprofile-reorder-functions}
 
 Before you can use this option, you must first generate profiling information.
@@ -14176,12 +14176,12 @@ Enable sampling-based feedback-directed optimizations,
 and the following optimizations,
 many of which are generally profitable only with profile feedback available:
 
-@gccoptlist{-fbranch-probabilities  -fprofile-values @gol
--funroll-loops  -fpeel-loops  -ftracer  -fvpt @gol
--finline-functions  -fipa-cp  -fipa-cp-clone  -fipa-bit-cp @gol
--fpredictive-commoning  -fsplit-loops  -funswitch-loops @gol
--fgcse-after-reload  -ftree-loop-vectorize  -ftree-slp-vectorize @gol
--fvect-cost-model=dynamic  -ftree-loop-distribute-patterns @gol
+@gccoptlist{-fbranch-probabilities  -fprofile-values
+-funroll-loops  -fpeel-loops  -ftracer  -fvpt
+-finline-functions  -fipa-cp  -fipa-cp-clone  -fipa-bit-cp
+-fpredictive-commoning  -fsplit-loops  -funswitch-loops
+-fgcse-after-reload  -ftree-loop-vectorize  -ftree-slp-vectorize
+-fvect-cost-model=dynamic  -ftree-loop-distribute-patterns
 -fprofile-correction}
 
 @var{path} is the name of a file containing AutoFDO profile information.
@@ -28415,51 +28415,51 @@ This option enables a predefined, named set of custom instruction encodings
 Currently, the following sets are defined:
 
 @option{-mcustom-fpu-cfg=60-1} is equivalent to:
-@gccoptlist{-mcustom-fmuls=252 @gol
--mcustom-fadds=253 @gol
--mcustom-fsubs=254 @gol
+@gccoptlist{-mcustom-fmuls=252
+-mcustom-fadds=253
+-mcustom-fsubs=254
 -fsingle-precision-constant}
 
 @option{-mcustom-fpu-cfg=60-2} is equivalent to:
-@gccoptlist{-mcustom-fmuls=252 @gol
--mcustom-fadds=253 @gol
--mcustom-fsubs=254 @gol
--mcustom-fdivs=255 @gol
+@gccoptlist{-mcustom-fmuls=252
+-mcustom-fadds=253
+-mcustom-fsubs=254
+-mcustom-fdivs=255
 -fsingle-precision-constant}
 
 @option{-mcustom-fpu-cfg=72-3} is equivalent to:
-@gccoptlist{-mcustom-floatus=243 @gol
--mcustom-fixsi=244 @gol
--mcustom-floatis=245 @gol
--mcustom-fcmpgts=246 @gol
--mcustom-fcmples=249 @gol
--mcustom-fcmpeqs=250 @gol
--mcustom-fcmpnes=251 @gol
--mcustom-fmuls=252 @gol
--mcustom-fadds=253 @gol
--mcustom-fsubs=254 @gol
--mcustom-fdivs=255 @gol
+@gccoptlist{-mcustom-floatus=243
+-mcustom-fixsi=244
+-mcustom-floatis=245
+-mcustom-fcmpgts=246
+-mcustom-fcmples=249
+-mcustom-fcmpeqs=250
+-mcustom-fcmpnes=251
+-mcustom-fmuls=252
+-mcustom-fadds=253
+-mcustom-fsubs=254
+-mcustom-fdivs=255
 -fsingle-precision-constant}
 
 @option{-mcustom-fpu-cfg=fph2} is equivalent to:
-@gccoptlist{-mcustom-fabss=224 @gol
--mcustom-fnegs=225 @gol
--mcustom-fcmpnes=226 @gol
--mcustom-fcmpeqs=227 @gol
--mcustom-fcmpges=228 @gol
--mcustom-fcmpgts=229 @gol
--mcustom-fcmples=230 @gol
--mcustom-fcmplts=231 @gol
--mcustom-fmaxs=232 @gol
--mcustom-fmins=233 @gol
--mcustom-round=248 @gol
--mcustom-fixsi=249 @gol
--mcustom-floatis=250 @gol
--mcustom-fsqrts=251 @gol
--mcustom-fmuls=252 @gol
--mcustom-fadds=253 @gol
--mcustom-fsubs=254 @gol
--mcustom-fdivs=255 @gol}
+@gccoptlist{-mcustom-fabss=224
+-mcustom-fnegs=225
+-mcustom-fcmpnes=226
+-mcustom-fcmpeqs=227
+-mcustom-fcmpges=228
+-mcustom-fcmpgts=229
+-mcustom-fcmples=230
+-mcustom-fcmplts=231
+-mcustom-fmaxs=232
+-mcustom-fmins=233
+-mcustom-round=248
+-mcustom-fixsi=249
+-mcustom-floatis=250
+-mcustom-fsqrts=251
+-mcustom-fmuls=252
+-mcustom-fadds=253
+-mcustom-fsubs=254
+-mcustom-fdivs=255}
 
 Custom instruction assignments given by individual
 @option{-mcustom-@var{insn}=} options override those given by
@@ -29284,13 +29284,13 @@ others.
 The @option{-mcpu} options automatically enable or disable the
 following options:
 
-@gccoptlist{-maltivec  -mfprnd  -mhard-float  -mmfcrf  -mmultiple @gol
--mpopcntb  -mpopcntd  -mpowerpc64 @gol
--mpowerpc-gpopt  -mpowerpc-gfxopt @gol
--mmulhw  -mdlmzb  -mmfpgpr  -mvsx @gol
--mcrypto  -mhtm  -mpower8-fusion  -mpower8-vector @gol
--mquad-memory  -mquad-memory-atomic  -mfloat128 @gol
--mfloat128-hardware -mprefixed -mpcrel -mmma @gol
+@gccoptlist{-maltivec  -mfprnd  -mhard-float  -mmfcrf  -mmultiple
+-mpopcntb  -mpopcntd  -mpowerpc64
+-mpowerpc-gpopt  -mpowerpc-gfxopt
+-mmulhw  -mdlmzb  -mmfpgpr  -mvsx
+-mcrypto  -mhtm  -mpower8-fusion  -mpower8-vector
+-mquad-memory  -mquad-memory-atomic  -mfloat128
+-mfloat128-hardware -mprefixed -mpcrel -mmma
 -mrop-protect}
 
 The particular options set for any particular CPU varies between
@@ -35347,9 +35347,9 @@ which options are safe to change and which are not; the safest choice
 is to use exactly the same options when generating and using the
 precompiled header.  The following are known to be safe:
 
-@gccoptlist{-fmessage-length=  -fpreprocessed  -fsched-interblock @gol
--fsched-spec  -fsched-spec-load  -fsched-spec-load-dangerous @gol
--fsched-verbose=@var{number}  -fschedule-insns  -fvisibility= @gol
+@gccoptlist{-fmessage-length=  -fpreprocessed  -fsched-interblock
+-fsched-spec  -fsched-spec-load  -fsched-spec-load-dangerous
+-fsched-verbose=@var{number}  -fschedule-insns  -fvisibility=
 -pedantic-errors}
 
 @item Address space layout randomization (ASLR) can lead to not binary identical
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index c348a1e47cc..1e3e96149d7 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -465,10 +465,6 @@ that of @samp{@@option} but for man page output a different effect is
 wanted.
 @item @@gccoptlist
 Use for summary lists of options in manuals.
-@item @@gol
-Use at the end of each line inside @samp{@@gccoptlist}.  This is
-necessary to avoid problems with differences in how the
-@samp{@@gccoptlist} macro is handled by different Texinfo formatters.
 @end table
 
 FIXME: describe the @file{texi2pod.pl} input language and magic
diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi
index 8dd19dc3382..5555db227ea 100644
--- a/gcc/fortran/intrinsic.texi
+++ b/gcc/fortran/intrinsic.texi
@@ -399,8 +399,8 @@ end program test_abort
 @end smallexample
 
 @item @emph{See also}:
-@ref{EXIT}, @gol
-@ref{KILL}, @gol
+@ref{EXIT}, @*
+@ref{KILL}, @*
 @ref{BACKTRACE}
 @end table
 
@@ -575,8 +575,8 @@ See @ref{ICHAR} for a discussion of converting between numerical values
 and formatted string representations.
 
 @item @emph{See also}:
-@ref{CHAR}, @gol
-@ref{IACHAR}, @gol
+@ref{CHAR}, @*
+@ref{IACHAR}, @*
 @ref{ICHAR}
 @end table
 
@@ -629,9 +629,9 @@ end program test_acos
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{COS} @gol
-Degrees function: @gol
+Inverse function: @*
+@ref{COS} @*
+Degrees function: @*
 @ref{ACOSD}
 @end table
 
@@ -688,10 +688,10 @@ end program test_acosd
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{COSD} @gol
-Radians function: @gol
-@ref{ACOS} @gol
+Inverse function: @*
+@ref{COSD} @*
+Radians function: @*
+@ref{ACOS} @*
 @end table
 
 
@@ -743,7 +743,7 @@ END PROGRAM
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
+Inverse function: @*
 @ref{COSH}
 @end table
 
@@ -789,7 +789,7 @@ end program test_adjustl
 @end smallexample
 
 @item @emph{See also}:
-@ref{ADJUSTR}, @gol
+@ref{ADJUSTR}, @*
 @ref{TRIM}
 @end table
 
@@ -835,7 +835,7 @@ end program test_adjustr
 @end smallexample
 
 @item @emph{See also}:
-@ref{ADJUSTL}, @gol
+@ref{ADJUSTL}, @*
 @ref{TRIM}
 @end table
 
@@ -1173,7 +1173,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-Fortran 95 elemental function: @gol
+Fortran 95 elemental function: @*
 @ref{IAND}
 @end table
 
@@ -1349,9 +1349,9 @@ end program test_asin
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{SIN} @gol
-Degrees function: @gol
+Inverse function: @*
+@ref{SIN} @*
+Degrees function: @*
 @ref{ASIND}
 @end table
 
@@ -1408,9 +1408,9 @@ end program test_asind
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{SIND} @gol
-Radians function: @gol
+Inverse function: @*
+@ref{SIND} @*
+Radians function: @*
 @ref{ASIN}
 @end table
 
@@ -1463,7 +1463,7 @@ END PROGRAM
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
+Inverse function: @*
 @ref{SINH}
 @end table
 
@@ -1600,9 +1600,9 @@ end program test_atan
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{TAN} @gol
-Degrees function: @gol
+Inverse function: @*
+@ref{TAN} @*
+Degrees function: @*
 @ref{ATAND}
 @end table
 
@@ -1665,9 +1665,9 @@ end program test_atand
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{TAND} @gol
-Radians function: @gol
+Inverse function: @*
+@ref{TAND} @*
+Radians function: @*
 @ref{ATAN}
 @end table
 
@@ -1730,9 +1730,9 @@ end program test_atan2
 @end multitable
 
 @item @emph{See also}:
-Alias: @gol
-@ref{ATAN} @gol
-Degrees function: @gol
+Alias: @*
+@ref{ATAN} @*
+Degrees function: @*
 @ref{ATAN2D}
 @end table
 
@@ -1798,9 +1798,9 @@ end program test_atan2d
 @end multitable
 
 @item @emph{See also}:
-Alias: @gol
-@ref{ATAND} @gol
-Radians function: @gol
+Alias: @*
+@ref{ATAND} @*
+Radians function: @*
 @ref{ATAN2}
 @end table
 
@@ -1853,7 +1853,7 @@ END PROGRAM
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
+Inverse function: @*
 @ref{TANH}
 @end table
 
@@ -1902,11 +1902,11 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_FETCH_ADD}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_AND}, @gol
-@ref{ATOMIC_OR}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_FETCH_ADD}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_AND}, @*
+@ref{ATOMIC_OR}, @*
 @ref{ATOMIC_XOR}
 @end table
 
@@ -1956,11 +1956,11 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_FETCH_AND}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_ADD}, @gol
-@ref{ATOMIC_OR}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_FETCH_AND}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_ADD}, @*
+@ref{ATOMIC_OR}, @*
 @ref{ATOMIC_XOR}
 @end table
 
@@ -2015,8 +2015,8 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_REF}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_REF}, @*
 @ref{ISO_FORTRAN_ENV}
 @end table
 
@@ -2067,12 +2067,12 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_REF}, @gol
-@ref{ATOMIC_CAS}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_ADD}, @gol
-@ref{ATOMIC_AND}, @gol
-@ref{ATOMIC_OR}, @gol
+@ref{ATOMIC_REF}, @*
+@ref{ATOMIC_CAS}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_ADD}, @*
+@ref{ATOMIC_AND}, @*
+@ref{ATOMIC_OR}, @*
 @ref{ATOMIC_XOR}
 @end table
 
@@ -2125,11 +2125,11 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_ADD}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_FETCH_AND}, @gol
-@ref{ATOMIC_FETCH_OR}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_ADD}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_FETCH_AND}, @*
+@ref{ATOMIC_FETCH_OR}, @*
 @ref{ATOMIC_FETCH_XOR}
 @end table
 
@@ -2180,11 +2180,11 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_AND}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_FETCH_ADD}, @gol
-@ref{ATOMIC_FETCH_OR}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_AND}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_FETCH_ADD}, @*
+@ref{ATOMIC_FETCH_OR}, @*
 @ref{ATOMIC_FETCH_XOR}
 @end table
 
@@ -2235,11 +2235,11 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_OR}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_FETCH_ADD}, @gol
-@ref{ATOMIC_FETCH_AND}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_OR}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_FETCH_ADD}, @*
+@ref{ATOMIC_FETCH_AND}, @*
 @ref{ATOMIC_FETCH_XOR}
 @end table
 
@@ -2290,11 +2290,11 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_XOR}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_FETCH_ADD}, @gol
-@ref{ATOMIC_FETCH_AND}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_XOR}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_FETCH_ADD}, @*
+@ref{ATOMIC_FETCH_AND}, @*
 @ref{ATOMIC_FETCH_OR}
 @end table
 
@@ -2343,11 +2343,11 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_FETCH_OR}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_ADD}, @gol
-@ref{ATOMIC_OR}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_FETCH_OR}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_ADD}, @*
+@ref{ATOMIC_OR}, @*
 @ref{ATOMIC_XOR}
 @end table
 
@@ -2404,12 +2404,12 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_CAS}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_FETCH_ADD}, @gol
-@ref{ATOMIC_FETCH_AND}, @gol
-@ref{ATOMIC_FETCH_OR}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_CAS}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_FETCH_ADD}, @*
+@ref{ATOMIC_FETCH_AND}, @*
+@ref{ATOMIC_FETCH_OR}, @*
 @ref{ATOMIC_FETCH_XOR}
 @end table
 
@@ -2457,11 +2457,11 @@ end program atomic
 @end smallexample
 
 @item @emph{See also}:
-@ref{ATOMIC_DEFINE}, @gol
-@ref{ATOMIC_FETCH_XOR}, @gol
-@ref{ISO_FORTRAN_ENV}, @gol
-@ref{ATOMIC_ADD}, @gol
-@ref{ATOMIC_OR}, @gol
+@ref{ATOMIC_DEFINE}, @*
+@ref{ATOMIC_FETCH_XOR}, @*
+@ref{ISO_FORTRAN_ENV}, @*
+@ref{ATOMIC_ADD}, @*
+@ref{ATOMIC_OR}, @*
 @ref{ATOMIC_XOR}
 @end table
 
@@ -2849,8 +2849,8 @@ as @var{I}.
 The return value is of type @code{LOGICAL} and of the default kind.
 
 @item @emph{See also}:
-@ref{BGT}, @gol
-@ref{BLE}, @gol
+@ref{BGT}, @*
+@ref{BLE}, @*
 @ref{BLT}
 @end table
 
@@ -2885,8 +2885,8 @@ as @var{I}.
 The return value is of type @code{LOGICAL} and of the default kind.
 
 @item @emph{See also}:
-@ref{BGE}, @gol
-@ref{BLE}, @gol
+@ref{BGE}, @*
+@ref{BLE}, @*
 @ref{BLT}
 @end table
 
@@ -2964,8 +2964,8 @@ as @var{I}.
 The return value is of type @code{LOGICAL} and of the default kind.
 
 @item @emph{See also}:
-@ref{BGT}, @gol
-@ref{BGE}, @gol
+@ref{BGT}, @*
+@ref{BGE}, @*
 @ref{BLT}
 @end table
 
@@ -3000,8 +3000,8 @@ as @var{I}.
 The return value is of type @code{LOGICAL} and of the default kind.
 
 @item @emph{See also}:
-@ref{BGE}, @gol
-@ref{BGT}, @gol
+@ref{BGE}, @*
+@ref{BGT}, @*
 @ref{BLE}
 @end table
 
@@ -3107,7 +3107,7 @@ end subroutine association_test
 @end smallexample
 
 @item @emph{See also}:
-@ref{C_LOC}, @gol
+@ref{C_LOC}, @*
 @ref{C_FUNLOC}
 @end table
 
@@ -3162,7 +3162,7 @@ end program main
 @end smallexample
 
 @item @emph{See also}:
-@ref{C_LOC}, @gol
+@ref{C_LOC}, @*
 @ref{C_F_PROCPOINTER}
 @end table
 
@@ -3220,7 +3220,7 @@ end program main
 @end smallexample
 
 @item @emph{See also}:
-@ref{C_LOC}, @gol
+@ref{C_LOC}, @*
 @ref{C_F_POINTER}
 @end table
 
@@ -3278,9 +3278,9 @@ end program main
 @end smallexample
 
 @item @emph{See also}:
-@ref{C_ASSOCIATED}, @gol
-@ref{C_LOC}, @gol
-@ref{C_F_POINTER}, @gol
+@ref{C_ASSOCIATED}, @*
+@ref{C_LOC}, @*
+@ref{C_F_POINTER}, @*
 @ref{C_F_PROCPOINTER}
 @end table
 
@@ -3326,9 +3326,9 @@ end subroutine association_test
 @end smallexample
 
 @item @emph{See also}:
-@ref{C_ASSOCIATED}, @gol
-@ref{C_FUNLOC}, @gol
-@ref{C_F_POINTER}, @gol
+@ref{C_ASSOCIATED}, @*
+@ref{C_FUNLOC}, @*
+@ref{C_F_POINTER}, @*
 @ref{C_F_PROCPOINTER}
 @end table
 
@@ -3379,7 +3379,7 @@ The example will print @code{T} unless you are using a platform
 where default @code{REAL} variables are unusually padded.
 
 @item @emph{See also}:
-@ref{SIZEOF}, @gol
+@ref{SIZEOF}, @*
 @ref{STORAGE_SIZE}
 @end table
 
@@ -3425,7 +3425,7 @@ end program test_ceiling
 @end smallexample
 
 @item @emph{See also}:
-@ref{FLOOR}, @gol
+@ref{FLOOR}, @*
 @ref{NINT}
 @end table
 
@@ -3480,8 +3480,8 @@ See @ref{ICHAR} for a discussion of converting between numerical values
 and formatted string representations.
 
 @item @emph{See also}:
-@ref{ACHAR}, @gol
-@ref{IACHAR}, @gol
+@ref{ACHAR}, @*
+@ref{IACHAR}, @*
 @ref{ICHAR}
 
 @end table
@@ -3711,9 +3711,9 @@ end program test
 @end smallexample
 
 @item @emph{See also}:
-@ref{CO_MAX}, @gol
-@ref{CO_MIN}, @gol
-@ref{CO_SUM}, @gol
+@ref{CO_MAX}, @*
+@ref{CO_MIN}, @*
+@ref{CO_SUM}, @*
 @ref{CO_REDUCE}
 @end table
 
@@ -3768,9 +3768,9 @@ end program test
 @end smallexample
 
 @item @emph{See also}:
-@ref{CO_MIN}, @gol
-@ref{CO_SUM}, @gol
-@ref{CO_REDUCE}, @gol
+@ref{CO_MIN}, @*
+@ref{CO_SUM}, @*
+@ref{CO_REDUCE}, @*
 @ref{CO_BROADCAST}
 @end table
 
@@ -3825,9 +3825,9 @@ end program test
 @end smallexample
 
 @item @emph{See also}:
-@ref{CO_MAX}, @gol
-@ref{CO_SUM}, @gol
-@ref{CO_REDUCE}, @gol
+@ref{CO_MAX}, @*
+@ref{CO_SUM}, @*
+@ref{CO_REDUCE}, @*
 @ref{CO_BROADCAST}
 @end table
 
@@ -3908,9 +3908,9 @@ function, which takes two arguments of the same type and returning that
 type as result.
 
 @item @emph{See also}:
-@ref{CO_MIN}, @gol
-@ref{CO_MAX}, @gol
-@ref{CO_SUM}, @gol
+@ref{CO_MIN}, @*
+@ref{CO_MAX}, @*
+@ref{CO_SUM}, @*
 @ref{CO_BROADCAST}
 @end table
 
@@ -3966,9 +3966,9 @@ end program test
 @end smallexample
 
 @item @emph{See also}:
-@ref{CO_MAX}, @gol
-@ref{CO_MIN}, @gol
-@ref{CO_REDUCE}, @gol
+@ref{CO_MAX}, @*
+@ref{CO_MIN}, @*
+@ref{CO_REDUCE}, @*
 @ref{CO_BROADCAST}
 @end table
 
@@ -4013,7 +4013,7 @@ end program test_command_argument_count
 @end smallexample
 
 @item @emph{See also}:
-@ref{GET_COMMAND}, @gol
+@ref{GET_COMMAND}, @*
 @ref{GET_COMMAND_ARGUMENT}
 @end table
 
@@ -4058,7 +4058,7 @@ the @code{COMPILER_OPTIONS} intrinsic.
 @end smallexample
 
 @item @emph{See also}:
-@ref{COMPILER_VERSION}, @gol
+@ref{COMPILER_VERSION}, @*
 @ref{ISO_FORTRAN_ENV}
 @end table
 
@@ -4101,7 +4101,7 @@ It contains the name of the compiler and its version number.
 @end smallexample
 
 @item @emph{See also}:
-@ref{COMPILER_OPTIONS}, @gol
+@ref{COMPILER_OPTIONS}, @*
 @ref{ISO_FORTRAN_ENV}
 @end table
 
@@ -4260,9 +4260,9 @@ end program test_cos
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{ACOS} @gol
-Degrees function: @gol
+Inverse function: @*
+@ref{ACOS} @*
+Degrees function: @*
 @ref{COSD}
 @end table
 
@@ -4324,9 +4324,9 @@ end program test_cosd
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{ACOSD} @gol
-Radians function: @gol
+Inverse function: @*
+@ref{ACOSD} @*
+Radians function: @*
 @ref{COS}
 @end table
 
@@ -4380,7 +4380,7 @@ end program test_cosh
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
+Inverse function: @*
 @ref{ACOSH}
 @end table
 
@@ -4434,9 +4434,9 @@ end program test_cotan
 @end multitable
 
 @item @emph{See also}:
-Converse function: @gol
-@ref{TAN} @gol
-Degrees function: @gol
+Converse function: @*
+@ref{TAN} @*
+Degrees function: @*
 @ref{COTAND}
 @end table
 
@@ -4490,9 +4490,9 @@ end program test_cotand
 @end multitable
 
 @item @emph{See also}:
-Converse function: @gol
-@ref{TAND} @gol
-Radians function: @gol
+Converse function: @*
+@ref{TAND} @*
+Radians function: @*
 @ref{COTAN}
 @end table
 
@@ -4616,7 +4616,7 @@ end program test_cpu_time
 @end smallexample
 
 @item @emph{See also}:
-@ref{SYSTEM_CLOCK}, @gol
+@ref{SYSTEM_CLOCK}, @*
 @ref{DATE_AND_TIME}
 @end table
 
@@ -4732,10 +4732,10 @@ end program test_ctime
 @end smallexample
 
 @item @emph{See Also}:
-@ref{DATE_AND_TIME}, @gol
-@ref{GMTIME}, @gol
-@ref{LTIME}, @gol
-@ref{TIME}, @gol
+@ref{DATE_AND_TIME}, @*
+@ref{GMTIME}, @*
+@ref{LTIME}, @*
+@ref{TIME}, @*
 @ref{TIME8}
 @end table
 
@@ -4812,7 +4812,7 @@ end program test_time_and_date
 @end smallexample
 
 @item @emph{See also}:
-@ref{CPU_TIME}, @gol
+@ref{CPU_TIME}, @*
 @ref{SYSTEM_CLOCK}
 @end table
 
@@ -5811,7 +5811,7 @@ end program test_exit
 @end smallexample
 
 @item @emph{See also}:
-@ref{ABORT}, @gol
+@ref{ABORT}, @*
 @ref{KILL}
 @end table
 
@@ -6004,7 +6004,7 @@ end program test_fdate
 @end smallexample
 
 @item @emph{See also}:
-@ref{DATE_AND_TIME}, @gol
+@ref{DATE_AND_TIME}, @*
 @ref{CTIME}
 @end table
 
@@ -6069,8 +6069,8 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{FGETC}, @gol
-@ref{FPUT}, @gol
+@ref{FGETC}, @*
+@ref{FPUT}, @*
 @ref{FPUTC}
 @end table
 
@@ -6136,8 +6136,8 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{FGET}, @gol
-@ref{FPUT}, @gol
+@ref{FGET}, @*
+@ref{FPUT}, @*
 @ref{FPUTC}
 @end table
 
@@ -6202,7 +6202,7 @@ is present, the result is an integer of kind @var{KIND}, otherwise it
 is of default kind.
 
 @item @emph{See also}:
-@ref{MAXLOC}, @gol
+@ref{MAXLOC}, @*
 @ref{MINLOC}
 
 @end table
@@ -6248,7 +6248,7 @@ end program test_floor
 @end smallexample
 
 @item @emph{See also}:
-@ref{CEILING}, @gol
+@ref{CEILING}, @*
 @ref{NINT}
 @end table
 
@@ -6419,8 +6419,8 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{FPUTC}, @gol
-@ref{FGET}, @gol
+@ref{FPUTC}, @*
+@ref{FGET}, @*
 @ref{FGETC}
 @end table
 
@@ -6484,8 +6484,8 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{FPUT}, @gol
-@ref{FGET}, @gol
+@ref{FPUT}, @*
+@ref{FGET}, @*
 @ref{FGETC}
 @end table
 
@@ -6694,9 +6694,9 @@ on success and a system specific error code otherwise.
 See @ref{STAT} for an example.
 
 @item @emph{See also}:
-To stat a link: @gol
-@ref{LSTAT} @gol
-To stat a file: @gol
+To stat a link: @*
+@ref{LSTAT} @*
+To stat a file: @*
 @ref{STAT}
 @end table
 
@@ -6804,7 +6804,7 @@ end program test_gamma
 @end multitable
 
 @item @emph{See also}:
-Logarithm of the Gamma function: @gol
+Logarithm of the Gamma function: @*
 @ref{LOG_GAMMA}
 @end table
 
@@ -6844,7 +6844,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{IERRNO}, @gol
+@ref{IERRNO}, @*
 @ref{PERROR}
 @end table
 
@@ -6905,11 +6905,11 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-GNU Fortran 77 compatibility function: @gol
-@ref{IARGC} @gol
-Fortran 2003 functions and subroutines: @gol
-@ref{GET_COMMAND}, @gol
-@ref{GET_COMMAND_ARGUMENT}, @gol
+GNU Fortran 77 compatibility function: @*
+@ref{IARGC} @*
+Fortran 2003 functions and subroutines: @*
+@ref{GET_COMMAND}, @*
+@ref{GET_COMMAND_ARGUMENT}, @*
 @ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
@@ -6961,7 +6961,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{GET_COMMAND_ARGUMENT}, @gol
+@ref{GET_COMMAND_ARGUMENT}, @*
 @ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
@@ -7029,7 +7029,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{GET_COMMAND}, @gol
+@ref{GET_COMMAND}, @*
 @ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
@@ -7223,7 +7223,7 @@ kind.
 See @code{GETPID} for an example.
 
 @item @emph{See also}:
-@ref{GETPID}, @gol
+@ref{GETPID}, @*
 @ref{GETUID}
 @end table
 
@@ -7308,7 +7308,7 @@ end program info
 @end smallexample
 
 @item @emph{See also}:
-@ref{GETGID}, @gol
+@ref{GETGID}, @*
 @ref{GETUID}
 @end table
 
@@ -7342,7 +7342,7 @@ kind.
 See @code{GETPID} for an example.
 
 @item @emph{See also}:
-@ref{GETPID}, @gol
+@ref{GETPID}, @*
 @ref{GETLOG}
 @end table
 
@@ -7399,10 +7399,10 @@ effect, zero if not, and negative if the information is not available.
 @end enumerate
 
 @item @emph{See also}:
-@ref{DATE_AND_TIME}, @gol
-@ref{CTIME}, @gol
-@ref{LTIME}, @gol
-@ref{TIME}, @gol
+@ref{DATE_AND_TIME}, @*
+@ref{CTIME}, @*
+@ref{LTIME}, @*
+@ref{TIME}, @*
 @ref{TIME8}
 @end table
 
@@ -7571,8 +7571,8 @@ See @ref{ICHAR} for a discussion of converting between numerical values
 and formatted string representations.
 
 @item @emph{See also}:
-@ref{ACHAR}, @gol
-@ref{CHAR}, @gol
+@ref{ACHAR}, @*
+@ref{CHAR}, @*
 @ref{ICHAR}
 @end table
 
@@ -7633,8 +7633,8 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{IANY}, @gol
-@ref{IPARITY}, @gol
+@ref{IANY}, @*
+@ref{IPARITY}, @*
 @ref{IAND}
 @end table
 
@@ -7697,11 +7697,11 @@ END PROGRAM
 @end multitable
 
 @item @emph{See also}:
-@ref{IOR}, @gol
-@ref{IEOR}, @gol
-@ref{IBITS}, @gol
-@ref{IBSET}, @gol
-@ref{IBCLR}, @gol
+@ref{IOR}, @*
+@ref{IEOR}, @*
+@ref{IBITS}, @*
+@ref{IBSET}, @*
+@ref{IBCLR}, @*
 @ref{NOT}
 @end table
 
@@ -7762,8 +7762,8 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{IPARITY}, @gol
-@ref{IALL}, @gol
+@ref{IPARITY}, @*
+@ref{IALL}, @*
 @ref{IOR}
 @end table
 
@@ -7805,11 +7805,11 @@ The number of command line arguments, type @code{INTEGER(4)}.
 See @ref{GETARG}
 
 @item @emph{See also}:
-GNU Fortran 77 compatibility subroutine: @gol
-@ref{GETARG} @gol
-Fortran 2003 functions and subroutines: @gol
-@ref{GET_COMMAND}, @gol
-@ref{GET_COMMAND_ARGUMENT}, @gol
+GNU Fortran 77 compatibility subroutine: @*
+@ref{GETARG} @*
+Fortran 2003 functions and subroutines: @*
+@ref{GET_COMMAND}, @*
+@ref{GET_COMMAND_ARGUMENT}, @*
 @ref{COMMAND_ARGUMENT_COUNT}
 @end table
 
@@ -7860,11 +7860,11 @@ The return value is of type @code{INTEGER} and of the same kind as
 @end multitable
 
 @item @emph{See also}:
-@ref{IBITS}, @gol
-@ref{IBSET}, @gol
-@ref{IAND}, @gol
-@ref{IOR}, @gol
-@ref{IEOR}, @gol
+@ref{IBITS}, @*
+@ref{IBSET}, @*
+@ref{IAND}, @*
+@ref{IOR}, @*
+@ref{IEOR}, @*
 @ref{MVBITS}
 @end table
 
@@ -7919,11 +7919,11 @@ The return value is of type @code{INTEGER} and of the same kind as
 @end multitable
 
 @item @emph{See also}:
-@ref{BIT_SIZE}, @gol
-@ref{IBCLR}, @gol
-@ref{IBSET}, @gol
-@ref{IAND}, @gol
-@ref{IOR}, @gol
+@ref{BIT_SIZE}, @*
+@ref{IBCLR}, @*
+@ref{IBSET}, @*
+@ref{IAND}, @*
+@ref{IOR}, @*
 @ref{IEOR}
 @end table
 
@@ -7973,11 +7973,11 @@ The return value is of type @code{INTEGER} and of the same kind as
 @end multitable
 
 @item @emph{See also}:
-@ref{IBCLR}, @gol
-@ref{IBITS}, @gol
-@ref{IAND}, @gol
-@ref{IOR}, @gol
-@ref{IEOR}, @gol
+@ref{IBCLR}, @*
+@ref{IBITS}, @*
+@ref{IAND}, @*
+@ref{IOR}, @*
+@ref{IEOR}, @*
 @ref{MVBITS}
 @end table
 
@@ -8053,8 +8053,8 @@ end program read_val
 @end smallexample
 
 @item @emph{See also}:
-@ref{ACHAR}, @gol
-@ref{CHAR}, @gol
+@ref{ACHAR}, @*
+@ref{CHAR}, @*
 @ref{IACHAR}
 @end table
 
@@ -8161,11 +8161,11 @@ type parameter of the other argument as-if a call to @ref{INT} occurred.
 @end multitable
 
 @item @emph{See also}:
-@ref{IOR}, @gol
-@ref{IAND}, @gol
-@ref{IBITS}, @gol
-@ref{IBSET}, @gol
-@ref{IBCLR}, @gol
+@ref{IOR}, @*
+@ref{IAND}, @*
+@ref{IBITS}, @*
+@ref{IBSET}, @*
+@ref{IBCLR}, @*
 @ref{NOT}
 @end table
 
@@ -8242,7 +8242,7 @@ WRITE (*,*) IMAGE_INDEX (array, [2,0,3,1])
 @end smallexample
 
 @item @emph{See also}:
-@ref{THIS_IMAGE}, @gol
+@ref{THIS_IMAGE}, @*
 @ref{NUM_IMAGES}
 @end table
 
@@ -8294,7 +8294,7 @@ The return value is of type @code{INTEGER} and of kind @var{KIND}. If
 @end multitable
 
 @item @emph{See also}:
-@ref{SCAN}, @gol
+@ref{SCAN}, @*
 @ref{VERIFY}
 @end table
 
@@ -8395,7 +8395,7 @@ Elemental function
 The return value is a @code{INTEGER(2)} variable.
 
 @item @emph{See also}:
-@ref{INT}, @gol
+@ref{INT}, @*
 @ref{INT8}
 @end table
 
@@ -8431,7 +8431,7 @@ Elemental function
 The return value is a @code{INTEGER(8)} variable.
 
 @item @emph{See also}:
-@ref{INT}, @gol
+@ref{INT}, @*
 @ref{INT2}
 @end table
 
@@ -8486,11 +8486,11 @@ type parameter of the other argument as-if a call to @ref{INT} occurred.
 @end multitable
 
 @item @emph{See also}:
-@ref{IEOR}, @gol
-@ref{IAND}, @gol
-@ref{IBITS}, @gol
-@ref{IBSET}, @gol
-@ref{IBCLR}, @gol
+@ref{IEOR}, @*
+@ref{IAND}, @*
+@ref{IBITS}, @*
+@ref{IBSET}, @*
+@ref{IBCLR}, @*
 @ref{NOT}
 @end table
 
@@ -8552,9 +8552,9 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{IANY}, @gol
-@ref{IALL}, @gol
-@ref{IEOR}, @gol
+@ref{IANY}, @*
+@ref{IALL}, @*
+@ref{IEOR}, @*
 @ref{PARITY}
 @end table
 
@@ -9038,7 +9038,7 @@ Returns 0 on success; otherwise a system-specific error code is returned.
 @end multitable
 
 @item @emph{See also}:
-@ref{ABORT}, @gol
+@ref{ABORT}, @*
 @ref{EXIT}
 @end table
 
@@ -9124,7 +9124,7 @@ structure component, or if it has a zero extent along the relevant
 dimension, the lower bound is taken to be 1.
 
 @item @emph{See also}:
-@ref{UBOUND}, @gol
+@ref{UBOUND}, @*
 @ref{LCOBOUND}
 @end table
 
@@ -9164,7 +9164,7 @@ If @var{DIM} is absent, the result is an array of the lower cobounds of
 corresponding to the lower cobound of the array along that codimension.
 
 @item @emph{See also}:
-@ref{UCOBOUND}, @gol
+@ref{UCOBOUND}, @*
 @ref{LBOUND}
 @end table
 
@@ -9206,9 +9206,9 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{BIT_SIZE}, @gol
-@ref{TRAILZ}, @gol
-@ref{POPCNT}, @gol
+@ref{BIT_SIZE}, @*
+@ref{TRAILZ}, @*
+@ref{POPCNT}, @*
 @ref{POPPAR}
 @end table
 
@@ -9256,8 +9256,8 @@ The return value is of type @code{INTEGER} and of kind @var{KIND}. If
 
 
 @item @emph{See also}:
-@ref{LEN_TRIM}, @gol
-@ref{ADJUSTL}, @gol
+@ref{LEN_TRIM}, @*
+@ref{ADJUSTL}, @*
 @ref{ADJUSTR}
 @end table
 
@@ -9294,8 +9294,8 @@ The return value is of type @code{INTEGER} and of kind @var{KIND}. If
 @var{KIND} is absent, the return value is of default integer kind.
 
 @item @emph{See also}:
-@ref{LEN}, @gol
-@ref{ADJUSTL}, @gol
+@ref{LEN}, @*
+@ref{ADJUSTL}, @*
 @ref{ADJUSTR}
 @end table
 
@@ -9348,8 +9348,8 @@ otherwise, based on the ASCII ordering.
 @end multitable
 
 @item @emph{See also}:
-@ref{LGT}, @gol
-@ref{LLE}, @gol
+@ref{LGT}, @*
+@ref{LLE}, @*
 @ref{LLT}
 @end table
 
@@ -9402,8 +9402,8 @@ otherwise, based on the ASCII ordering.
 @end multitable
 
 @item @emph{See also}:
-@ref{LGE}, @gol
-@ref{LLE}, @gol
+@ref{LGE}, @*
+@ref{LLE}, @*
 @ref{LLT}
 @end table
 
@@ -9447,7 +9447,7 @@ Subroutine, function
 @end multitable
 
 @item @emph{See also}:
-@ref{SYMLNK}, @gol
+@ref{SYMLNK}, @*
 @ref{UNLINK}
 @end table
 
@@ -9500,8 +9500,8 @@ otherwise, based on the ASCII ordering.
 @end multitable
 
 @item @emph{See also}:
-@ref{LGE}, @gol
-@ref{LGT}, @gol
+@ref{LGE}, @*
+@ref{LGT}, @*
 @ref{LLT}
 @end table
 
@@ -9554,8 +9554,8 @@ otherwise, based on the ASCII ordering.
 @end multitable
 
 @item @emph{See also}:
-@ref{LGE}, @gol
-@ref{LGT}, @gol
+@ref{LGE}, @*
+@ref{LGT}, @*
 @ref{LLE}
 @end table
 
@@ -9591,7 +9591,7 @@ with @code{INTENT(IN)}
 The return value is of @code{INTEGER(kind=4)} type.
 
 @item @emph{See also}:
-@ref{INDEX intrinsic}, @gol
+@ref{INDEX intrinsic}, @*
 @ref{LEN_TRIM}
 @end table
 
@@ -9796,7 +9796,7 @@ end program test_log_gamma
 @end multitable
 
 @item @emph{See also}:
-Gamma function: @gol
+Gamma function: @*
 @ref{GAMMA}
 @end table
 
@@ -9833,8 +9833,8 @@ kind corresponding to @var{KIND}, or of the default logical kind if
 @var{KIND} is not given.
 
 @item @emph{See also}:
-@ref{INT}, @gol
-@ref{REAL}, @gol
+@ref{INT}, @*
+@ref{REAL}, @*
 @ref{CMPLX}
 @end table
 
@@ -9877,11 +9877,11 @@ The return value is of type @code{INTEGER} and of the same kind as
 @var{I}.
 
 @item @emph{See also}:
-@ref{ISHFT}, @gol
-@ref{ISHFTC}, @gol
-@ref{RSHIFT}, @gol
-@ref{SHIFTA}, @gol
-@ref{SHIFTL}, @gol
+@ref{ISHFT}, @*
+@ref{ISHFTC}, @*
+@ref{RSHIFT}, @*
+@ref{SHIFTA}, @*
+@ref{SHIFTL}, @*
 @ref{SHIFTR}
 @end table
 
@@ -9928,9 +9928,9 @@ Returns 0 on success and a system specific error code otherwise.
 See @ref{STAT} for an example.
 
 @item @emph{See also}:
-To stat an open file: @gol
-@ref{FSTAT} @gol
-To stat a file: @gol
+To stat an open file: @*
+@ref{FSTAT} @*
+To stat a file: @*
 @ref{STAT}
 @end table
 
@@ -9986,10 +9986,10 @@ effect, zero if not, and negative if the information is not available.
 @end enumerate
 
 @item @emph{See also}:
-@ref{DATE_AND_TIME}, @gol
-@ref{CTIME}, @gol
-@ref{GMTIME}, @gol
-@ref{TIME}, @gol
+@ref{DATE_AND_TIME}, @*
+@ref{CTIME}, @*
+@ref{GMTIME}, @*
+@ref{TIME}, @*
 @ref{TIME8}
 @end table
 
@@ -10219,8 +10219,8 @@ and has the same type and kind as the first argument.
 @end multitable
 
 @item @emph{See also}:
-@ref{MAXLOC} @gol
-@ref{MAXVAL}, @gol
+@ref{MAXLOC} @*
+@ref{MAXVAL}, @*
 @ref{MIN}
 @end table
 
@@ -10328,8 +10328,8 @@ is present, the result is an integer of kind @var{KIND}, otherwise it
 is of default kind.
 
 @item @emph{See also}:
-@ref{FINDLOC}, @gol
-@ref{MAX}, @gol
+@ref{FINDLOC}, @*
+@ref{MAX}, @*
 @ref{MAXVAL}
 @end table
 
@@ -10383,7 +10383,7 @@ the size of @var{ARRAY} with the @var{DIM} dimension removed.  In all
 cases, the result is of the same type and kind as @var{ARRAY}.
 
 @item @emph{See also}:
-@ref{MAX}, @gol
+@ref{MAX}, @*
 @ref{MAXLOC}
 @end table
 
@@ -10421,10 +10421,10 @@ number of clock ticks since the start of the process, or @code{-1} if
 the system does not support @code{clock(3)}.
 
 @item @emph{See also}:
-@ref{CTIME}, @gol
-@ref{GMTIME}, @gol
-@ref{LTIME}, @gol
-@ref{MCLOCK}, @gol
+@ref{CTIME}, @*
+@ref{GMTIME}, @*
+@ref{LTIME}, @*
+@ref{MCLOCK}, @*
 @ref{TIME}
 @end table
 
@@ -10464,10 +10464,10 @@ number of clock ticks since the start of the process, or @code{-1} if
 the system does not support @code{clock(3)}.
 
 @item @emph{See also}:
-@ref{CTIME}, @gol
-@ref{GMTIME}, @gol
-@ref{LTIME}, @gol
-@ref{MCLOCK}, @gol
+@ref{CTIME}, @*
+@ref{GMTIME}, @*
+@ref{LTIME}, @*
+@ref{MCLOCK}, @*
 @ref{TIME8}
 @end table
 
@@ -10594,8 +10594,8 @@ and has the same type and kind as the first argument.
 @end multitable
 
 @item @emph{See also}:
-@ref{MAX}, @gol
-@ref{MINLOC}, @gol
+@ref{MAX}, @*
+@ref{MINLOC}, @*
 @ref{MINVAL}
 @end table
 
@@ -10695,8 +10695,8 @@ is present, the result is an integer of kind @var{KIND}, otherwise it
 is of default kind.
 
 @item @emph{See also}:
-@ref{FINDLOC}, @gol
-@ref{MIN}, @gol
+@ref{FINDLOC}, @*
+@ref{MIN}, @*
 @ref{MINVAL}
 @end table
 
@@ -10750,7 +10750,7 @@ the size of @var{ARRAY} with the @var{DIM} dimension removed.  In all
 cases, the result is of the same type and kind as @var{ARRAY}.
 
 @item @emph{See also}:
-@ref{MIN}, @gol
+@ref{MIN}, @*
 @ref{MINLOC}
 @end table
 
@@ -10992,11 +10992,11 @@ same kind as @var{FROM}.
 @end multitable
 
 @item @emph{See also}:
-@ref{IBCLR}, @gol
-@ref{IBSET}, @gol
-@ref{IBITS}, @gol
-@ref{IAND}, @gol
-@ref{IOR}, @gol
+@ref{IBCLR}, @*
+@ref{IBSET}, @*
+@ref{IBITS}, @*
+@ref{IAND}, @*
+@ref{IOR}, @*
 @ref{IEOR}
 @end table
 
@@ -11139,7 +11139,7 @@ end program test_nint
 @end multitable
 
 @item @emph{See also}:
-@ref{CEILING}, @gol
+@ref{CEILING}, @*
 @ref{FLOOR}
 @end table
 
@@ -11240,11 +11240,11 @@ argument.
 @end multitable
 
 @item @emph{See also}:
-@ref{IAND}, @gol
-@ref{IEOR}, @gol
-@ref{IOR}, @gol
-@ref{IBITS}, @gol
-@ref{IBSET}, @gol
+@ref{IAND}, @*
+@ref{IEOR}, @*
+@ref{IOR}, @*
+@ref{IBITS}, @*
+@ref{IBSET}, @*
 @ref{IBCLR}
 @end table
 
@@ -11347,7 +11347,7 @@ END IF
 @end smallexample
 
 @item @emph{See also}:
-@ref{THIS_IMAGE}, @gol
+@ref{THIS_IMAGE}, @*
 @ref{IMAGE_INDEX}
 @end table
 
@@ -11407,7 +11407,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-Fortran 95 elemental function: @gol
+Fortran 95 elemental function: @*
 @ref{IOR}
 @end table
 
@@ -11604,8 +11604,8 @@ program test_population
 end program test_population
 @end smallexample
 @item @emph{See also}:
-@ref{POPPAR}, @gol
-@ref{LEADZ}, @gol
+@ref{POPPAR}, @*
+@ref{LEADZ}, @*
 @ref{TRAILZ}
 @end table
 
@@ -11651,8 +11651,8 @@ program test_population
 end program test_population
 @end smallexample
 @item @emph{See also}:
-@ref{POPCNT}, @gol
-@ref{LEADZ}, @gol
+@ref{POPCNT}, @*
+@ref{LEADZ}, @*
 @ref{TRAILZ}
 @end table
 
@@ -11698,7 +11698,7 @@ program prec_and_range
 end program prec_and_range
 @end smallexample
 @item @emph{See also}:
-@ref{SELECTED_REAL_KIND}, @gol
+@ref{SELECTED_REAL_KIND}, @*
 @ref{RANGE}
 @end table
 
@@ -11866,7 +11866,7 @@ GNU extension
 Function
 
 @item @emph{See also}:
-@ref{RAND}, @gol
+@ref{RAND}, @*
 @ref{RANDOM_NUMBER}
 @end table
 
@@ -11919,7 +11919,7 @@ end program test_rand
 @end smallexample
 
 @item @emph{See also}:
-@ref{SRAND}, @gol
+@ref{SRAND}, @*
 @ref{RANDOM_NUMBER}
 
 @end table
@@ -11976,7 +11976,7 @@ end program test_random_seed
 @end smallexample
 
 @item @emph{See also}:
-@ref{RANDOM_NUMBER}, @gol
+@ref{RANDOM_NUMBER}, @*
 @ref{RANDOM_SEED}
 @end table
 
@@ -12025,7 +12025,7 @@ end program
 @end smallexample
 
 @item @emph{See also}:
-@ref{RANDOM_SEED}, @gol
+@ref{RANDOM_SEED}, @*
 @ref{RANDOM_INIT}
 @end table
 
@@ -12096,7 +12096,7 @@ end program test_random_seed
 @end smallexample
 
 @item @emph{See also}:
-@ref{RANDOM_NUMBER}, @gol
+@ref{RANDOM_NUMBER}, @*
 @ref{RANDOM_INIT}
 @end table
 
@@ -12134,7 +12134,7 @@ kind.
 @item @emph{Example}:
 See @code{PRECISION} for an example.
 @item @emph{See also}:
-@ref{SELECTED_REAL_KIND}, @gol
+@ref{SELECTED_REAL_KIND}, @*
 @ref{PRECISION}
 @end table
 
@@ -12475,11 +12475,11 @@ The return value is of type @code{INTEGER} and of the same kind as
 @var{I}.
 
 @item @emph{See also}:
-@ref{ISHFT}, @gol
-@ref{ISHFTC}, @gol
-@ref{LSHIFT}, @gol
-@ref{SHIFTA}, @gol
-@ref{SHIFTR}, @gol
+@ref{ISHFT}, @*
+@ref{ISHFTC}, @*
+@ref{LSHIFT}, @*
+@ref{SHIFTA}, @*
+@ref{SHIFTR}, @*
 @ref{SHIFTL}
 
 @end table
@@ -12612,7 +12612,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{INDEX intrinsic}, @gol
+@ref{INDEX intrinsic}, @*
 @ref{VERIFY}
 @end table
 
@@ -12881,8 +12881,8 @@ program real_kinds
 end program real_kinds
 @end smallexample
 @item @emph{See also}:
-@ref{PRECISION}, @gol
-@ref{RANGE}, @gol
+@ref{PRECISION}, @*
+@ref{RANGE}, @*
 @ref{RADIX}
 @end table
 
@@ -12977,7 +12977,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{RESHAPE}, @gol
+@ref{RESHAPE}, @*
 @ref{SIZE}
 @end table
 
@@ -13019,7 +13019,7 @@ The return value is of type @code{INTEGER} and of the same kind as
 @var{I}.
 
 @item @emph{See also}:
-@ref{SHIFTL}, @gol
+@ref{SHIFTL}, @*
 @ref{SHIFTR}
 @end table
 
@@ -13059,7 +13059,7 @@ The return value is of type @code{INTEGER} and of the same kind as
 @var{I}.
 
 @item @emph{See also}:
-@ref{SHIFTA}, @gol
+@ref{SHIFTA}, @*
 @ref{SHIFTR}
 @end table
 
@@ -13099,7 +13099,7 @@ The return value is of type @code{INTEGER} and of the same kind as
 @var{I}.
 
 @item @emph{See also}:
-@ref{SHIFTA}, @gol
+@ref{SHIFTA}, @*
 @ref{SHIFTL}
 @end table
 
@@ -13269,9 +13269,9 @@ end program test_sin
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{ASIN} @gol
-Degrees function: @gol
+Inverse function: @*
+@ref{ASIN} @*
+Degrees function: @*
 @ref{SIND}
 @end table
 
@@ -13331,10 +13331,10 @@ end program test_sind
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{ASIND} @gol
-Radians function: @gol
-@ref{SIN} @gol
+Inverse function: @*
+@ref{ASIND} @*
+Radians function: @*
+@ref{SIN} @*
 @end table
 
 
@@ -13433,7 +13433,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{SHAPE}, @gol
+@ref{SHAPE}, @*
 @ref{RESHAPE}
 @end table
 
@@ -13487,7 +13487,7 @@ The example will print @code{.TRUE.} unless you are using a platform
 where default @code{REAL} variables are unusually padded.
 
 @item @emph{See also}:
-@ref{C_SIZEOF}, @gol
+@ref{C_SIZEOF}, @*
 @ref{STORAGE_SIZE}
 @end table
 
@@ -13719,8 +13719,8 @@ Please note that in GNU Fortran, these two sets of intrinsics (@code{RAND},
 pseudo-random number generators.
 
 @item @emph{See also}:
-@ref{RAND}, @gol
-@ref{RANDOM_SEED}, @gol
+@ref{RAND}, @*
+@ref{RANDOM_SEED}, @*
 @ref{RANDOM_NUMBER}
 @end table
 
@@ -13808,9 +13808,9 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-To stat an open file: @gol
-@ref{FSTAT} @gol
-To stat a link: @gol
+To stat an open file: @*
+@ref{FSTAT} @*
+To stat a link: @*
 @ref{LSTAT}
 @end table
 
@@ -13844,7 +13844,7 @@ expressed in bits for an element of an array that has the dynamic type and type
 parameters of A.
 
 @item @emph{See also}:
-@ref{C_SIZEOF}, @gol
+@ref{C_SIZEOF}, @*
 @ref{SIZEOF}
 @end table
 
@@ -13948,7 +13948,7 @@ Subroutine, function
 @end multitable
 
 @item @emph{See also}:
-@ref{LINK}, @gol
+@ref{LINK}, @*
 @ref{UNLINK}
 @end table
 
@@ -14071,7 +14071,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{DATE_AND_TIME}, @gol
+@ref{DATE_AND_TIME}, @*
 @ref{CPU_TIME}
 @end table
 
@@ -14121,9 +14121,9 @@ end program test_tan
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{ATAN} @gol
-Degrees function: @gol
+Inverse function: @*
+@ref{ATAN} @*
+Degrees function: @*
 @ref{TAND}
 @end table
 
@@ -14176,9 +14176,9 @@ end program test_tand
 @end multitable
 
 @item @emph{See also}:
-Inverse function: @gol
-@ref{ATAND} @gol
-Radians function: @gol
+Inverse function: @*
+@ref{ATAND} @*
+Radians function: @*
 @ref{TAN}
 @end table
 
@@ -14303,7 +14303,7 @@ IF (THIS_IMAGE(HUGE(1)) /= THIS_IMAGE())
 @end smallexample
 
 @item @emph{See also}:
-@ref{NUM_IMAGES}, @gol
+@ref{NUM_IMAGES}, @*
 @ref{IMAGE_INDEX}
 @end table
 
@@ -14344,11 +14344,11 @@ Function
 The return value is a scalar of type @code{INTEGER(4)}.
 
 @item @emph{See also}:
-@ref{DATE_AND_TIME}, @gol
-@ref{CTIME}, @gol
-@ref{GMTIME}, @gol
-@ref{LTIME}, @gol
-@ref{MCLOCK}, @gol
+@ref{DATE_AND_TIME}, @*
+@ref{CTIME}, @*
+@ref{GMTIME}, @*
+@ref{LTIME}, @*
+@ref{MCLOCK}, @*
 @ref{TIME8}
 @end table
 
@@ -14387,11 +14387,11 @@ Function
 The return value is a scalar of type @code{INTEGER(8)}.
 
 @item @emph{See also}:
-@ref{DATE_AND_TIME}, @gol
-@ref{CTIME}, @gol
-@ref{GMTIME}, @gol
-@ref{LTIME}, @gol
-@ref{MCLOCK8}, @gol
+@ref{DATE_AND_TIME}, @*
+@ref{CTIME}, @*
+@ref{GMTIME}, @*
+@ref{LTIME}, @*
+@ref{MCLOCK8}, @*
 @ref{TIME}
 @end table
 
@@ -14466,9 +14466,9 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{BIT_SIZE}, @gol
-@ref{LEADZ}, @gol
-@ref{POPPAR}, @gol
+@ref{BIT_SIZE}, @*
+@ref{LEADZ}, @*
+@ref{POPPAR}, @*
 @ref{POPCNT}
 @end table
 
@@ -14606,7 +14606,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{ADJUSTL}, @gol
+@ref{ADJUSTL}, @*
 @ref{ADJUSTR}
 @end table
 
@@ -14697,7 +14697,7 @@ dimension, the upper bound is taken to be the number of elements along
 the relevant dimension.
 
 @item @emph{See also}:
-@ref{LBOUND}, @gol
+@ref{LBOUND}, @*
 @ref{LCOBOUND}
 @end table
 
@@ -14737,7 +14737,7 @@ If @var{DIM} is absent, the result is an array of the lower cobounds of
 corresponding to the lower cobound of the array along that codimension.
 
 @item @emph{See also}:
-@ref{LCOBOUND}, @gol
+@ref{LCOBOUND}, @*
 @ref{LBOUND}
 @end table
 
@@ -14812,7 +14812,7 @@ Subroutine, function
 @end multitable
 
 @item @emph{See also}:
-@ref{LINK}, @gol
+@ref{LINK}, @*
 @ref{SYMLNK}
 @end table
 
@@ -14864,7 +14864,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{PACK}, @gol
+@ref{PACK}, @*
 @ref{SPREAD}
 @end table
 
@@ -14920,7 +14920,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-@ref{SCAN}, @gol
+@ref{SCAN}, @*
 @ref{INDEX intrinsic}
 @end table
 
@@ -14981,7 +14981,7 @@ END PROGRAM
 @end smallexample
 
 @item @emph{See also}:
-Fortran 95 elemental function: @gol
+Fortran 95 elemental function: @*
 @ref{IEOR}
 @end table
 
diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
index 5679e2f2650..a64e564cabb 100644
--- a/gcc/fortran/invoke.texi
+++ b/gcc/fortran/invoke.texi
@@ -116,17 +116,17 @@ by type.  Explanations are in the following sections.
 @table @emph
 @item Fortran Language Options
 @xref{Fortran Dialect Options,,Options controlling Fortran dialect}.
-@gccoptlist{-fall-intrinsics -fallow-argument-mismatch -fallow-invalid-boz @gol
--fbackslash -fcray-pointer -fd-lines-as-code -fd-lines-as-comments @gol
--fdec -fdec-char-conversions -fdec-structure -fdec-intrinsic-ints @gol
--fdec-static -fdec-math -fdec-include -fdec-format-defaults @gol
--fdec-blank-format-item -fdefault-double-8 -fdefault-integer-8 @gol
--fdefault-real-8 -fdefault-real-10 -fdefault-real-16 -fdollar-ok @gol
--ffixed-line-length-@var{n} -ffixed-line-length-none -fpad-source @gol
--ffree-form -ffree-line-length-@var{n} -ffree-line-length-none @gol
--fimplicit-none -finteger-4-integer-8 -fmax-identifier-length @gol
--fmodule-private -ffixed-form -fno-range-check -fopenacc -fopenmp @gol
--freal-4-real-10 -freal-4-real-16 -freal-4-real-8 -freal-8-real-10 @gol
+@gccoptlist{-fall-intrinsics -fallow-argument-mismatch -fallow-invalid-boz
+-fbackslash -fcray-pointer -fd-lines-as-code -fd-lines-as-comments
+-fdec -fdec-char-conversions -fdec-structure -fdec-intrinsic-ints
+-fdec-static -fdec-math -fdec-include -fdec-format-defaults
+-fdec-blank-format-item -fdefault-double-8 -fdefault-integer-8
+-fdefault-real-8 -fdefault-real-10 -fdefault-real-16 -fdollar-ok
+-ffixed-line-length-@var{n} -ffixed-line-length-none -fpad-source
+-ffree-form -ffree-line-length-@var{n} -ffree-line-length-none
+-fimplicit-none -finteger-4-integer-8 -fmax-identifier-length
+-fmodule-private -ffixed-form -fno-range-check -fopenacc -fopenmp
+-freal-4-real-10 -freal-4-real-16 -freal-4-real-8 -freal-8-real-10
 -freal-8-real-16 -freal-8-real-4 -std=@var{std} -ftest-forall-temp
 }
 
@@ -134,33 +134,33 @@ by type.  Explanations are in the following sections.
 @xref{Preprocessing Options,,Enable and customize preprocessing}.
 @gccoptlist{-A-@var{question}@r{[}=@var{answer}@r{]}
 -A@var{question}=@var{answer} -C -CC -D@var{macro}@r{[}=@var{defn}@r{]}
--H -P @gol
+-H -P
 -U@var{macro} -cpp -dD -dI -dM -dN -dU -fworking-directory
--imultilib @var{dir} @gol
+-imultilib @var{dir}
 -iprefix @var{file} -iquote -isysroot @var{dir} -isystem @var{dir} -nocpp 
--nostdinc @gol
+-nostdinc
 -undef
 }
 
 @item Error and Warning Options
 @xref{Error and Warning Options,,Options to request or suppress errors
 and warnings}.
-@gccoptlist{-Waliasing -Wall -Wampersand -Warray-bounds @gol
--Wc-binding-type -Wcharacter-truncation -Wconversion @gol
--Wdo-subscript -Wfunction-elimination -Wimplicit-interface @gol
--Wimplicit-procedure -Wintrinsic-shadow -Wuse-without-only @gol
--Wintrinsics-std -Wline-truncation -Wno-align-commons @gol
--Wno-overwrite-recursive -Wno-tabs -Wreal-q-constant -Wsurprising @gol
--Wunderflow -Wunused-parameter -Wrealloc-lhs -Wrealloc-lhs-all @gol
--Wfrontend-loop-interchange -Wtarget-lifetime -fmax-errors=@var{n} @gol
--fsyntax-only -pedantic @gol
--pedantic-errors @gol
+@gccoptlist{-Waliasing -Wall -Wampersand -Warray-bounds
+-Wc-binding-type -Wcharacter-truncation -Wconversion
+-Wdo-subscript -Wfunction-elimination -Wimplicit-interface
+-Wimplicit-procedure -Wintrinsic-shadow -Wuse-without-only
+-Wintrinsics-std -Wline-truncation -Wno-align-commons
+-Wno-overwrite-recursive -Wno-tabs -Wreal-q-constant -Wsurprising
+-Wunderflow -Wunused-parameter -Wrealloc-lhs -Wrealloc-lhs-all
+-Wfrontend-loop-interchange -Wtarget-lifetime -fmax-errors=@var{n}
+-fsyntax-only -pedantic
+-pedantic-errors
 }
 
 @item Debugging Options
 @xref{Debugging Options,,Options for debugging your program or GNU Fortran}.
-@gccoptlist{-fbacktrace -fdump-fortran-optimized -fdump-fortran-original @gol
--fdebug-aux-vars -fdump-fortran-global -fdump-parse-tree -ffpe-trap=@var{list} @gol
+@gccoptlist{-fbacktrace -fdump-fortran-optimized -fdump-fortran-original
+-fdebug-aux-vars -fdump-fortran-global -fdump-parse-tree -ffpe-trap=@var{list}
 -ffpe-summary=@var{list}
 }
 
@@ -174,7 +174,7 @@ and warnings}.
 
 @item Runtime Options
 @xref{Runtime Options,,Options for influencing runtime behavior}.
-@gccoptlist{-fconvert=@var{conversion} -fmax-subrecord-length=@var{length} @gol
+@gccoptlist{-fconvert=@var{conversion} -fmax-subrecord-length=@var{length}
 -frecord-marker=@var{length} -fsign-zero
 }
 
@@ -184,20 +184,20 @@ and warnings}.
 
 @item Code Generation Options
 @xref{Code Gen Options,,Options for code generation conventions}.
-@gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n} @gol
--fbounds-check -ftail-call-workaround -ftail-call-workaround=@var{n} @gol
--fcheck-array-temporaries @gol
--fcheck=@var{<all|array-temps|bits|bounds|do|mem|pointer|recursion>} @gol
--fcoarray=@var{<none|single|lib>} -fexternal-blas -ff2c @gol
--ffrontend-loop-interchange -ffrontend-optimize @gol
--finit-character=@var{n} -finit-integer=@var{n} -finit-local-zero @gol
--finit-derived -finit-logical=@var{<true|false>} @gol
+@gccoptlist{-faggressive-function-elimination -fblas-matmul-limit=@var{n}
+-fbounds-check -ftail-call-workaround -ftail-call-workaround=@var{n}
+-fcheck-array-temporaries
+-fcheck=@var{<all|array-temps|bits|bounds|do|mem|pointer|recursion>}
+-fcoarray=@var{<none|single|lib>} -fexternal-blas -ff2c
+-ffrontend-loop-interchange -ffrontend-optimize
+-finit-character=@var{n} -finit-integer=@var{n} -finit-local-zero
+-finit-derived -finit-logical=@var{<true|false>}
 -finit-real=@var{<zero|inf|-inf|nan|snan>}
--finline-matmul-limit=@var{n} @gol
--finline-arg-packing -fmax-array-constructor=@var{n} @gol
--fmax-stack-var-size=@var{n} -fno-align-commons -fno-automatic @gol
--fno-protect-parens -fno-underscoring -fsecond-underscore @gol
--fpack-derived -frealloc-lhs -frecursive -frepack-arrays @gol
+-finline-matmul-limit=@var{n}
+-finline-arg-packing -fmax-array-constructor=@var{n}
+-fmax-stack-var-size=@var{n} -fno-align-commons -fno-automatic
+-fno-protect-parens -fno-underscoring -fsecond-underscore
+-fpack-derived -frealloc-lhs -frecursive -frepack-arrays
 -fshort-enums -fstack-arrays
 }
 @end table
-- 
2.39.2


^ permalink raw reply	[flat|nested] 59+ messages in thread

* [PATCH v2 5/5] update_web_docs_git: Update CSS reference to new manual CSS
  2023-02-23 10:27 [PATCH v2 0/5] A small Texinfo refinement Arsen Arsenović
                   ` (3 preceding siblings ...)
  2023-02-23 10:27 ` [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias Arsen Arsenović
@ 2023-02-23 10:27 ` Arsen Arsenović
  2023-03-10  0:07   ` Sandra Loosemore
  2023-02-25 22:04 ` [PATCH v2 0/5] A small Texinfo refinement Thomas Schwinge
  2023-03-08  1:56 ` Sandra Loosemore
  6 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-02-23 10:27 UTC (permalink / raw)
  To: gcc-patches
  Cc: Gerald Pfeifer, Joseph Myers, Sandra Loosemore, Arsen Arsenović

maintainer-scripts/ChangeLog:

	* update_web_docs_git (CSS): Update CSS reference to point to
	/texinfo-manuals.css.
---
 maintainer-scripts/update_web_docs_git | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/maintainer-scripts/update_web_docs_git b/maintainer-scripts/update_web_docs_git
index dee9b1d3b5e..9ded1744df4 100755
--- a/maintainer-scripts/update_web_docs_git
+++ b/maintainer-scripts/update_web_docs_git
@@ -33,7 +33,7 @@ MANUALS="cpp
   libiberty
   porting"
 
-CSS=/gcc.css
+CSS=/texinfo-manuals.css
 
 WWWBASE=${WWWBASE:-"/www/gcc/htdocs"}
 WWWBASE_PREFORMATTED=/www/gcc/htdocs-preformatted
-- 
2.39.2


^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 2/5] **/*.texi: Reorder index entries
  2023-02-23 10:27 ` [PATCH v2 2/5] **/*.texi: Reorder index entries Arsen Arsenović
@ 2023-02-23 23:50   ` Gerald Pfeifer
  0 siblings, 0 replies; 59+ messages in thread
From: Gerald Pfeifer @ 2023-02-23 23:50 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: gcc-patches, Joseph Myers, Sandra Loosemore

[-- Attachment #1: Type: text/plain, Size: 895 bytes --]

On Thu, 23 Feb 2023, Arsen Arsenović wrote:
> This change is a generalization of r13-6292-gddf6fe375d9110.
:
> gcc/d/ChangeLog:
> 
> 	* implement-d.texi: Reorder index entries around @items.
> 
> gcc/ChangeLog:
> 
> 	* doc/cfg.texi: Reorder index entries around @items.
> 	* doc/cpp.texi: Ditto.
> 	* doc/cppenv.texi: Ditto.
> 	* doc/cppopts.texi: Ditto.
> 	* doc/generic.texi: Ditto.
> 	* doc/install.texi: Ditto.
> 	* doc/extend.texi: Ditto.
> 	* doc/invoke.texi: Ditto.
> 	* doc/md.texi: Ditto.
> 	* doc/rtl.texi: Ditto.
> 	* doc/tm.texi.in: Ditto.
> 	* doc/trouble.texi: Ditto.
> 	* doc/tm.texi: Regenerate.
> 
> gcc/fortran/ChangeLog:
> 
> 	* invoke.texi: Reorder index entries around @items.
> 
> gcc/go/ChangeLog:
> 
> 	* gccgo.texi: Reorder index entries around @items.

Thank you, Arsen!

I just pushed this.

For now have taken down your original patch set from x/6 to x/4. :-)

Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-02-23 10:27 [PATCH v2 0/5] A small Texinfo refinement Arsen Arsenović
                   ` (4 preceding siblings ...)
  2023-02-23 10:27 ` [PATCH v2 5/5] update_web_docs_git: Update CSS reference to new manual CSS Arsen Arsenović
@ 2023-02-25 22:04 ` Thomas Schwinge
  2023-02-26 14:54   ` Arsen Arsenović
  2023-03-08  1:56 ` Sandra Loosemore
  6 siblings, 1 reply; 59+ messages in thread
From: Thomas Schwinge @ 2023-02-25 22:04 UTC (permalink / raw)
  To: Arsen Arsenović
  Cc: gcc-patches, Gerald Pfeifer, Joseph Myers, Sandra Loosemore

Hi Arsen!

Thanks for caring about the documentation infrastructure!

On 2023-02-23T11:27:09+0100, Arsen Arsenović via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
> The commit "docs: Reorder @opindex to be before corresponding options"

>     https://gcc.gnu.org/pipermail/gcc-patches/2023-February/612616.html
>     His idea of automatically checking for this error pattern will be
>     implemented separately, after I figure out how best to do that.  The
>     code that was involved in making this patchset is too primitive to
>     apply globally.

But please don't spend too much time on that idea, if that turns out to
require non-trivial Texinfo parsing.

Given that you've now fixed up the existing disordered instances, I
suppose not many new ones are going be introduced, assuming that people
extend the documentation by looking at the existing, now-good context.


Grüße
 Thomas
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-02-25 22:04 ` [PATCH v2 0/5] A small Texinfo refinement Thomas Schwinge
@ 2023-02-26 14:54   ` Arsen Arsenović
  0 siblings, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-02-26 14:54 UTC (permalink / raw)
  To: Thomas Schwinge
  Cc: gcc-patches, Gerald Pfeifer, Joseph Myers, Sandra Loosemore

[-- Attachment #1: Type: text/plain, Size: 1796 bytes --]

Hi Thomas,

Thomas Schwinge <thomas@codesourcery.com> writes:

> Hi Arsen!
>
> Thanks for caring about the documentation infrastructure!
>
> On 2023-02-23T11:27:09+0100, Arsen Arsenović via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
>> The commit "docs: Reorder @opindex to be before corresponding options"
>
>>     https://gcc.gnu.org/pipermail/gcc-patches/2023-February/612616.html
>>     His idea of automatically checking for this error pattern will be
>>     implemented separately, after I figure out how best to do that.  The
>>     code that was involved in making this patchset is too primitive to
>>     apply globally.
>
> But please don't spend too much time on that idea, if that turns out to
> require non-trivial Texinfo parsing.

My intention was to do it in texi2any, since there's already a nice and
convenient parse tree that can be used there.  Alternatively, texi2any
can export the parse tree for external tools consumption, if some
heuristic ends up not being general enough for all Texinfo manuals.  I'd
like to figure out something general, though, as time permits.

> Given that you've now fixed up the existing disordered instances, I
> suppose not many new ones are going be introduced, assuming that people
> extend the documentation by looking at the existing, now-good context.

Yes, I think so too.  In either case, I'll try to catch errors before
they get merged, at least for now.

>
> Grüße
>  Thomas
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

Have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-02-23 10:27 [PATCH v2 0/5] A small Texinfo refinement Arsen Arsenović
                   ` (5 preceding siblings ...)
  2023-02-25 22:04 ` [PATCH v2 0/5] A small Texinfo refinement Thomas Schwinge
@ 2023-03-08  1:56 ` Sandra Loosemore
  2023-03-08  9:11   ` Arsen Arsenović
  6 siblings, 1 reply; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-08  1:56 UTC (permalink / raw)
  To: Arsen Arsenović, gcc-patches; +Cc: Gerald Pfeifer, Joseph Myers

On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
> I've rerendered the updated documentation with latest development
> Texinfo (as some of the changes I made for the purposes of the GCC
> manual still aren't in releases) at:
> 
>    https://www.aarsen.me/~arsen/final/

Ummm.  I don't think GCC's documentation should depend on an unreleased 
version of Texinfo.  Currently install.texi documents that version 4.7 
or later is required, 4.8 for "make pdf"; did I miss something in your 
patch set that bumps this requirement?  Exactly what features do you 
depend on that are not yet supported by an official Texinfo release?

-Sandra


^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-08  1:56 ` Sandra Loosemore
@ 2023-03-08  9:11   ` Arsen Arsenović
  2023-03-08 18:38     ` Sandra Loosemore
  0 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-08  9:11 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1298 bytes --]


Sandra Loosemore <sandra@codesourcery.com> writes:

> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>> I've rerendered the updated documentation with latest development
>> Texinfo (as some of the changes I made for the purposes of the GCC
>> manual still aren't in releases) at:
>>    https://www.aarsen.me/~arsen/final/
>
> Ummm.  I don't think GCC's documentation should depend on an unreleased version
> of Texinfo.  Currently install.texi documents that version 4.7 or later is
> required, 4.8 for "make pdf"; did I miss something in your patch set that bumps
> this requirement?  Exactly what features do you depend on that are not yet
> supported by an official Texinfo release?

This patch should still build with older Texinfo versions (albeit, I
hadn't tested 4.7, I missed that requirement).  The unreleased version
should be installed on the server building HTML documentation as it
produces better results w.r.t clickable anchors and index-in-table
handling.  It should not be a hard dependency, and should only degrade
to its current state should in-dev Texinfo be missing.

It might be worth bumping the minimum, 4.7 is a version from 2004; in
the meanwhile, I'll try a few older versions too.

Thanks, have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-08  9:11   ` Arsen Arsenović
@ 2023-03-08 18:38     ` Sandra Loosemore
  2023-03-08 21:22       ` Arsen Arsenović
  2023-03-09  8:28       ` Gerald Pfeifer
  0 siblings, 2 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-08 18:38 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

On 3/8/23 02:11, Arsen Arsenović wrote:
> 
> Sandra Loosemore <sandra@codesourcery.com> writes:
> 
>> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>>> I've rerendered the updated documentation with latest development
>>> Texinfo (as some of the changes I made for the purposes of the GCC
>>> manual still aren't in releases) at:
>>>     https://www.aarsen.me/~arsen/final/
>>
>> Ummm.  I don't think GCC's documentation should depend on an unreleased version
>> of Texinfo.  Currently install.texi documents that version 4.7 or later is
>> required, 4.8 for "make pdf"; did I miss something in your patch set that bumps
>> this requirement?  Exactly what features do you depend on that are not yet
>> supported by an official Texinfo release?
> 
> This patch should still build with older Texinfo versions (albeit, I
> hadn't tested 4.7, I missed that requirement).  The unreleased version
> should be installed on the server building HTML documentation as it
> produces better results w.r.t clickable anchors and index-in-table
> handling.  It should not be a hard dependency, and should only degrade
> to its current state should in-dev Texinfo be missing.

Hmmm, OK.  We presently have Texinfo version 6.7 installed here, so I'll 
give that a try.  I'm not sure I'd be able to detect problems with 
incorrect HTML anchors or whatever, though.

Most people building GCC from source probably use whatever versions of 
build dependencies are provided by their OS distribution.  In our group 
we need reproducible builds for long-term support so we maintain our own 
list of dependencies and normally update to the latest stable versions 
only once every few years unless there is a hard requirement to upgrade 
some particular tool meanwhile.  I personally do not know how the 
manuals for the GCC web site are built, but it seems kind of important 
to make sure that works as intended since it's the main online resource 
for ordinary GCC users.

> It might be worth bumping the minimum, 4.7 is a version from 2004; in
> the meanwhile, I'll try a few older versions too.

I agree that it's unlikely anyone is building current GCC with a Texinfo 
version as old as 4.7 any more, and it may be that the manual doesn't 
even build properly with such an old release due to existing 
unintentional dependencies on newer features, independently of your 
patch.  If we do update the version, there's a version check in 
configure.ac and some hack for "makeinfo 4.7 brokenness" in 
doc/install.texi2html that need to be changed, as well as install.texi.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-08 18:38     ` Sandra Loosemore
@ 2023-03-08 21:22       ` Arsen Arsenović
  2023-03-09  1:09         ` Sandra Loosemore
  2023-03-09  8:28       ` Gerald Pfeifer
  1 sibling, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-08 21:22 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 4632 bytes --]


Sandra Loosemore <sandra@codesourcery.com> writes:

> On 3/8/23 02:11, Arsen Arsenović wrote:
>> Sandra Loosemore <sandra@codesourcery.com> writes:
>> 
>>> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>>>> I've rerendered the updated documentation with latest development
>>>> Texinfo (as some of the changes I made for the purposes of the GCC
>>>> manual still aren't in releases) at:
>>>>     https://www.aarsen.me/~arsen/final/
>>>
>>> Ummm.  I don't think GCC's documentation should depend on an unreleased version
>>> of Texinfo.  Currently install.texi documents that version 4.7 or later is
>>> required, 4.8 for "make pdf"; did I miss something in your patch set that bumps
>>> this requirement?  Exactly what features do you depend on that are not yet
>>> supported by an official Texinfo release?
>> This patch should still build with older Texinfo versions (albeit, I
>> hadn't tested 4.7, I missed that requirement).  The unreleased version
>> should be installed on the server building HTML documentation as it
>> produces better results w.r.t clickable anchors and index-in-table
>> handling.  It should not be a hard dependency, and should only degrade
>> to its current state should in-dev Texinfo be missing.
>
> Hmmm, OK.  We presently have Texinfo version 6.7 installed here, so I'll give
> that a try.  I'm not sure I'd be able to detect problems with incorrect HTML
> anchors or whatever, though.

As an example, let's take this link:
https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Warning-Options.html#index-Wpedantic

This should place you below the item line this index entry refers to,
and there aren't any copiable anchors (see equivalent in my render for
an example of those), both of which were often named as annoyances with
the onlinedocs while the Sphinx experiment was taking place.

A similar thing happens in the standalone and Emacs info viewers (but
that's less noticeable there since the cursor is placed in the middle of
the screen when jumping to an index entry there).  Try, for instance,
'info gcc Wpedantic' (your cursor will be placed just below the item
line).

The fix for the first of these issues should already be applied by
Gerald (in the reordering commits, IIRC at least, save for one that I
created later because someone snuck in new "misplaced" indices), and
that fix should also fix up previous versions of Texinfo.

Even with this change, the copiable anchors will remain missing since
released Texinfo versions lack some AST transformations that enable
those.

Otherwise, manuals should work fine with older releases, unless I missed
something when refactoring @defbuiltin and removing @gols (which I do
believe are superfluous with current versions of texinfo.tex, which is
why I bumped that too).

To be clear, the anchor-related stuff is entirely specific to HTML
output.

> Most people building GCC from source probably use whatever versions of build
> dependencies are provided by their OS distribution.  In our group we need
> reproducible builds for long-term support so we maintain our own list of
> dependencies and normally update to the latest stable versions only once every
> few years unless there is a hard requirement to upgrade some particular tool
> meanwhile.  I personally do not know how the manuals for the GCC web site are
> built, but it seems kind of important to make sure that works as intended since
> it's the main online resource for ordinary GCC users.

Yes, I can get behind this sentiment too.  I don't mean to impose a hard
dependency on the bleeding edge of Texinfo.  My target was indeed the
GCC website and ordinary users.

>> It might be worth bumping the minimum, 4.7 is a version from 2004; in
>> the meanwhile, I'll try a few older versions too.
>
> I agree that it's unlikely anyone is building current GCC with a Texinfo
> version as old as 4.7 any more, and it may be that the manual doesn't even
> build properly with such an old release due to existing unintentional
> dependencies on newer features, independently of your patch.  If we do update
> the version, there's a version check in configure.ac and some hack for
> "makeinfo 4.7 brokenness" in doc/install.texi2html that need to be changed, as
> well as install.texi.

FWIW, I (briefly) tested with Texinfo 6.0, and output seems okay.  On
5.0, I got a few warnings, but I think even 6.0 is apt considering its
age.  I haven't given it a proper scrutiny, though (workdays are busy
this time of year..).

> -Sandra

Thanks, have a lovely evening.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-08 21:22       ` Arsen Arsenović
@ 2023-03-09  1:09         ` Sandra Loosemore
  2023-03-09  1:19           ` Andrew Pinski
  2023-03-09 10:22           ` Arsen Arsenović
  0 siblings, 2 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-09  1:09 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

On 3/8/23 14:22, Arsen Arsenović wrote:
> 
> Sandra Loosemore <sandra@codesourcery.com> writes:
> 
>> On 3/8/23 02:11, Arsen Arsenović wrote:
>>> Sandra Loosemore <sandra@codesourcery.com> writes:
>>>
>>>> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>>>>> I've rerendered the updated documentation with latest development
>>>>> Texinfo (as some of the changes I made for the purposes of the GCC
>>>>> manual still aren't in releases) at:
>>>>>      https://www.aarsen.me/~arsen/final/
>>>>
>>>> Ummm.  I don't think GCC's documentation should depend on an unreleased version
>>>> of Texinfo.  Currently install.texi documents that version 4.7 or later is
>>>> required, 4.8 for "make pdf"; did I miss something in your patch set that bumps
>>>> this requirement?  Exactly what features do you depend on that are not yet
>>>> supported by an official Texinfo release?
>>> This patch should still build with older Texinfo versions (albeit, I
>>> hadn't tested 4.7, I missed that requirement).  The unreleased version
>>> should be installed on the server building HTML documentation as it
>>> produces better results w.r.t clickable anchors and index-in-table
>>> handling.  It should not be a hard dependency, and should only degrade
>>> to its current state should in-dev Texinfo be missing.
>>
>> Hmmm, OK.  We presently have Texinfo version 6.7 installed here, so I'll give
>> that a try.  I'm not sure I'd be able to detect problems with incorrect HTML
>> anchors or whatever, though.
> 
> As an example, let's take this link:
> https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Warning-Options.html#index-Wpedantic
> 
> This should place you below the item line this index entry refers to,
> and there aren't any copiable anchors (see equivalent in my render for
> an example of those), both of which were often named as annoyances with
> the onlinedocs while the Sphinx experiment was taking place.
> 
> A similar thing happens in the standalone and Emacs info viewers (but
> that's less noticeable there since the cursor is placed in the middle of
> the screen when jumping to an index entry there).  Try, for instance,
> 'info gcc Wpedantic' (your cursor will be placed just below the item
> line).
> 
> The fix for the first of these issues should already be applied by
> Gerald (in the reordering commits, IIRC at least, save for one that I
> created later because someone snuck in new "misplaced" indices), and
> that fix should also fix up previous versions of Texinfo.
> 
> Even with this change, the copiable anchors will remain missing since
> released Texinfo versions lack some AST transformations that enable
> those.

OK, I can see the difference there between the current online docs, the 
set you produced with the unreleased Texinfo support, and what I got 
building with Texinfo 6.7.

> Otherwise, manuals should work fine with older releases, unless I missed
> something when refactoring @defbuiltin and removing @gols (which I do
> believe are superfluous with current versions of texinfo.tex, which is
> why I bumped that too).

I did a few spot-checks here and there of those changes.  I saw a couple 
of line break problems but they turn out to be due to existing errors in 
the .texi files that were not introduced by your (mostly mechanical) 
changes.

>> Most people building GCC from source probably use whatever versions of build
>> dependencies are provided by their OS distribution.  In our group we need
>> reproducible builds for long-term support so we maintain our own list of
>> dependencies and normally update to the latest stable versions only once every
>> few years unless there is a hard requirement to upgrade some particular tool
>> meanwhile.  I personally do not know how the manuals for the GCC web site are
>> built, but it seems kind of important to make sure that works as intended since
>> it's the main online resource for ordinary GCC users.
> 
> Yes, I can get behind this sentiment too.  I don't mean to impose a hard
> dependency on the bleeding edge of Texinfo.  My target was indeed the
> GCC website and ordinary users.
> 
>>> It might be worth bumping the minimum, 4.7 is a version from 2004; in
>>> the meanwhile, I'll try a few older versions too.
>>
>> I agree that it's unlikely anyone is building current GCC with a Texinfo
>> version as old as 4.7 any more, and it may be that the manual doesn't even
>> build properly with such an old release due to existing unintentional
>> dependencies on newer features, independently of your patch.  If we do update
>> the version, there's a version check in configure.ac and some hack for
>> "makeinfo 4.7 brokenness" in doc/install.texi2html that need to be changed, as
>> well as install.texi.
> 
> FWIW, I (briefly) tested with Texinfo 6.0, and output seems okay.  On
> 5.0, I got a few warnings, but I think even 6.0 is apt considering its
> age.  I haven't given it a proper scrutiny, though (workdays are busy
> this time of year..).

Texinfo 6.0 was released in 2015, 5.0 in 2013.  FWIW, Trusty Tahr (the 
current oldest Ubuntu LTS release) has 5.2.  4.7 was released in 2004, I 
don't know why anyone would still be trying to use that unless it's 
needed for building legacy code from the same era.

I think we could do away with the requirement for a specific minimum 
version, and make install.texi say something similar to what it says for 
e.g. awk -- just use a "recent" version, and note that new versions 
produce better output and very old ones may produce diagnostics.  I'll 
add that do my own todo list.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-09  1:09         ` Sandra Loosemore
@ 2023-03-09  1:19           ` Andrew Pinski
  2023-03-09  8:26             ` Richard Biener
  2023-03-09 10:22           ` Arsen Arsenović
  1 sibling, 1 reply; 59+ messages in thread
From: Andrew Pinski @ 2023-03-09  1:19 UTC (permalink / raw)
  To: Sandra Loosemore
  Cc: Arsen Arsenović, gcc-patches, Gerald Pfeifer, Joseph Myers

On Wed, Mar 8, 2023 at 5:09 PM Sandra Loosemore <sandra@codesourcery.com> wrote:
>
> On 3/8/23 14:22, Arsen Arsenović wrote:
> >
> > Sandra Loosemore <sandra@codesourcery.com> writes:
> >
> >> On 3/8/23 02:11, Arsen Arsenović wrote:
> >>> Sandra Loosemore <sandra@codesourcery.com> writes:
> >>>
> >>>> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
> >>>>> I've rerendered the updated documentation with latest development
> >>>>> Texinfo (as some of the changes I made for the purposes of the GCC
> >>>>> manual still aren't in releases) at:
> >>>>>      https://www.aarsen.me/~arsen/final/
> >>>>
> >>>> Ummm.  I don't think GCC's documentation should depend on an unreleased version
> >>>> of Texinfo.  Currently install.texi documents that version 4.7 or later is
> >>>> required, 4.8 for "make pdf"; did I miss something in your patch set that bumps
> >>>> this requirement?  Exactly what features do you depend on that are not yet
> >>>> supported by an official Texinfo release?
> >>> This patch should still build with older Texinfo versions (albeit, I
> >>> hadn't tested 4.7, I missed that requirement).  The unreleased version
> >>> should be installed on the server building HTML documentation as it
> >>> produces better results w.r.t clickable anchors and index-in-table
> >>> handling.  It should not be a hard dependency, and should only degrade
> >>> to its current state should in-dev Texinfo be missing.
> >>
> >> Hmmm, OK.  We presently have Texinfo version 6.7 installed here, so I'll give
> >> that a try.  I'm not sure I'd be able to detect problems with incorrect HTML
> >> anchors or whatever, though.
> >
> > As an example, let's take this link:
> > https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Warning-Options.html#index-Wpedantic
> >
> > This should place you below the item line this index entry refers to,
> > and there aren't any copiable anchors (see equivalent in my render for
> > an example of those), both of which were often named as annoyances with
> > the onlinedocs while the Sphinx experiment was taking place.
> >
> > A similar thing happens in the standalone and Emacs info viewers (but
> > that's less noticeable there since the cursor is placed in the middle of
> > the screen when jumping to an index entry there).  Try, for instance,
> > 'info gcc Wpedantic' (your cursor will be placed just below the item
> > line).
> >
> > The fix for the first of these issues should already be applied by
> > Gerald (in the reordering commits, IIRC at least, save for one that I
> > created later because someone snuck in new "misplaced" indices), and
> > that fix should also fix up previous versions of Texinfo.
> >
> > Even with this change, the copiable anchors will remain missing since
> > released Texinfo versions lack some AST transformations that enable
> > those.
>
> OK, I can see the difference there between the current online docs, the
> set you produced with the unreleased Texinfo support, and what I got
> building with Texinfo 6.7.
>
> > Otherwise, manuals should work fine with older releases, unless I missed
> > something when refactoring @defbuiltin and removing @gols (which I do
> > believe are superfluous with current versions of texinfo.tex, which is
> > why I bumped that too).
>
> I did a few spot-checks here and there of those changes.  I saw a couple
> of line break problems but they turn out to be due to existing errors in
> the .texi files that were not introduced by your (mostly mechanical)
> changes.
>
> >> Most people building GCC from source probably use whatever versions of build
> >> dependencies are provided by their OS distribution.  In our group we need
> >> reproducible builds for long-term support so we maintain our own list of
> >> dependencies and normally update to the latest stable versions only once every
> >> few years unless there is a hard requirement to upgrade some particular tool
> >> meanwhile.  I personally do not know how the manuals for the GCC web site are
> >> built, but it seems kind of important to make sure that works as intended since
> >> it's the main online resource for ordinary GCC users.
> >
> > Yes, I can get behind this sentiment too.  I don't mean to impose a hard
> > dependency on the bleeding edge of Texinfo.  My target was indeed the
> > GCC website and ordinary users.
> >
> >>> It might be worth bumping the minimum, 4.7 is a version from 2004; in
> >>> the meanwhile, I'll try a few older versions too.
> >>
> >> I agree that it's unlikely anyone is building current GCC with a Texinfo
> >> version as old as 4.7 any more, and it may be that the manual doesn't even
> >> build properly with such an old release due to existing unintentional
> >> dependencies on newer features, independently of your patch.  If we do update
> >> the version, there's a version check in configure.ac and some hack for
> >> "makeinfo 4.7 brokenness" in doc/install.texi2html that need to be changed, as
> >> well as install.texi.
> >
> > FWIW, I (briefly) tested with Texinfo 6.0, and output seems okay.  On
> > 5.0, I got a few warnings, but I think even 6.0 is apt considering its
> > age.  I haven't given it a proper scrutiny, though (workdays are busy
> > this time of year..).
>
> Texinfo 6.0 was released in 2015, 5.0 in 2013.  FWIW, Trusty Tahr (the
> current oldest Ubuntu LTS release) has 5.2.  4.7 was released in 2004, I
> don't know why anyone would still be trying to use that unless it's
> needed for building legacy code from the same era.

CentOS/RHEL 7 includes texinfo 5.1. That is the oldest distro I think
mostly supports building with.
That is the oldest I do builds of GCC with even for the trunk.

Thanks,
Andrew

>
> I think we could do away with the requirement for a specific minimum
> version, and make install.texi say something similar to what it says for
> e.g. awk -- just use a "recent" version, and note that new versions
> produce better output and very old ones may produce diagnostics.  I'll
> add that do my own todo list.
>
> -Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-02-23 10:27 ` [PATCH v2 1/5] docs: Create Indices appendix Arsen Arsenović
@ 2023-03-09  3:16   ` Sandra Loosemore
  2023-03-09 10:12     ` Arsen Arsenović
  2023-03-09 20:38     ` Arsen Arsenović
  0 siblings, 2 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-09  3:16 UTC (permalink / raw)
  To: Arsen Arsenović, gcc-patches; +Cc: Gerald Pfeifer, Joseph Myers

On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
> The GCC manual has multiple indices.  By creating an appendix which
> lists them, we help makeinfo present a more accessible way for the
> reader to see all the indices.
> 
> gcc/ChangeLog:
> 
> 	* doc/gcc.texi: Add the Indices appendix, to make texinfo
> 	generate nice indices overview page.
> 	(@copying): Move "This file documents the use of the GNU
> 	compilers" into @copying.  Add quotations around cover texts.


I guess this patch is OK and is necessary to smooth over some misfeatures
in newer versions of Texinfo.  In particular, comparing your sample output
https://www.aarsen.me/~arsen/final/gcc.html/index.html

to my own fresh Texinfo 6.7-generated version with your patches applied, 
and the existing online documention like

https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/index.html

the order of the "Short Table of Contents" and longer "Table of 
Contents" have been switched, so that in the new version you have to 
scroll all the way down to the bottom of the page (ugh) to click on 
"Option Index".  (Frankly, this seems like a misfeature; the point of 
having a "Short Table of Contents" is *not* to have to page through the 
long one to find a particular chapter.)

I guess that is a Texinfo change?  gcc.texi still has:

@summarycontents
@contents

in that order.

OTOH, I see that in your new version there is now a line with links 
[Contents][Index] before the Introduction.  If adding this new appendix 
makes the [Index] link point at the indices, I think it is OK, although 
I'm still worried that the overall effect (even without the new version 
of Texinfo) is making the indices harder to find.

I wonder, could we add something to the Introduction text like

Tip: This manual is very long.  If you're looking for something in 
particular, try searching the @ref{Option Index} or @ref{Concept and 
Symbol Index}.

???

-Sandra


^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-09  1:19           ` Andrew Pinski
@ 2023-03-09  8:26             ` Richard Biener
  2023-03-09 23:35               ` Sandra Loosemore
  0 siblings, 1 reply; 59+ messages in thread
From: Richard Biener @ 2023-03-09  8:26 UTC (permalink / raw)
  To: Andrew Pinski
  Cc: Sandra Loosemore, Arsen Arsenović,
	gcc-patches, Gerald Pfeifer, Joseph Myers

On Thu, Mar 9, 2023 at 2:20 AM Andrew Pinski via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> On Wed, Mar 8, 2023 at 5:09 PM Sandra Loosemore <sandra@codesourcery.com> wrote:
> >
> > On 3/8/23 14:22, Arsen Arsenović wrote:
> > >
> > > Sandra Loosemore <sandra@codesourcery.com> writes:
> > >
> > >> On 3/8/23 02:11, Arsen Arsenović wrote:
> > >>> Sandra Loosemore <sandra@codesourcery.com> writes:
> > >>>
> > >>>> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
> > >>>>> I've rerendered the updated documentation with latest development
> > >>>>> Texinfo (as some of the changes I made for the purposes of the GCC
> > >>>>> manual still aren't in releases) at:
> > >>>>>      https://www.aarsen.me/~arsen/final/
> > >>>>
> > >>>> Ummm.  I don't think GCC's documentation should depend on an unreleased version
> > >>>> of Texinfo.  Currently install.texi documents that version 4.7 or later is
> > >>>> required, 4.8 for "make pdf"; did I miss something in your patch set that bumps
> > >>>> this requirement?  Exactly what features do you depend on that are not yet
> > >>>> supported by an official Texinfo release?
> > >>> This patch should still build with older Texinfo versions (albeit, I
> > >>> hadn't tested 4.7, I missed that requirement).  The unreleased version
> > >>> should be installed on the server building HTML documentation as it
> > >>> produces better results w.r.t clickable anchors and index-in-table
> > >>> handling.  It should not be a hard dependency, and should only degrade
> > >>> to its current state should in-dev Texinfo be missing.
> > >>
> > >> Hmmm, OK.  We presently have Texinfo version 6.7 installed here, so I'll give
> > >> that a try.  I'm not sure I'd be able to detect problems with incorrect HTML
> > >> anchors or whatever, though.
> > >
> > > As an example, let's take this link:
> > > https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Warning-Options.html#index-Wpedantic
> > >
> > > This should place you below the item line this index entry refers to,
> > > and there aren't any copiable anchors (see equivalent in my render for
> > > an example of those), both of which were often named as annoyances with
> > > the onlinedocs while the Sphinx experiment was taking place.
> > >
> > > A similar thing happens in the standalone and Emacs info viewers (but
> > > that's less noticeable there since the cursor is placed in the middle of
> > > the screen when jumping to an index entry there).  Try, for instance,
> > > 'info gcc Wpedantic' (your cursor will be placed just below the item
> > > line).
> > >
> > > The fix for the first of these issues should already be applied by
> > > Gerald (in the reordering commits, IIRC at least, save for one that I
> > > created later because someone snuck in new "misplaced" indices), and
> > > that fix should also fix up previous versions of Texinfo.
> > >
> > > Even with this change, the copiable anchors will remain missing since
> > > released Texinfo versions lack some AST transformations that enable
> > > those.
> >
> > OK, I can see the difference there between the current online docs, the
> > set you produced with the unreleased Texinfo support, and what I got
> > building with Texinfo 6.7.
> >
> > > Otherwise, manuals should work fine with older releases, unless I missed
> > > something when refactoring @defbuiltin and removing @gols (which I do
> > > believe are superfluous with current versions of texinfo.tex, which is
> > > why I bumped that too).
> >
> > I did a few spot-checks here and there of those changes.  I saw a couple
> > of line break problems but they turn out to be due to existing errors in
> > the .texi files that were not introduced by your (mostly mechanical)
> > changes.
> >
> > >> Most people building GCC from source probably use whatever versions of build
> > >> dependencies are provided by their OS distribution.  In our group we need
> > >> reproducible builds for long-term support so we maintain our own list of
> > >> dependencies and normally update to the latest stable versions only once every
> > >> few years unless there is a hard requirement to upgrade some particular tool
> > >> meanwhile.  I personally do not know how the manuals for the GCC web site are
> > >> built, but it seems kind of important to make sure that works as intended since
> > >> it's the main online resource for ordinary GCC users.
> > >
> > > Yes, I can get behind this sentiment too.  I don't mean to impose a hard
> > > dependency on the bleeding edge of Texinfo.  My target was indeed the
> > > GCC website and ordinary users.
> > >
> > >>> It might be worth bumping the minimum, 4.7 is a version from 2004; in
> > >>> the meanwhile, I'll try a few older versions too.
> > >>
> > >> I agree that it's unlikely anyone is building current GCC with a Texinfo
> > >> version as old as 4.7 any more, and it may be that the manual doesn't even
> > >> build properly with such an old release due to existing unintentional
> > >> dependencies on newer features, independently of your patch.  If we do update
> > >> the version, there's a version check in configure.ac and some hack for
> > >> "makeinfo 4.7 brokenness" in doc/install.texi2html that need to be changed, as
> > >> well as install.texi.
> > >
> > > FWIW, I (briefly) tested with Texinfo 6.0, and output seems okay.  On
> > > 5.0, I got a few warnings, but I think even 6.0 is apt considering its
> > > age.  I haven't given it a proper scrutiny, though (workdays are busy
> > > this time of year..).
> >
> > Texinfo 6.0 was released in 2015, 5.0 in 2013.  FWIW, Trusty Tahr (the
> > current oldest Ubuntu LTS release) has 5.2.  4.7 was released in 2004, I
> > don't know why anyone would still be trying to use that unless it's
> > needed for building legacy code from the same era.
>
> CentOS/RHEL 7 includes texinfo 5.1. That is the oldest distro I think
> mostly supports building with.
> That is the oldest I do builds of GCC with even for the trunk.

SLES 12 has texinfo 4.13a, SLES 15 has texinfo 6.5.  We still provide
up-to-date GCC for SLES 12 but we can probably manage in some ways
when the texinfo requirement gets bumped.

Richard.

> Thanks,
> Andrew
>
> >
> > I think we could do away with the requirement for a specific minimum
> > version, and make install.texi say something similar to what it says for
> > e.g. awk -- just use a "recent" version, and note that new versions
> > produce better output and very old ones may produce diagnostics.  I'll
> > add that do my own todo list.
> >
> > -Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-08 18:38     ` Sandra Loosemore
  2023-03-08 21:22       ` Arsen Arsenović
@ 2023-03-09  8:28       ` Gerald Pfeifer
  1 sibling, 0 replies; 59+ messages in thread
From: Gerald Pfeifer @ 2023-03-09  8:28 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: Arsen Arsenović, gcc-patches, Joseph Myers

On Wed, 8 Mar 2023, Sandra Loosemore wrote:
> I personally do not know how the manuals for the GCC web site are built

gcc.gnu.org has texinfo 6.5. (It's a RHEL 8.7 system.)

> If we do update the version, there's a version check in configure.ac and 
> some hack for "makeinfo 4.7 brokenness" in doc/install.texi2html that 
> need to be changed, as well as install.texi.

The note in doc/install.texi2html isn't specific to version 4.7. Rather 
it's about a design decision made then to encode dashes as _002d which
essentially solved a non-issue and isn't practial at all.

Good point - I'll see to update that comment.

Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-09  3:16   ` Sandra Loosemore
@ 2023-03-09 10:12     ` Arsen Arsenović
  2023-03-09 20:38     ` Arsen Arsenović
  1 sibling, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-09 10:12 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 2369 bytes --]


Sandra Loosemore <sandra@codesourcery.com> writes:

> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>> The GCC manual has multiple indices.  By creating an appendix which
>> lists them, we help makeinfo present a more accessible way for the
>> reader to see all the indices.
>> gcc/ChangeLog:
>> 	* doc/gcc.texi: Add the Indices appendix, to make texinfo
>> 	generate nice indices overview page.
>> 	(@copying): Move "This file documents the use of the GNU
>> 	compilers" into @copying.  Add quotations around cover texts.
>
>
> I guess this patch is OK and is necessary to smooth over some misfeatures
> in newer versions of Texinfo.  In particular, comparing your sample output
> https://www.aarsen.me/~arsen/final/gcc.html/index.html
>
> to my own fresh Texinfo 6.7-generated version with your patches applied, and
> the existing online documention like
>
> https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/index.html
>
> the order of the "Short Table of Contents" and longer "Table of Contents" have
> been switched, so that in the new version you have to scroll all the way down
> to the bottom of the page (ugh) to click on "Option Index".  (Frankly, this
> seems like a misfeature; the point of having a "Short Table of Contents" is
> *not* to have to page through the long one to find a particular chapter.)
>
> I guess that is a Texinfo change?  gcc.texi still has:
>
> @summarycontents
> @contents
>
> in that order.

Hm, I hadn't noticed that..  That is odd.  I'll figure out why this
happens later today.  Thanks for raising this to my attention.

> OTOH, I see that in your new version there is now a line with links
> [Contents][Index] before the Introduction.  If adding this new appendix makes
> the [Index] link point at the indices, I think it is OK, although I'm still
> worried that the overall effect (even without the new version of Texinfo) is
> making the indices harder to find.
>
> I wonder, could we add something to the Introduction text like
>
> Tip: This manual is very long.  If you're looking for something in particular,
> try searching the @ref{Option Index} or @ref{Concept and Symbol Index}.
>
> ???

I think this is a good idea in either case.  It should certainly help
users unaccustomed to Texinfo in locating things quickly.

> -Sandra


-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-09  1:09         ` Sandra Loosemore
  2023-03-09  1:19           ` Andrew Pinski
@ 2023-03-09 10:22           ` Arsen Arsenović
  1 sibling, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-09 10:22 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 3430 bytes --]


Sandra Loosemore <sandra@codesourcery.com> writes:

>> As an example, let's take this link:
>> https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Warning-Options.html#index-Wpedantic
>> This should place you below the item line this index entry refers to,
>> and there aren't any copiable anchors (see equivalent in my render for
>> an example of those), both of which were often named as annoyances with
>> the onlinedocs while the Sphinx experiment was taking place.
>> A similar thing happens in the standalone and Emacs info viewers (but
>> that's less noticeable there since the cursor is placed in the middle of
>> the screen when jumping to an index entry there).  Try, for instance,
>> 'info gcc Wpedantic' (your cursor will be placed just below the item
>> line).
>> The fix for the first of these issues should already be applied by
>> Gerald (in the reordering commits, IIRC at least, save for one that I
>> created later because someone snuck in new "misplaced" indices), and
>> that fix should also fix up previous versions of Texinfo.
>> Even with this change, the copiable anchors will remain missing since
>> released Texinfo versions lack some AST transformations that enable
>> those.
>
> OK, I can see the difference there between the current online docs, the set you
> produced with the unreleased Texinfo support, and what I got building with
> Texinfo 6.7.
>
>> Otherwise, manuals should work fine with older releases, unless I missed
>> something when refactoring @defbuiltin and removing @gols (which I do
>> believe are superfluous with current versions of texinfo.tex, which is
>> why I bumped that too).
>
> I did a few spot-checks here and there of those changes.  I saw a couple of
> line break problems but they turn out to be due to existing errors in the .texi
> files that were not introduced by your (mostly mechanical) changes.

Thanks.  I tried to check all usage sites of @gol in PDF output too, to
make sure its removal didn't have a negative impact, but I only tested
new makeinfo and the texinfo.tex I pushed to my branch (2023-01-17.19).

I expect the version of makeinfo to have no impact for that output,
since it should just offload to texi2dvi.

>> FWIW, I (briefly) tested with Texinfo 6.0, and output seems okay.  On
>> 5.0, I got a few warnings, but I think even 6.0 is apt considering its
>> age.  I haven't given it a proper scrutiny, though (workdays are busy
>> this time of year..).
>
> Texinfo 6.0 was released in 2015, 5.0 in 2013.  FWIW, Trusty Tahr (the current
> oldest Ubuntu LTS release) has 5.2.  4.7 was released in 2004, I don't know why
> anyone would still be trying to use that unless it's needed for building legacy
> code from the same era.

Heh, I hadn't realized how far back LTS releases go..  I don't think
there's any new language constructs that the GCC manual could make use
of currently, so it shouldn't be too difficult to retain at least a
"builds with diagnostics" level of support for those versions.

> I think we could do away with the requirement for a specific minimum version,
> and make install.texi say something similar to what it says for e.g. awk --
> just use a "recent" version, and note that new versions produce better output
> and very old ones may produce diagnostics.  I'll add that do my own todo list.

That seems reasonable, thanks.

> -Sandra

-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-09  3:16   ` Sandra Loosemore
  2023-03-09 10:12     ` Arsen Arsenović
@ 2023-03-09 20:38     ` Arsen Arsenović
  2023-03-11  1:12       ` Sandra Loosemore
  1 sibling, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-09 20:38 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers


[-- Attachment #1.1: Type: text/plain, Size: 1644 bytes --]


Sandra Loosemore <sandra@codesourcery.com> writes:

> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>> The GCC manual has multiple indices.  By creating an appendix which
>> lists them, we help makeinfo present a more accessible way for the
>> reader to see all the indices.
>> gcc/ChangeLog:
>> 	* doc/gcc.texi: Add the Indices appendix, to make texinfo
>> 	generate nice indices overview page.
>> 	(@copying): Move "This file documents the use of the GNU
>> 	compilers" into @copying.  Add quotations around cover texts.
>
>
> I guess this patch is OK and is necessary to smooth over some misfeatures
> in newer versions of Texinfo.  In particular, comparing your sample output
> https://www.aarsen.me/~arsen/final/gcc.html/index.html
>
> to my own fresh Texinfo 6.7-generated version with your patches applied, and
> the existing online documention like
>
> https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/index.html
>
> the order of the "Short Table of Contents" and longer "Table of Contents" have
> been switched, so that in the new version you have to scroll all the way down
> to the bottom of the page (ugh) to click on "Option Index".  (Frankly, this
> seems like a misfeature; the point of having a "Short Table of Contents" is
> *not* to have to page through the long one to find a particular chapter.)
>
> I guess that is a Texinfo change?  gcc.texi still has:
>
> @summarycontents
> @contents
>
> in that order.

Found the change.  HTML got support for CONTENTS_OUTPUT_LOCATION, which
defaults to after_top, which ignores the inline location of these
elements.  Here's a patch:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: [PATCH] update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline --]
[-- Type: text/x-patch, Size: 1370 bytes --]

From 0a0c9469301fb25c4b420a1ed4e381f5ea921d07 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
Date: Thu, 9 Mar 2023 21:44:29 +0100
Subject: [PATCH] update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline

maintainer-scripts/ChangeLog:

	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
	order to put @shortcontents above contents. See
	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
	gcc-patches.
---
 maintainer-scripts/update_web_docs_git | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/maintainer-scripts/update_web_docs_git b/maintainer-scripts/update_web_docs_git
index 9ded1744df4..c9f14d1a4d1 100755
--- a/maintainer-scripts/update_web_docs_git
+++ b/maintainer-scripts/update_web_docs_git
@@ -169,7 +169,7 @@ for file in $MANUALS; do
     if [ "$file" = "gnat_ugn" ]; then
       includes="$includes -I gcc/gcc/ada -I gcc/gcc/ada/doc/gnat_ugn"
     fi
-    makeinfo --html --css-ref $CSS $includes -o ${file} ${filename}
+    makeinfo --html -c CONTENTS_OUTPUT_LOCATION=inline --css-ref $CSS $includes -o ${file} ${filename}
     tar cf ${file}-html.tar ${file}/*.html
     texi2dvi $includes -o ${file}.dvi ${filename} </dev/null >/dev/null && dvips -o ${file}.ps ${file}.dvi
     texi2pdf $includes -o ${file}.pdf ${filename} </dev/null
-- 
2.39.2


[-- Attachment #1.3: Type: text/plain, Size: 802 bytes --]


I pushed the updated docs, and added that commit to my branch (as well
as rebasing it, as always).

> OTOH, I see that in your new version there is now a line with links
> [Contents][Index] before the Introduction.  If adding this new appendix makes
> the [Index] link point at the indices, I think it is OK, although I'm still
> worried that the overall effect (even without the new version of Texinfo) is
> making the indices harder to find.
>
> I wonder, could we add something to the Introduction text like
>
> Tip: This manual is very long.  If you're looking for something in particular,
> try searching the @ref{Option Index} or @ref{Concept and Symbol Index}.
>
> ???

Even with the above fixed, I think it'd be nice to add this text.

> -Sandra


-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-09  8:26             ` Richard Biener
@ 2023-03-09 23:35               ` Sandra Loosemore
  2023-03-10  8:50                 ` Iain Sandoe
  0 siblings, 1 reply; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-09 23:35 UTC (permalink / raw)
  To: Richard Biener, Andrew Pinski
  Cc: Sandra Loosemore, Arsen Arsenović,
	gcc-patches, Gerald Pfeifer, Joseph Myers

On 3/9/23 01:26, Richard Biener wrote:

> SLES 12 has texinfo 4.13a, SLES 15 has texinfo 6.5.  We still provide
> up-to-date GCC for SLES 12 but we can probably manage in some ways
> when the texinfo requirement gets bumped.

OK, this seems to be the oldest version anyone admits to actually using. 
  I built the manual with Arsen's patches using 4.13a; the build was 
successful, and I didn't see any obvious issues with the @gol removal in 
either the PDF or HTML output, so I think we are OK for backward 
compatibility.

I will work up a patch to remove the references to version 4.7 and 
replace it with some generic language as I suggested earlier, that won't 
be so prone to bit rot.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 3/5] doc: Add @defbuiltin family of helpers, set documentlanguage
  2023-02-23 10:27 ` [PATCH v2 3/5] doc: Add @defbuiltin family of helpers, set documentlanguage Arsen Arsenović
@ 2023-03-09 23:50   ` Sandra Loosemore
  0 siblings, 0 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-09 23:50 UTC (permalink / raw)
  To: Arsen Arsenović, gcc-patches; +Cc: Gerald Pfeifer, Joseph Myers

On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
> The @defbuiltin{,x} macros are convenience macros for the often-repeated
> task of defining a built-in function in extend.texi.  Usage of this
> macro should lead to a higher degree of consistency across pieces of
> text written by different people, and provide a better reading
> experience, as they prevent easy-to-make errors, like forgetting index
> entries for these functions.
> 
> The documentlanguage omission was spotted by one of the people I asked
> to "test drive" the updated manual, and so, it was added accordingly.
> 
> gcc/ChangeLog:
> 
> 	* doc/gcc.texi: Set document language to en_US.
> 	(@copying): Wrap cover tests @quotation, move description of
> 	manual in.
> 	* doc/include/gcc-common.texi: Add @defbuiltin(x), @enddefbuiltin
> 	for defining built-in functions.
> 	* doc/extend.texi: Fix copyright notice comment, switch to using
> 	@defbuiltin for built-in function definitions.
> 	(Object Size Checking): Add subsubsection for formatted output
> 	function (printf et al.) checking.

This is OK, but I would like to see it split into two separate commits, 
one for the @defbuiltin parts and one for the other miscellaneous tweaks.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-02-23 10:27 ` [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias Arsen Arsenović
@ 2023-03-09 23:55   ` Sandra Loosemore
  2023-03-10  0:17     ` Gerald Pfeifer
                       ` (2 more replies)
  0 siblings, 3 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-09 23:55 UTC (permalink / raw)
  To: Arsen Arsenović, gcc-patches; +Cc: Gerald Pfeifer, Joseph Myers

On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
> The @gol macro appears to have existed as a workaround for a bug in old
> versions of makeinfo and/or texinfo.tex, where they would, in some types
> of output, fail to emit line breaks in @gccoptlists.  After updating
> texinfo.tex, I noticed that this behavior appears to no longer be
> exhibited, instead, both acted correctly and inserted newlines.  The
> (groff) manual output also appears unaffected.
> 
> gcc/ChangeLog:
> 
> 	* doc/include/texinfo.tex: Update to 2023-01-17.19.
> 	* doc/implement-c.texi: Remove usage of @gol.
> 	* doc/invoke.texi: Ditto.
> 	* doc/sourcebuild.texi: Ditto.
> 	* doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
> 	texinfo.tex versions, the bug it was working around appears to
> 	be gone.
> 
> gcc/fortran/ChangeLog:
> 
> 	* invoke.texi: Remove usages of @gol.
> 	* intrinsic.texi: Ditto.

This is OK, but I'd like to see this patch split into two separate 
commits as well -- one for the texinfo.tex import, and one for the @gol 
changes.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 5/5] update_web_docs_git: Update CSS reference to new manual CSS
  2023-02-23 10:27 ` [PATCH v2 5/5] update_web_docs_git: Update CSS reference to new manual CSS Arsen Arsenović
@ 2023-03-10  0:07   ` Sandra Loosemore
  2023-03-10 13:00     ` Arsen Arsenović
  0 siblings, 1 reply; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-10  0:07 UTC (permalink / raw)
  To: Arsen Arsenović, gcc-patches; +Cc: Gerald Pfeifer, Joseph Myers

On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
> maintainer-scripts/ChangeLog:
> 
> 	* update_web_docs_git (CSS): Update CSS reference to point to
> 	/texinfo-manuals.css.

I'm going to defer to Gerald on this one, since I am ignorant of how 
documents are produced for the GCC web site.  IIUC the online docs are 
built on a system with Texinfo 6.5; I don't know if it's reasonable to 
update that, otherwise I think somebody ought to give it a dry run to 
make sure that the style sheet does reasonable things with Texinfo 6.5 
output.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-09 23:55   ` Sandra Loosemore
@ 2023-03-10  0:17     ` Gerald Pfeifer
  2023-03-10 10:33       ` Thomas Schwinge
  2023-03-10 12:48     ` Arsen Arsenović
  2023-03-10 15:49     ` Arsen Arsenović
  2 siblings, 1 reply; 59+ messages in thread
From: Gerald Pfeifer @ 2023-03-10  0:17 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: Arsen Arsenović, gcc-patches, Joseph Myers

On Thu, 9 Mar 2023, Sandra Loosemore wrote:
> This is OK, but I'd like to see this patch split into two separate 
> commits as well -- one for the texinfo.tex import, and one for the @gol 
> changes.

I believe Arsen does not have git write access.

Arsen, if that is indeed the case, I offer to push these two commits for
you if you send them by e-mail (as two attachments).

Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-09 23:35               ` Sandra Loosemore
@ 2023-03-10  8:50                 ` Iain Sandoe
  2023-03-10 17:51                   ` Sandra Loosemore
  0 siblings, 1 reply; 59+ messages in thread
From: Iain Sandoe @ 2023-03-10  8:50 UTC (permalink / raw)
  To: Sandra Loosemore
  Cc: Richard Biener, Andrew Pinski, Sandra Loosemore,
	Arsen Arsenović,
	GCC Patches, Gerald Pfeifer, Joseph Myers

Hi all,

> On 9 Mar 2023, at 23:35, Sandra Loosemore via Gcc-patches <gcc-patches@gcc.gnu.org> wrote:
> 
> On 3/9/23 01:26, Richard Biener wrote:
> 
>> SLES 12 has texinfo 4.13a, SLES 15 has texinfo 6.5.  We still provide
>> up-to-date GCC for SLES 12 but we can probably manage in some ways
>> when the texinfo requirement gets bumped.
> 
> OK, this seems to be the oldest version anyone admits to actually using.  I built the manual with Arsen's patches using 4.13a; the build was successful, and I didn't see any obvious issues with the @gol removal in either the PDF or HTML output, so I think we are OK for backward compatibility.

FWIW macOS/Darwin (as delivered by Apple) is stuck on 4.8 (and, presumably, very unlikely to advance), but I would expect most macOS FOSS users have something newer installed, either self-built or via macposrts/homebrew etc. so the “admits to actually using” applies here too I think (personally, I am using 6.7 but not for any special reason other than it was current when I updated  my local toolset).  So I think Darwin can also manage with a newer requirement.

thanks
Iain

> I will work up a patch to remove the references to version 4.7 and replace it with some generic language as I suggested earlier, that won't be so prone to bit rot.
> 
> -Sandra


^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-10  0:17     ` Gerald Pfeifer
@ 2023-03-10 10:33       ` Thomas Schwinge
  2023-03-10 12:49         ` Arsen Arsenović
  0 siblings, 1 reply; 59+ messages in thread
From: Thomas Schwinge @ 2023-03-10 10:33 UTC (permalink / raw)
  To: Arsen Arsenović, Gerald Pfeifer
  Cc: gcc-patches, Joseph Myers, Sandra Loosemore

Hi!

On 2023-03-10T01:17:04+0100, Gerald Pfeifer <gerald@pfeifer.com> wrote:
> On Thu, 9 Mar 2023, Sandra Loosemore wrote:
>> This is OK, but I'd like to see this patch split into two separate
>> commits as well -- one for the texinfo.tex import, and one for the @gol
>> changes.
>
> I believe Arsen does not have git write access.

Well, I guess we should fix that?  :-) I've met Arsen in person at
FOSDEM 2023, and I'm happy to vouch for his reasonable behavior.
He does have a FSF Copyright Assignment for GCC.
<https://gcc.gnu.org/gitwrite.html#authenticated>; I'm happy to act
as sponsor.


Grüße
 Thomas


> Arsen, if that is indeed the case, I offer to push these two commits for
> you if you send them by e-mail (as two attachments).
>
> Gerald
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-09 23:55   ` Sandra Loosemore
  2023-03-10  0:17     ` Gerald Pfeifer
@ 2023-03-10 12:48     ` Arsen Arsenović
  2023-03-10 15:49     ` Arsen Arsenović
  2 siblings, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-10 12:48 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1351 bytes --]

Morning,

Sandra Loosemore <sandra@codesourcery.com> writes:

> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>> The @gol macro appears to have existed as a workaround for a bug in old
>> versions of makeinfo and/or texinfo.tex, where they would, in some types
>> of output, fail to emit line breaks in @gccoptlists.  After updating
>> texinfo.tex, I noticed that this behavior appears to no longer be
>> exhibited, instead, both acted correctly and inserted newlines.  The
>> (groff) manual output also appears unaffected.
>> gcc/ChangeLog:
>> 	* doc/include/texinfo.tex: Update to 2023-01-17.19.
>> 	* doc/implement-c.texi: Remove usage of @gol.
>> 	* doc/invoke.texi: Ditto.
>> 	* doc/sourcebuild.texi: Ditto.
>> 	* doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
>> 	texinfo.tex versions, the bug it was working around appears to
>> 	be gone.
>> gcc/fortran/ChangeLog:
>> 	* invoke.texi: Remove usages of @gol.
>> 	* intrinsic.texi: Ditto.
>
> This is OK, but I'd like to see this patch split into two separate commits as
> well -- one for the texinfo.tex import, and one for the @gol changes.

Sure thing.  I'll send the updated git log in a few hours, when I split
the commits, for your review (for both of the commits).

Thanks, have a great day.

> -Sandra


-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-10 10:33       ` Thomas Schwinge
@ 2023-03-10 12:49         ` Arsen Arsenović
  2023-03-10 15:51           ` Gerald Pfeifer
  0 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-10 12:49 UTC (permalink / raw)
  To: Thomas Schwinge
  Cc: Gerald Pfeifer, gcc-patches, Joseph Myers, Sandra Loosemore

[-- Attachment #1: Type: text/plain, Size: 1448 bytes --]

Hi Gerald, Thomas,

Thomas Schwinge <thomas@codesourcery.com> writes:

> Hi!
>
> On 2023-03-10T01:17:04+0100, Gerald Pfeifer <gerald@pfeifer.com> wrote:
>> On Thu, 9 Mar 2023, Sandra Loosemore wrote:
>>> This is OK, but I'd like to see this patch split into two separate
>>> commits as well -- one for the texinfo.tex import, and one for the @gol
>>> changes.
>>
>> I believe Arsen does not have git write access.
>
> Well, I guess we should fix that?  :-) I've met Arsen in person at
> FOSDEM 2023, and I'm happy to vouch for his reasonable behavior.
> He does have a FSF Copyright Assignment for GCC.
> <https://gcc.gnu.org/gitwrite.html#authenticated>; I'm happy to act
> as sponsor.

Thanks, Thomas.  I'd be happy to undergo this process later today.  If I
understood right, I should fill out
https://sourceware.org/cgi-bin/pdw/ps_form.cgi and name you, right?

Thanks again.

>
> Grüße
>  Thomas
>
>
>> Arsen, if that is indeed the case, I offer to push these two commits for
>> you if you send them by e-mail (as two attachments).

Thanks!  Either approach works for me :)

>> Gerald
> -----------------
> Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955

Have a lovely day!
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 5/5] update_web_docs_git: Update CSS reference to new manual CSS
  2023-03-10  0:07   ` Sandra Loosemore
@ 2023-03-10 13:00     ` Arsen Arsenović
  0 siblings, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-10 13:00 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1163 bytes --]


Sandra Loosemore <sandra@codesourcery.com> writes:

> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>> maintainer-scripts/ChangeLog:
>> 	* update_web_docs_git (CSS): Update CSS reference to point to
>> 	/texinfo-manuals.css.
>
> I'm going to defer to Gerald on this one, since I am ignorant of how documents
> are produced for the GCC web site.  IIUC the online docs are built on a system
> with Texinfo 6.5; I don't know if it's reasonable to update that, otherwise I
> think somebody ought to give it a dry run to make sure that the style sheet
> does reasonable things with Texinfo 6.5 output.

ISTR asking Mark about updating that system for the purposes of this
change and releaseq, and him saying that it is possible to do so, should
the GCC admins agree, so I think we should be okay.

Gerald, there's one more patch for update_web_docs_git that you'll be
interested in, see:
https://inbox.sourceware.org/gcc-patches/86sfed63l6.fsf@aarsen.me/

This addresses the @shortcontents coming after the @contents even with
the Texinfo sources specifying otherwise.

Thanks in advance.

> -Sandra


-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-09 23:55   ` Sandra Loosemore
  2023-03-10  0:17     ` Gerald Pfeifer
  2023-03-10 12:48     ` Arsen Arsenović
@ 2023-03-10 15:49     ` Arsen Arsenović
  2023-03-18 20:14       ` Ping (gcc/configure.ac, docs): " Arsen Arsenović
  2 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-10 15:49 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 6555 bytes --]

Afternoon,

Sandra Loosemore <sandra@codesourcery.com> writes:

> On 2/23/23 03:27, Arsen Arsenović via Gcc-patches wrote:
>> The @gol macro appears to have existed as a workaround for a bug in old
>> versions of makeinfo and/or texinfo.tex, where they would, in some types
>> of output, fail to emit line breaks in @gccoptlists.  After updating
>> texinfo.tex, I noticed that this behavior appears to no longer be
>> exhibited, instead, both acted correctly and inserted newlines.  The
>> (groff) manual output also appears unaffected.
>> gcc/ChangeLog:
>> 	* doc/include/texinfo.tex: Update to 2023-01-17.19.
>> 	* doc/implement-c.texi: Remove usage of @gol.
>> 	* doc/invoke.texi: Ditto.
>> 	* doc/sourcebuild.texi: Ditto.
>> 	* doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
>> 	texinfo.tex versions, the bug it was working around appears to
>> 	be gone.
>> gcc/fortran/ChangeLog:
>> 	* invoke.texi: Remove usages of @gol.
>> 	* intrinsic.texi: Ditto.
>
> This is OK, but I'd like to see this patch split into two separate commits as
> well -- one for the texinfo.tex import, and one for the @gol changes.

The full log is below.  This branch is also, as usual, visible on my
fork at:

  https://git.sr.ht/~arsen/gcc texinfo_improvements

... and is visible in web form at:

  https://git.sr.ht/~arsen/gcc/log/texinfo_improvements

I rebased the patchset to today's revision again.

The log:

commit 63fcce9b7d7af55fd73024fa42cb44fde9063c3a
Author: Arsen Arsenović <arsen@aarsen.me>
Date:   Thu Mar 9 21:44:29 2023 +0100

    update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline
    
    maintainer-scripts/ChangeLog:
    
            * update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
            order to put @shortcontents above contents. See
            9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
            gcc-patches.

commit 04c696ed31e623d003a0472f83d6a93c53541790
Author: Arsen Arsenović <arsen@aarsen.me>
Date:   Tue Feb 28 11:40:56 2023 +0100

    docs: Fix up new instances of index reordering
    
    This commit fixes up an instance of the index entry mis-ordering that
    occurred between the formulation and application of commit
    r13-6310-gf33d7a88d069d1.
    
    gcc/ChangeLog:
    
            * doc/extend.texi: Associate use_hazard_barrier_return index
            entry with its attribute.
            * doc/invoke.texi: Associate -fcanon-prefix-map index entry with
            its attribute

commit cfc401f06bf46fd98ee1272e0204155d635b3c42
Author: Arsen Arsenović <arsen@aarsen.me>
Date:   Thu Jan 26 18:50:38 2023 +0100

    update_web_docs_git: Update CSS reference to new manual CSS
    
    maintainer-scripts/ChangeLog:
    
            * update_web_docs_git (CSS): Update CSS reference to point to
            /texinfo-manuals.css.

commit d3c953045f99523a726d1d2b2d25bc9e9352fdfd
Author: Arsen Arsenović <arsen@aarsen.me>
Date:   Wed Jan 25 23:33:03 2023 +0100

    doc: Remove the @gol macro/alias
    
    The @gol macro appears to have existed as a workaround for a bug in old
    versions of makeinfo and/or texinfo.tex, where they would, in some types
    of output, fail to emit line breaks in @gccoptlists.  After updating
    texinfo.tex, I noticed that this behavior appears to no longer be
    exhibited, instead, both acted correctly and inserted newlines.  The
    (groff) manual output also appears unaffected.
    
    gcc/ChangeLog:
    
            * doc/implement-c.texi: Remove usage of @gol.
            * doc/invoke.texi: Ditto.
            * doc/sourcebuild.texi: Ditto.
            * doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
            texinfo.tex versions, the bug it was working around appears to
            be gone.
    
    gcc/fortran/ChangeLog:
    
            * invoke.texi: Remove usages of @gol.
            * intrinsic.texi: Ditto.

commit e543f4acda2573331d02a99a779f8710abfb14c6
Author: Arsen Arsenović <arsen@aarsen.me>
Date:   Fri Mar 10 16:21:33 2023 +0100

    doc: Update texinfo.tex
    
    gcc/ChangeLog:
    
            * doc/include/texinfo.tex: Update to 2023-01-17.19.

commit 5f093996a453656755a0209271d01392d05b849e
Author: Arsen Arsenović <arsen@aarsen.me>
Date:   Fri Mar 10 16:13:28 2023 +0100

    docs: Add @defbuiltin family of helpers
    
    The @defbuiltin{,x} macros are convenience macros for the often-repeated
    task of defining a built-in function in extend.texi.  Usage of this
    macro should lead to a higher degree of consistency across pieces of
    text written by different people, and provide a better reading
    experience, as they prevent easy-to-make errors, like forgetting index
    entries for these functions.
    
    gcc/ChangeLog:
    
            * doc/include/gcc-common.texi: Add @defbuiltin{,x} and
            @enddefbuiltin for defining built-in functions.
            * doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
            places where it should be used.

commit a867275185f2f2d5d654394a406ae28f16a4f26a
Author: Arsen Arsenović <arsen@aarsen.me>
Date:   Fri Mar 10 16:08:19 2023 +0100

    doc: Fix a few minor errors spotted by testers
    
    This commit addresses a few minor errors that were spotted while testing
    the GCC manual with a few people, and while working on wider changes.
    
    gcc/ChangeLog:
    
            * doc/extend.texi (Formatted Output Function Checking): New
            subsection for  grouping together printf et al.
            (Exception handling) Fix missing @ sign before copyright
            header, which lead to the copyright line leaking into
            '(gcc)Exception handling'.
            * doc/gcc.texi: Set document language to en_US.
            (@copying): Wrap front cover texts in quotations, move in manual
            description text.

commit 8e0739647b9fe429b57c7855b2ed0dee00407457
Author: Arsen Arsenović <arsen@aarsen.me>
Date:   Sun Nov 20 17:57:46 2022 +0100

    docs: Create Indices appendix
    
    The GCC manual has multiple indices.  By creating an appendix which
    lists them, we help makeinfo present a more accessible way for the
    reader to see all the indices.
    
    gcc/ChangeLog:
    
            * doc/gcc.texi: Add the Indices appendix, to make texinfo
            generate nice indices overview page.

> -Sandra

Have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 251 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-10 12:49         ` Arsen Arsenović
@ 2023-03-10 15:51           ` Gerald Pfeifer
  2023-03-10 15:58             ` Arsen Arsenović
  0 siblings, 1 reply; 59+ messages in thread
From: Gerald Pfeifer @ 2023-03-10 15:51 UTC (permalink / raw)
  To: Arsen Arsenović
  Cc: Thomas Schwinge, gcc-patches, Joseph Myers, Sandra Loosemore

[-- Attachment #1: Type: text/plain, Size: 626 bytes --]

On Fri, 10 Mar 2023, Arsen Arsenović wrote:
> Thanks, Thomas.  I'd be happy to undergo this process later today.  If I
> understood right, I should fill out
> https://sourceware.org/cgi-bin/pdw/ps_form.cgi and name you, right?

Yes. 

(Thomas, you, and me actually could have met a FOSDEM. Next year we should
send a note to the gcc@ list and arrange for something?)

>>> Arsen, if that is indeed the case, I offer to push these two commits for
>>> you if you send them by e-mail (as two attachments).
> Thanks!  Either approach works for me :)

Happy to go the route Thomas suggested (though available to help, too).

Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-10 15:51           ` Gerald Pfeifer
@ 2023-03-10 15:58             ` Arsen Arsenović
  0 siblings, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-10 15:58 UTC (permalink / raw)
  To: Gerald Pfeifer
  Cc: Thomas Schwinge, gcc-patches, Joseph Myers, Sandra Loosemore

[-- Attachment #1: Type: text/plain, Size: 957 bytes --]

Hi Gerald,

Gerald Pfeifer <gerald@pfeifer.com> writes:

> On Fri, 10 Mar 2023, Arsen Arsenović wrote:
>> Thanks, Thomas.  I'd be happy to undergo this process later today.  If I
>> understood right, I should fill out
>> https://sourceware.org/cgi-bin/pdw/ps_form.cgi and name you, right?
>
> Yes. 

Thanks, done.  Exciting :-)

> (Thomas, you, and me actually could have met a FOSDEM. Next year we should
> send a note to the gcc@ list and arrange for something?)
>
>>>> Arsen, if that is indeed the case, I offer to push these two commits for
>>>> you if you send them by e-mail (as two attachments).
>> Thanks!  Either approach works for me :)
>
> Happy to go the route Thomas suggested (though available to help, too).

Thank you!  I'll keep you posted.  For now, let's get a final review of
the remaining bits and I'll try pushing myself should that become
possible.

> Gerald

Have a great day :-)
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 251 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-10  8:50                 ` Iain Sandoe
@ 2023-03-10 17:51                   ` Sandra Loosemore
  2023-03-10 18:09                     ` Sandra Loosemore
  2023-03-10 19:00                     ` Gerald Pfeifer
  0 siblings, 2 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-10 17:51 UTC (permalink / raw)
  To: Iain Sandoe
  Cc: Richard Biener, Andrew Pinski, Sandra Loosemore,
	Arsen Arsenović,
	GCC Patches, Gerald Pfeifer, Joseph Myers

On 3/10/23 01:50, Iain Sandoe wrote:
> Hi all,
> 
>> On 9 Mar 2023, at 23:35, Sandra Loosemore via Gcc-patches
>> <gcc-patches@gcc.gnu.org> wrote:
>> 
>> On 3/9/23 01:26, Richard Biener wrote:
>> 
>>> SLES 12 has texinfo 4.13a, SLES 15 has texinfo 6.5.  We still
>>> provide up-to-date GCC for SLES 12 but we can probably manage in
>>> some ways when the texinfo requirement gets bumped.
>> 
>> OK, this seems to be the oldest version anyone admits to actually
>> using.  I built the manual with Arsen's patches using 4.13a; the
>> build was successful, and I didn't see any obvious issues with the
>> @gol removal in either the PDF or HTML output, so I think we are OK
>> for backward compatibility.
> 
> FWIW macOS/Darwin (as delivered by Apple) is stuck on 4.8 (and,
> presumably, very unlikely to advance), but I would expect most macOS
> FOSS users have something newer installed, either self-built or via
> macposrts/homebrew etc. so the “admits to actually using” applies
> here too I think (personally, I am using 6.7 but not for any special
> reason other than it was current when I updated  my local toolset).
> So I think Darwin can also manage with a newer requirement.

Well, with 4.8 being too old to produce PDF output, that does kind of 
kill my idea of replacing the existing requirement for a specific 
Texinfo version with "the version that comes with your OS distribution 
is good enough".  :-(

AFAIK we have not knowingly changed any specific requirements beyond the 
stated 4.7 and 4.9 for PDF output, but it concerns me that nobody is 
likely to be using versions that old on a regular basis to make sure 
they continue to work and we haven't unknowingly introduced dependencies 
on newer Texinfo features.

Anyway, I think I will leave the existing requirement alone for now, and 
just add a note that newer versions produce better output.

-Sandra


^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-10 17:51                   ` Sandra Loosemore
@ 2023-03-10 18:09                     ` Sandra Loosemore
  2023-03-10 19:00                     ` Gerald Pfeifer
  1 sibling, 0 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-10 18:09 UTC (permalink / raw)
  To: Iain Sandoe
  Cc: Richard Biener, Andrew Pinski, Sandra Loosemore,
	Arsen Arsenović,
	GCC Patches, Gerald Pfeifer, Joseph Myers

On 3/10/23 10:51, Sandra Loosemore wrote:
> On 3/10/23 01:50, Iain Sandoe wrote:
>> Hi all,
>>
>>> On 9 Mar 2023, at 23:35, Sandra Loosemore via Gcc-patches
>>> <gcc-patches@gcc.gnu.org> wrote:
>>>
>>> On 3/9/23 01:26, Richard Biener wrote:
>>>
>>>> SLES 12 has texinfo 4.13a, SLES 15 has texinfo 6.5.  We still
>>>> provide up-to-date GCC for SLES 12 but we can probably manage in
>>>> some ways when the texinfo requirement gets bumped.
>>>
>>> OK, this seems to be the oldest version anyone admits to actually
>>> using.  I built the manual with Arsen's patches using 4.13a; the
>>> build was successful, and I didn't see any obvious issues with the
>>> @gol removal in either the PDF or HTML output, so I think we are OK
>>> for backward compatibility.
>>
>> FWIW macOS/Darwin (as delivered by Apple) is stuck on 4.8 (and,
>> presumably, very unlikely to advance), but I would expect most macOS
>> FOSS users have something newer installed, either self-built or via
>> macposrts/homebrew etc. so the “admits to actually using” applies
>> here too I think (personally, I am using 6.7 but not for any special
>> reason other than it was current when I updated  my local toolset).
>> So I think Darwin can also manage with a newer requirement.
> 
> Well, with 4.8 being too old to produce PDF output, that does kind of 
> kill my idea of replacing the existing requirement for a specific 
> Texinfo version with "the version that comes with your OS distribution 
> is good enough".  :-(
> 
> AFAIK we have not knowingly changed any specific requirements beyond the 
> stated 4.7 and 4.9 for PDF output, but it concerns me that nobody is 
> likely to be using versions that old on a regular basis to make sure 
> they continue to work and we haven't unknowingly introduced dependencies 
> on newer Texinfo features.
> 
> Anyway, I think I will leave the existing requirement alone for now, and 
> just add a note that newer versions produce better output.

Oh, I need to take that back -- looking now, it's 4.8 for PDF output, 
not 4.9 like I was thinking before I had enough caffeine in my 
bloodstream.  I'll leave the version check in place but add some text 
suggesting a more recent version, anyway.

-Sandra


^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-10 17:51                   ` Sandra Loosemore
  2023-03-10 18:09                     ` Sandra Loosemore
@ 2023-03-10 19:00                     ` Gerald Pfeifer
  2023-03-13  9:05                       ` Richard Biener
  2023-05-29 15:06                       ` NightStrike
  1 sibling, 2 replies; 59+ messages in thread
From: Gerald Pfeifer @ 2023-03-10 19:00 UTC (permalink / raw)
  To: Sandra Loosemore
  Cc: Iain Sandoe, Richard Biener, Andrew Pinski, Sandra Loosemore,
	Arsen Arsenović,
	GCC Patches, Joseph Myers

On Fri, 10 Mar 2023, Sandra Loosemore wrote:
> AFAIK we have not knowingly changed any specific requirements beyond the 
> stated 4.7 and 4.9 for PDF output, but it concerns me that nobody is 
> likely to be using versions that old on a regular basis to make sure 
> they continue to work and we haven't unknowingly introduced dependencies 
> on newer Texinfo features.

I'm generally very interested in ensuring we do not hurt users who do not 
have the latest and greatest of the day. On the other hand, if there's a 
few people using (more or less deliberately abandonware) we should not 
feel too bad if something breaks.

> Anyway, I think I will leave the existing requirement alone for now, and 
> just add a note that newer versions produce better output.

With Richi mentioning that SLE 12 (which was first released 9 years ago) 
uses texinfo 4.13a and Andrew mentioning that RHEL 7 uses texinfo 5.1 I
would feel very comfortable making either 4.13 or even 5.1 the new minimum.

(Not because we need to cater to those two Enterprise Linux distros, 
rather since they tend to fall on the conversative side.)

Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-09 20:38     ` Arsen Arsenović
@ 2023-03-11  1:12       ` Sandra Loosemore
  2023-03-11  1:34         ` Arsen Arsenović
  2023-03-11 12:22         ` Arsen Arsenović
  0 siblings, 2 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-11  1:12 UTC (permalink / raw)
  To: Arsen Arsenović, Sandra Loosemore
  Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

On 3/9/23 13:38, Arsen Arsenović wrote:
> 
> Found the change.  HTML got support for CONTENTS_OUTPUT_LOCATION,
> which defaults to after_top, which ignores the inline location of
> these elements.  Here's a patch:
> 
> maintainer-scripts/ChangeLog:
> 
> 	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
> 	order to put @shortcontents above contents. See
> 	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
> 	gcc-patches.

I don't think this is an adequate fix.  We mere mortals build the 
manuals with "make html" etc instead of the maintainer scripts for the 
web site, so we need a solution that we can put either in the Makefile 
or directly in the .texi files, that won't blow up for older versions of 
Texinfo that don't support this thing.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-11  1:12       ` Sandra Loosemore
@ 2023-03-11  1:34         ` Arsen Arsenović
  2023-03-11 12:22         ` Arsen Arsenović
  1 sibling, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-11  1:34 UTC (permalink / raw)
  To: Sandra Loosemore
  Cc: Sandra Loosemore, gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1845 bytes --]


Sandra Loosemore <sandra.loosemore@siemens.com> writes:

> On 3/9/23 13:38, Arsen Arsenović wrote:
>> Found the change.  HTML got support for CONTENTS_OUTPUT_LOCATION,
>> which defaults to after_top, which ignores the inline location of
>> these elements.  Here's a patch:
>> maintainer-scripts/ChangeLog:
>> 	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
>> 	order to put @shortcontents above contents. See
>> 	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
>> 	gcc-patches.
>
> I don't think this is an adequate fix.  We mere mortals build the manuals with
> "make html" etc instead of the maintainer scripts for the web site, so we need
> a solution that we can put either in the Makefile or directly in the .texi
> files, that won't blow up for older versions of Texinfo that don't support this
> thing.

Hm, I've forgotten about that.  AFAICT, the only way to specify this
customization variable is through makeinfo flags.  It'd seem that
unrecognized variables produce a warning, though, so at least building
with older versions won't fail.

We could probably test for whether -c CONTENTS_OUTPUT_LOCATION produces
no warning, and if so, pass an extra flag in the makefile, or just
accept the warning on older versions (before 6.8).

Those, IIUC, should behave as if CONTENTS_OUTPUT_LOCATION is set to
inline, but I haven't tested that (it's getting quite late).

Also worth noting is that the contents come before the top node when set
up like this.  It might be nice to gate that behind @ifhtml or such.

Maybe we should also consider suggesting that texi2any places
@shortcontents first in after_top mode.  I can handle that if you think
that's reasonable.

I'll send the updated patch in the morning.

> -Sandra

Thanks, have a lovely night.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 251 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-11  1:12       ` Sandra Loosemore
  2023-03-11  1:34         ` Arsen Arsenović
@ 2023-03-11 12:22         ` Arsen Arsenović
  2023-03-11 19:22           ` Gerald Pfeifer
  2023-03-11 19:34           ` Sandra Loosemore
  1 sibling, 2 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-11 12:22 UTC (permalink / raw)
  To: Sandra Loosemore
  Cc: Sandra Loosemore, gcc-patches, Gerald Pfeifer, Joseph Myers


[-- Attachment #1.1: Type: text/plain, Size: 922 bytes --]


Sandra Loosemore <sandra.loosemore@siemens.com> writes:

> On 3/9/23 13:38, Arsen Arsenović wrote:
>> Found the change.  HTML got support for CONTENTS_OUTPUT_LOCATION,
>> which defaults to after_top, which ignores the inline location of
>> these elements.  Here's a patch:
>> maintainer-scripts/ChangeLog:
>> 	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
>> 	order to put @shortcontents above contents. See
>> 	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
>> 	gcc-patches.
>
> I don't think this is an adequate fix.  We mere mortals build the manuals with
> "make html" etc instead of the maintainer scripts for the web site, so we need
> a solution that we can put either in the Makefile or directly in the .texi
> files, that won't blow up for older versions of Texinfo that don't support this
> thing.
>
> -Sandra

OK, changed up a bit, what do you think of this:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: html: Set CONTENTS_OUTPUT_LOCATION=inline if makeinfo --]
[-- Type: text/x-patch, Size: 6021 bytes --]

From 5f9084fa0db49cb550bc147e7a563c31a311be1d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
Date: Thu, 9 Mar 2023 21:44:29 +0100
Subject: [PATCH] html: Set CONTENTS_OUTPUT_LOCATION=inline if makeinfo
 supports it

maintainer-scripts/ChangeLog:

	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
	order to put @shortcontents above contents. See
	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
	gcc-patches.

gcc/ChangeLog:

	* configure.ac: Add check for the Texinfo 6.8
	CONTENTS_OUTPUT_LOCATION customization variable and set it if
	supported.
	* configure: Regenerate.
	* Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
	configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
	CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
	($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
	See 9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
	gcc-patches.
---
 gcc/Makefile.in                        |  6 ++++-
 gcc/configure                          | 32 ++++++++++++++++++++++++--
 gcc/configure.ac                       | 18 +++++++++++++++
 maintainer-scripts/update_web_docs_git |  2 +-
 4 files changed, 54 insertions(+), 4 deletions(-)

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 6001c9e3b55..d8b76d83d68 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -787,6 +787,9 @@ INSTALL_HEADERS=install-headers install-mkheaders
 # Control whether Info documentation is built and installed.
 BUILD_INFO = @BUILD_INFO@
 
+# Control flags for @contents placement in HTML output
+MAKEINFO_TOC_INLINE_FLAG = @MAKEINFO_TOC_INLINE_FLAG@
+
 # Control whether manpages generated by texi2pod.pl can be rebuilt.
 GENERATED_MANPAGES = @GENERATED_MANPAGES@
 
@@ -3461,7 +3464,8 @@ html:: $(HTMLS_BUILD)
 $(build_htmldir)/%/index.html: %.texi
 	$(mkinstalldirs) $(@D)
 	rm -f $(@D)/*
-	$(TEXI2HTML) -I $(abs_docdir) -I $(abs_docdir)/include -o $(@D) $<
+	$(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \
+		-I $(abs_docdir) -I $(abs_docdir)/include -o $(@D) $<
 
 # Duplicate entry to handle renaming of gccinstall
 $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES)
diff --git a/gcc/configure b/gcc/configure
index 254f9b6c943..98356fdf92d 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -810,6 +810,7 @@ PYTHON
 BISON
 FLEX
 GENERATED_MANPAGES
+MAKEINFO_TOC_INLINE_FLAG
 BUILD_INFO
 MAKEINFO
 have_mktemp_command
@@ -8795,6 +8796,33 @@ else
 fi
 
 
+MAKEINFO_TOC_INLINE_FLAG=
+if test x"$MAKEINFO" != x; then :
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CONTENTS_OUTPUT_LOCATION support in $MAKEINFO" >&5
+$as_echo_n "checking for CONTENTS_OUTPUT_LOCATION support in $MAKEINFO... " >&6; }
+if ${gcc_cv_texi_add_toc_inline_flags+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+    # Detect the unknown variable CONTENTS_OUTPUT_LOCATION warning
+    if "$MAKEINFO" -c CONTENTS_OUTPUT_LOCATION=inline </dev/null 2>&1 \
+       | grep CONTENTS_OUTPUT_LOCATION >/dev/null; then
+      gcc_cv_texi_add_toc_inline_flags=no
+    else
+      gcc_cv_texi_add_toc_inline_flags=yes
+    fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_texi_add_toc_inline_flags" >&5
+$as_echo "$gcc_cv_texi_add_toc_inline_flags" >&6; }
+  if test x"$gcc_cv_texi_add_toc_inline_flags" = xyes; then
+    MAKEINFO_TOC_INLINE_FLAG='-c CONTENTS_OUTPUT_LOCATION=inline'
+  fi
+
+fi
+
+
 # Is pod2man recent enough to regenerate manpages?
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for recent Pod::Man" >&5
 $as_echo_n "checking for recent Pod::Man... " >&6; }
@@ -19792,7 +19820,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 19795 "configure"
+#line 19823 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -19898,7 +19926,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 19901 "configure"
+#line 19929 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 62bc908b991..1a7c9c66457 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1242,6 +1242,24 @@ else
 fi
 AC_SUBST(BUILD_INFO)
 
+MAKEINFO_TOC_INLINE_FLAG=
+AS_IF([test x"$MAKEINFO" != x], [
+  AC_CACHE_CHECK([for CONTENTS_OUTPUT_LOCATION support in $MAKEINFO],
+  		 [gcc_cv_texi_add_toc_inline_flags], [
+    # Detect the unknown variable CONTENTS_OUTPUT_LOCATION warning
+    if "$MAKEINFO" -c CONTENTS_OUTPUT_LOCATION=inline </dev/null 2>&1 \
+       | grep CONTENTS_OUTPUT_LOCATION >/dev/null; then
+      gcc_cv_texi_add_toc_inline_flags=no
+    else
+      gcc_cv_texi_add_toc_inline_flags=yes
+    fi
+  ])
+  if test x"$gcc_cv_texi_add_toc_inline_flags" = xyes; then
+    MAKEINFO_TOC_INLINE_FLAG='-c CONTENTS_OUTPUT_LOCATION=inline'
+  fi
+])
+AC_SUBST([MAKEINFO_TOC_INLINE_FLAG])
+
 # Is pod2man recent enough to regenerate manpages?
 AC_MSG_CHECKING([for recent Pod::Man])
 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
diff --git a/maintainer-scripts/update_web_docs_git b/maintainer-scripts/update_web_docs_git
index 9ded1744df4..c9f14d1a4d1 100755
--- a/maintainer-scripts/update_web_docs_git
+++ b/maintainer-scripts/update_web_docs_git
@@ -169,7 +169,7 @@ for file in $MANUALS; do
     if [ "$file" = "gnat_ugn" ]; then
       includes="$includes -I gcc/gcc/ada -I gcc/gcc/ada/doc/gnat_ugn"
     fi
-    makeinfo --html --css-ref $CSS $includes -o ${file} ${filename}
+    makeinfo --html -c CONTENTS_OUTPUT_LOCATION=inline --css-ref $CSS $includes -o ${file} ${filename}
     tar cf ${file}-html.tar ${file}/*.html
     texi2dvi $includes -o ${file}.dvi ${filename} </dev/null >/dev/null && dvips -o ${file}.ps ${file}.dvi
     texi2pdf $includes -o ${file}.pdf ${filename} </dev/null
-- 
2.39.2


[-- Attachment #1.3: Type: text/plain, Size: 84 bytes --]


I tested with a fresh build of texinfo 7.0-dev and 6.0.

-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-11 12:22         ` Arsen Arsenović
@ 2023-03-11 19:22           ` Gerald Pfeifer
  2023-03-11 20:22             ` Arsen Arsenović
  2023-03-11 19:34           ` Sandra Loosemore
  1 sibling, 1 reply; 59+ messages in thread
From: Gerald Pfeifer @ 2023-03-11 19:22 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: Sandra Loosemore, gcc-patches, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1544 bytes --]

On Sat, 11 Mar 2023, Arsen Arsenović wrote:
> OK, changed up a bit, what do you think of this:

> maintainer-scripts/ChangeLog:
>
>	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
>	order to put @shortcontents above contents. See
>	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
>	gcc-patches.

In the ChangeLog we only describe *what* has change, so the first half of 
the first sentence.

The rest then goes in between the first line of the Git commit message
(= the subject of your mail) and the ChangeLog entries.


> --- a/gcc/configure
> +++ b/gcc/configure

We usually don't post diffs for generated files. Not a biggie, I figured I 
mention it since it makes reviewing easier and patches shorter, and thus 
tends to increase the chance reviewers short on time jump in. :-)


> --- a/maintainer-scripts/update_web_docs_git
> +++ b/maintainer-scripts/update_web_docs_git
> @@ -169,7 +169,7 @@ for file in $MANUALS; do
>     if [ "$file" = "gnat_ugn" ]; then
>       includes="$includes -I gcc/gcc/ada -I gcc/gcc/ada/doc/gnat_ugn"
>     fi
> -    makeinfo --html --css-ref $CSS $includes -o ${file} ${filename}
> +    makeinfo --html -c CONTENTS_OUTPUT_LOCATION=inline --css-ref $CSS $includes -o ${file} ${filename}

Sandra deferred to me on this one, so explicitly: Ack, thank you. :-)

Note, update_web_docs_git runs once a day, at 0:50 GMT, see 
gcc/maintainer-scripts/crontab, and needs to be updated on the gcc.gnu.org 
system. I am happy to do that for you, just drop me a note when the commit
is in.

Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-11 12:22         ` Arsen Arsenović
  2023-03-11 19:22           ` Gerald Pfeifer
@ 2023-03-11 19:34           ` Sandra Loosemore
  2023-03-11 20:14             ` Arsen Arsenović
  1 sibling, 1 reply; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-11 19:34 UTC (permalink / raw)
  To: Arsen Arsenović
  Cc: Sandra Loosemore, gcc-patches, Gerald Pfeifer, Joseph Myers

On 3/11/23 05:22, Arsen Arsenović wrote:
> 
> OK, changed up a bit, what do you think of this:
> 
> maintainer-scripts/ChangeLog:
> 
> 	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
> 	order to put @shortcontents above contents. See
> 	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
> 	gcc-patches.
> 
> gcc/ChangeLog:
> 
> 	* configure.ac: Add check for the Texinfo 6.8
> 	CONTENTS_OUTPUT_LOCATION customization variable and set it if
> 	supported.
> 	* configure: Regenerate.
> 	* Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
> 	configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
> 	CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
> 	($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
> 	See 9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
> 	gcc-patches.

Hmmm, first off, I think somebody other than me needs to approve the 
configure and makefile pieces, as well as the maintainer-scripts part. 
It looks conceptually right to me, although I would add a comment to new 
configure.ac piece like

"Newer versions of Texinfo put the table of contents in the wrong place 
by default in HTML output, but provide a command-line option to restore 
the desired behavior.  Check whether we need to do that."

I don't know whether the maintainer-scripts change needs to be made 
conditional too.  :-S

BTW, this change probably needs to be backported to all active GCC 
branches (10, 11, and 12) too after it's committed to mainline.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-11 19:34           ` Sandra Loosemore
@ 2023-03-11 20:14             ` Arsen Arsenović
  2023-03-11 20:32               ` [PATCH v2] html: Set CONTENTS_OUTPUT_LOCATION=inline if makeinfo supports it Arsen Arsenović
  2023-03-12 10:25               ` [PATCH v2 1/5] docs: Create Indices appendix Gerald Pfeifer
  0 siblings, 2 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-11 20:14 UTC (permalink / raw)
  To: Sandra Loosemore
  Cc: Sandra Loosemore, gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 2130 bytes --]


Sandra Loosemore <sandra.loosemore@siemens.com> writes:

> On 3/11/23 05:22, Arsen Arsenović wrote:
>> OK, changed up a bit, what do you think of this:
>> maintainer-scripts/ChangeLog:
>> 	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
>> 	order to put @shortcontents above contents. See
>> 	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
>> 	gcc-patches.
>> gcc/ChangeLog:
>> 	* configure.ac: Add check for the Texinfo 6.8
>> 	CONTENTS_OUTPUT_LOCATION customization variable and set it if
>> 	supported.
>> 	* configure: Regenerate.
>> 	* Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
>> 	configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
>> 	CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
>> 	($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
>> 	See 9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
>> 	gcc-patches.
>
> Hmmm, first off, I think somebody other than me needs to approve the configure
> and makefile pieces, as well as the maintainer-scripts part. It looks
> conceptually right to me, although I would add a comment to new configure.ac
> piece like
>
> "Newer versions of Texinfo put the table of contents in the wrong place by
> default in HTML output, but provide a command-line option to restore the
> desired behavior.  Check whether we need to do that."

This sounds good, will drop in.  Who can review these?

> I don't know whether the maintainer-scripts change needs to be made conditional
> too.  :-S

I don't think so, I was thinking of omitting it for the usual build too
since it's a nonfatal error to pass non-existent customization
variables, but I decided that this would introduce too much noise to the
normal path.  This shouldn't emit a warning on the server that runs the
update anyway since, hopefully, we'd be updating it 7.0dev for the other
goodies.

> BTW, this change probably needs to be backported to all active GCC branches
> (10, 11, and 12) too after it's committed to mainline.

I'm not opposed to doing that.

> -Sandra


-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-11 19:22           ` Gerald Pfeifer
@ 2023-03-11 20:22             ` Arsen Arsenović
  0 siblings, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-11 20:22 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: Sandra Loosemore, gcc-patches, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1971 bytes --]


Gerald Pfeifer <gerald@pfeifer.com> writes:

> On Sat, 11 Mar 2023, Arsen Arsenović wrote:
>> OK, changed up a bit, what do you think of this:
>
>> maintainer-scripts/ChangeLog:
>>
>>	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
>>	order to put @shortcontents above contents. See
>>	9dd976a4-4e09-d901-b949-6d5037567b9b@codesourcery.com on
>>	gcc-patches.
>
> In the ChangeLog we only describe *what* has change, so the first half of 
> the first sentence.
>
> The rest then goes in between the first line of the Git commit message
> (= the subject of your mail) and the ChangeLog entries.

Ah, OK.  I decided to put it there, too (and repeat it twice), since the
ChangeLog crafting script doesn't include the commit message for
context.  I've dropped that now.

>
>> --- a/gcc/configure
>> +++ b/gcc/configure
>
> We usually don't post diffs for generated files. Not a biggie, I figured I 
> mention it since it makes reviewing easier and patches shorter, and thus 
> tends to increase the chance reviewers short on time jump in. :-)

Ah, d'oh.  I forgot to filter that out.  Apologies.

>
>> --- a/maintainer-scripts/update_web_docs_git
>> +++ b/maintainer-scripts/update_web_docs_git
>> @@ -169,7 +169,7 @@ for file in $MANUALS; do
>>     if [ "$file" = "gnat_ugn" ]; then
>>       includes="$includes -I gcc/gcc/ada -I gcc/gcc/ada/doc/gnat_ugn"
>>     fi
>> -    makeinfo --html --css-ref $CSS $includes -o ${file} ${filename}
>> +    makeinfo --html -c CONTENTS_OUTPUT_LOCATION=inline --css-ref $CSS $includes -o ${file} ${filename}
>
> Sandra deferred to me on this one, so explicitly: Ack, thank you. :-)
>
> Note, update_web_docs_git runs once a day, at 0:50 GMT, see 
> gcc/maintainer-scripts/crontab, and needs to be updated on the gcc.gnu.org 
> system. I am happy to do that for you, just drop me a note when the commit
> is in.

Sure thing, thanks!

> Gerald


-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* [PATCH v2] html: Set CONTENTS_OUTPUT_LOCATION=inline if makeinfo supports it
  2023-03-11 20:14             ` Arsen Arsenović
@ 2023-03-11 20:32               ` Arsen Arsenović
  2023-03-12 10:25               ` [PATCH v2 1/5] docs: Create Indices appendix Gerald Pfeifer
  1 sibling, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-11 20:32 UTC (permalink / raw)
  To: arsen; +Cc: gcc-patches, gerald, joseph, sandra.loosemore, sandra

This flag allows us to restore old (pre-6.8) behavior of the
@{summary,}content commands, so that texi2any continues to emit
summarycontents first.

maintainer-scripts/ChangeLog:

	* update_web_docs_git: Set CONTENTS_OUTPUT_LOCATION=inline in
	order to put @shortcontents above contents.

gcc/ChangeLog:

	* configure.ac: Add check for the Texinfo 6.8
	CONTENTS_OUTPUT_LOCATION customization variable and set it if
	supported.
	* configure: Regenerate.
	* Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
	configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
	CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
	($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
---
Here's an updated version of that patch, for review.  I'm sending it
separately and properly to not accidentally alienate potential
reviewers.

 gcc/Makefile.in                        |  6 ++++-
 gcc/configure                          | 35 ++++++++++++++++++++++++--
 gcc/configure.ac                       | 21 ++++++++++++++++
 maintainer-scripts/update_web_docs_git |  2 +-
 4 files changed, 60 insertions(+), 4 deletions(-)

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 6001c9e3b55..d8b76d83d68 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -787,6 +787,9 @@ INSTALL_HEADERS=install-headers install-mkheaders
 # Control whether Info documentation is built and installed.
 BUILD_INFO = @BUILD_INFO@
 
+# Control flags for @contents placement in HTML output
+MAKEINFO_TOC_INLINE_FLAG = @MAKEINFO_TOC_INLINE_FLAG@
+
 # Control whether manpages generated by texi2pod.pl can be rebuilt.
 GENERATED_MANPAGES = @GENERATED_MANPAGES@
 
@@ -3461,7 +3464,8 @@ html:: $(HTMLS_BUILD)
 $(build_htmldir)/%/index.html: %.texi
 	$(mkinstalldirs) $(@D)
 	rm -f $(@D)/*
-	$(TEXI2HTML) -I $(abs_docdir) -I $(abs_docdir)/include -o $(@D) $<
+	$(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \
+		-I $(abs_docdir) -I $(abs_docdir)/include -o $(@D) $<
 
 # Duplicate entry to handle renaming of gccinstall
 $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES)
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 62bc908b991..120151c474a 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1242,6 +1242,27 @@ else
 fi
 AC_SUBST(BUILD_INFO)
 
+# Determine whether makeinfo supports the CONTENTS_OUTPUT_LOCATION variable.
+# If it does, we want to pass it to makeinfo in order to restore the old
+# behavior of @{summary,}contents placement.
+MAKEINFO_TOC_INLINE_FLAG=
+AS_IF([test x"$MAKEINFO" != x], [
+  AC_CACHE_CHECK([for CONTENTS_OUTPUT_LOCATION support in $MAKEINFO],
+  		 [gcc_cv_texi_add_toc_inline_flags], [
+    # Detect the unknown variable CONTENTS_OUTPUT_LOCATION warning
+    if "$MAKEINFO" -c CONTENTS_OUTPUT_LOCATION=inline </dev/null 2>&1 \
+       | grep CONTENTS_OUTPUT_LOCATION >/dev/null; then
+      gcc_cv_texi_add_toc_inline_flags=no
+    else
+      gcc_cv_texi_add_toc_inline_flags=yes
+    fi
+  ])
+  if test x"$gcc_cv_texi_add_toc_inline_flags" = xyes; then
+    MAKEINFO_TOC_INLINE_FLAG='-c CONTENTS_OUTPUT_LOCATION=inline'
+  fi
+])
+AC_SUBST([MAKEINFO_TOC_INLINE_FLAG])
+
 # Is pod2man recent enough to regenerate manpages?
 AC_MSG_CHECKING([for recent Pod::Man])
 if (perl -e 'use 1.10 Pod::Man') >/dev/null 2>&1; then
diff --git a/maintainer-scripts/update_web_docs_git b/maintainer-scripts/update_web_docs_git
index 9ded1744df4..c9f14d1a4d1 100755
--- a/maintainer-scripts/update_web_docs_git
+++ b/maintainer-scripts/update_web_docs_git
@@ -169,7 +169,7 @@ for file in $MANUALS; do
     if [ "$file" = "gnat_ugn" ]; then
       includes="$includes -I gcc/gcc/ada -I gcc/gcc/ada/doc/gnat_ugn"
     fi
-    makeinfo --html --css-ref $CSS $includes -o ${file} ${filename}
+    makeinfo --html -c CONTENTS_OUTPUT_LOCATION=inline --css-ref $CSS $includes -o ${file} ${filename}
     tar cf ${file}-html.tar ${file}/*.html
     texi2dvi $includes -o ${file}.dvi ${filename} </dev/null >/dev/null && dvips -o ${file}.ps ${file}.dvi
     texi2pdf $includes -o ${file}.pdf ${filename} </dev/null
-- 
2.39.2


^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-11 20:14             ` Arsen Arsenović
  2023-03-11 20:32               ` [PATCH v2] html: Set CONTENTS_OUTPUT_LOCATION=inline if makeinfo supports it Arsen Arsenović
@ 2023-03-12 10:25               ` Gerald Pfeifer
  2023-03-12 12:23                 ` Arsen Arsenović
  1 sibling, 1 reply; 59+ messages in thread
From: Gerald Pfeifer @ 2023-03-12 10:25 UTC (permalink / raw)
  To: Arsen Arsenović
  Cc: Sandra Loosemore, Sandra Loosemore, gcc-patches, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 772 bytes --]

On Sat, 11 Mar 2023, Arsen Arsenović wrote:
> Sandra Loosemore <sandra.loosemore@siemens.com> writes:
>> Hmmm, first off, I think somebody other than me needs to approve the 
>> configure and makefile pieces, as well as the maintainer-scripts part. 
>> It looks conceptually right to me

Per gcc/MAINTAINERS that'd be

  build machinery (*.in)  Paolo Bonzini           <bonzini@gnu.org>
  build machinery (*.in)  Nathanael Nerode        <neroden@gcc.gnu.org>
  build machinery (*.in)  Alexandre Oliva         <aoliva@gcc.gnu.org>
  build machinery (*.in)  Ralf Wildenhues         <Ralf.Wildenhues@gmx.de>

though I don't recall seeing much (if anything) from others than Alexandre 
for quite a while.

So more likely one of the Global Reviewers in that same file.

Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 1/5] docs: Create Indices appendix
  2023-03-12 10:25               ` [PATCH v2 1/5] docs: Create Indices appendix Gerald Pfeifer
@ 2023-03-12 12:23                 ` Arsen Arsenović
  0 siblings, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-12 12:23 UTC (permalink / raw)
  To: Gerald Pfeifer
  Cc: Sandra Loosemore, Sandra Loosemore, gcc-patches, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1131 bytes --]


Gerald Pfeifer <gerald@pfeifer.com> writes:

> On Sat, 11 Mar 2023, Arsen Arsenović wrote:
>> Sandra Loosemore <sandra.loosemore@siemens.com> writes:
>>> Hmmm, first off, I think somebody other than me needs to approve the 
>>> configure and makefile pieces, as well as the maintainer-scripts part. 
>>> It looks conceptually right to me
>
> Per gcc/MAINTAINERS that'd be
>
>   build machinery (*.in)  Paolo Bonzini           <bonzini@gnu.org>
>   build machinery (*.in)  Nathanael Nerode        <neroden@gcc.gnu.org>
>   build machinery (*.in)  Alexandre Oliva         <aoliva@gcc.gnu.org>
>   build machinery (*.in)  Ralf Wildenhues         <Ralf.Wildenhues@gmx.de>
>
> though I don't recall seeing much (if anything) from others than Alexandre 
> for quite a while.
>
> So more likely one of the Global Reviewers in that same file.

Okay, thanks.  I'll let some time pass before pinging people for the
v2 I sent yesterday.

With that, we should be left with just a review of the updated Git log
before this series is ready for trunk, IIRC.

Have a great day!

> Gerald


-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-10 19:00                     ` Gerald Pfeifer
@ 2023-03-13  9:05                       ` Richard Biener
  2023-03-13 11:01                         ` Arsen Arsenović
  2023-05-29 15:06                       ` NightStrike
  1 sibling, 1 reply; 59+ messages in thread
From: Richard Biener @ 2023-03-13  9:05 UTC (permalink / raw)
  To: Gerald Pfeifer
  Cc: Sandra Loosemore, Iain Sandoe, Andrew Pinski, Sandra Loosemore,
	Arsen Arsenović,
	GCC Patches, Joseph Myers

On Fri, Mar 10, 2023 at 8:00 PM Gerald Pfeifer <gerald@pfeifer.com> wrote:
>
> On Fri, 10 Mar 2023, Sandra Loosemore wrote:
> > AFAIK we have not knowingly changed any specific requirements beyond the
> > stated 4.7 and 4.9 for PDF output, but it concerns me that nobody is
> > likely to be using versions that old on a regular basis to make sure
> > they continue to work and we haven't unknowingly introduced dependencies
> > on newer Texinfo features.
>
> I'm generally very interested in ensuring we do not hurt users who do not
> have the latest and greatest of the day. On the other hand, if there's a
> few people using (more or less deliberately abandonware) we should not
> feel too bad if something breaks.
>
> > Anyway, I think I will leave the existing requirement alone for now, and
> > just add a note that newer versions produce better output.
>
> With Richi mentioning that SLE 12 (which was first released 9 years ago)
> uses texinfo 4.13a and Andrew mentioning that RHEL 7 uses texinfo 5.1 I
> would feel very comfortable making either 4.13 or even 5.1 the new minimum.
>
> (Not because we need to cater to those two Enterprise Linux distros,
> rather since they tend to fall on the conversative side.)

We could also opt to ship generated pdf documentation with the
release tarballs - the pre-built info format plus manual pages is
probably of less use these days?

Richard.

> Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-13  9:05                       ` Richard Biener
@ 2023-03-13 11:01                         ` Arsen Arsenović
  0 siblings, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-13 11:01 UTC (permalink / raw)
  To: Richard Biener
  Cc: Gerald Pfeifer, Sandra Loosemore, Iain Sandoe, Andrew Pinski,
	Sandra Loosemore, GCC Patches, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1853 bytes --]


Richard Biener <richard.guenther@gmail.com> writes:

> On Fri, Mar 10, 2023 at 8:00 PM Gerald Pfeifer <gerald@pfeifer.com> wrote:
>>
>> On Fri, 10 Mar 2023, Sandra Loosemore wrote:
>> > AFAIK we have not knowingly changed any specific requirements beyond the
>> > stated 4.7 and 4.9 for PDF output, but it concerns me that nobody is
>> > likely to be using versions that old on a regular basis to make sure
>> > they continue to work and we haven't unknowingly introduced dependencies
>> > on newer Texinfo features.
>>
>> I'm generally very interested in ensuring we do not hurt users who do not
>> have the latest and greatest of the day. On the other hand, if there's a
>> few people using (more or less deliberately abandonware) we should not
>> feel too bad if something breaks.
>>
>> > Anyway, I think I will leave the existing requirement alone for now, and
>> > just add a note that newer versions produce better output.
>>
>> With Richi mentioning that SLE 12 (which was first released 9 years ago)
>> uses texinfo 4.13a and Andrew mentioning that RHEL 7 uses texinfo 5.1 I
>> would feel very comfortable making either 4.13 or even 5.1 the new minimum.
>>
>> (Not because we need to cater to those two Enterprise Linux distros,
>> rather since they tend to fall on the conversative side.)
>
> We could also opt to ship generated pdf documentation with the
> release tarballs - the pre-built info format plus manual pages is
> probably of less use these days?

They're still widely installed and I suspect many open the manpages as a
quick reference.  I guess that fewer open the info pages, but it's not
nobody (I certainly do, but I also have texinfo installed so I can
generate them anyway, as I do for the weekly snapshots that I have
installed).

> Richard.
>
>> Gerald


-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Ping (gcc/configure.ac, docs): [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-10 15:49     ` Arsen Arsenović
@ 2023-03-18 20:14       ` Arsen Arsenović
  2023-03-20 22:01         ` Sandra Loosemore
  0 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-18 20:14 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1152 bytes --]

Evening,

Ping on this patch series.

I believe we're close to being able to apply it, with contents of the
documentation changes being approved, and only a small build system
change and a revised patch series "shape" left to review.

The former change of these two is in:
https://inbox.sourceware.org/gcc-patches/20230311203234.2257423-1-arsen@aarsen.me/
The patch adds a test for the presence of CONTENTS_OUTPUT_LOCATION into
the build system in order to avoid shortcontents coming after contents
in HTML output.  We've also updated Texinfo to output shortcontents
before contents by default as a result of the discussion here, though
that will only happen in newer versions.

The latter "shape" is a git log documented at:
https://inbox.sourceware.org/gcc-patches/87ttysppsc.fsf@aarsen.me/

As always, I've freshly rebased the patch series at

  https://git.sr.ht/~arsen/gcc texinfo_improvements

... or, in (git)web form, at:

  https://git.sr.ht/~arsen/gcc/log/texinfo_improvements

... with the render at:

  https://www.aarsen.me/~arsen/final/

Thank you all in advance, have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: Ping (gcc/configure.ac, docs): [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-18 20:14       ` Ping (gcc/configure.ac, docs): " Arsen Arsenović
@ 2023-03-20 22:01         ` Sandra Loosemore
  2023-03-20 23:06           ` Joseph Myers
  2023-03-20 23:35           ` Arsen Arsenović
  0 siblings, 2 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-03-20 22:01 UTC (permalink / raw)
  To: Arsen Arsenović; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

On 3/18/23 14:14, Arsen Arsenović via Gcc-patches wrote:
> Evening,
> 
> Ping on this patch series.
> 
> I believe we're close to being able to apply it, with contents of the
> documentation changes being approved, and only a small build system
> change and a revised patch series "shape" left to review.

Yup.  I think you can go ahead and commit everything but the part with 
the configure/makefile hackery, which still needs somebody other than me 
to approve it.

> The former change of these two is in:
> https://inbox.sourceware.org/gcc-patches/20230311203234.2257423-1-arsen@aarsen.me/
> The patch adds a test for the presence of CONTENTS_OUTPUT_LOCATION into
> the build system in order to avoid shortcontents coming after contents
> in HTML output.  We've also updated Texinfo to output shortcontents
> before contents by default as a result of the discussion here, though
> that will only happen in newer versions.
> 
> The latter "shape" is a git log documented at:
> https://inbox.sourceware.org/gcc-patches/87ttysppsc.fsf@aarsen.me/
> 
> As always, I've freshly rebased the patch series at
> 
>    https://git.sr.ht/~arsen/gcc texinfo_improvements
> 
> ... or, in (git)web form, at:
> 
>    https://git.sr.ht/~arsen/gcc/log/texinfo_improvements
> 
> ... with the render at:
> 
>    https://www.aarsen.me/~arsen/final/
> 
> Thank you all in advance, have a lovely day.

Joseph, could you maybe review the last piece?  A direct pointer to it 
in Arsen's git is

https://git.sr.ht/~arsen/gcc/commit/bc734311cbca1085a1728f79b7eebef8cc7aeac3

-Sandra


^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: Ping (gcc/configure.ac, docs): [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-20 22:01         ` Sandra Loosemore
@ 2023-03-20 23:06           ` Joseph Myers
  2023-03-20 23:27             ` Arsen Arsenović
  2023-03-20 23:35           ` Arsen Arsenović
  1 sibling, 1 reply; 59+ messages in thread
From: Joseph Myers @ 2023-03-20 23:06 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: Arsen Arsenović, gcc-patches, Gerald Pfeifer

On Mon, 20 Mar 2023, Sandra Loosemore wrote:

> Joseph, could you maybe review the last piece?  A direct pointer to it in
> Arsen's git is
> 
> https://git.sr.ht/~arsen/gcc/commit/bc734311cbca1085a1728f79b7eebef8cc7aeac3

That's OK, assuming I understand correctly that makeinfo will still 
succeed with a warning when it's an older version (gcc.gnu.org, where 
update_web_docs_git runs, has version 6.5).

-- 
Joseph S. Myers
joseph@codesourcery.com

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: Ping (gcc/configure.ac, docs): [PATCH v2 4/5] Update texinfo.tex,  remove the @gol macro/alias
  2023-03-20 23:06           ` Joseph Myers
@ 2023-03-20 23:27             ` Arsen Arsenović
  0 siblings, 0 replies; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-20 23:27 UTC (permalink / raw)
  To: Joseph Myers; +Cc: Sandra Loosemore, gcc-patches, Gerald Pfeifer

[-- Attachment #1: Type: text/plain, Size: 1034 bytes --]


Joseph Myers <joseph@codesourcery.com> writes:

> On Mon, 20 Mar 2023, Sandra Loosemore wrote:
>
>> Joseph, could you maybe review the last piece?  A direct pointer to it in
>> Arsen's git is
>> 
>> https://git.sr.ht/~arsen/gcc/commit/bc734311cbca1085a1728f79b7eebef8cc7aeac3
>
> That's OK, assuming I understand correctly that makeinfo will still 
> succeed with a warning when it's an older version (gcc.gnu.org, where 
> update_web_docs_git runs, has version 6.5).

It should, yes, but I'd like to ask for that server to be updated to
Texinfo straight from the press (the press is currently at commit
e2d30b1270deacf5a1eab1d383733a5a088827d6).  Mark told me that this needs
approval from the GCC admins to do.

The reason for this is that the in-dev versions of Texinfo produce more
accessible HTML documentation due to a few changes that I've
incorporated into them, as well as a few made by the Texinfo
maintainers.

Do you think that would be OK?

Thanks, have a lovely night.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: Ping (gcc/configure.ac, docs): [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-20 22:01         ` Sandra Loosemore
  2023-03-20 23:06           ` Joseph Myers
@ 2023-03-20 23:35           ` Arsen Arsenović
  2023-03-21  9:52             ` Arsen Arsenović
  1 sibling, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-20 23:35 UTC (permalink / raw)
  To: Sandra Loosemore; +Cc: gcc-patches, Gerald Pfeifer, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 1745 bytes --]


Sandra Loosemore <sandra@codesourcery.com> writes:

> On 3/18/23 14:14, Arsen Arsenović via Gcc-patches wrote:
>> Evening,
>> Ping on this patch series.
>> I believe we're close to being able to apply it, with contents of the
>> documentation changes being approved, and only a small build system
>> change and a revised patch series "shape" left to review.
>
> Yup.  I think you can go ahead and commit everything but the part with the
> configure/makefile hackery, which still needs somebody other than me to approve
> it.
>
>> The former change of these two is in:
>> https://inbox.sourceware.org/gcc-patches/20230311203234.2257423-1-arsen@aarsen.me/
>> The patch adds a test for the presence of CONTENTS_OUTPUT_LOCATION into
>> the build system in order to avoid shortcontents coming after contents
>> in HTML output.  We've also updated Texinfo to output shortcontents
>> before contents by default as a result of the discussion here, though
>> that will only happen in newer versions.
>> The latter "shape" is a git log documented at:
>> https://inbox.sourceware.org/gcc-patches/87ttysppsc.fsf@aarsen.me/
>> As always, I've freshly rebased the patch series at
>>    https://git.sr.ht/~arsen/gcc texinfo_improvements
>> ... or, in (git)web form, at:
>>    https://git.sr.ht/~arsen/gcc/log/texinfo_improvements
>> ... with the render at:
>>    https://www.aarsen.me/~arsen/final/
>> Thank you all in advance, have a lovely day.
>
> Joseph, could you maybe review the last piece?  A direct pointer to it in
> Arsen's git is
>
> https://git.sr.ht/~arsen/gcc/commit/bc734311cbca1085a1728f79b7eebef8cc7aeac3
>
> -Sandra

Thank you!  I'll do a final rebase and push in the morning.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: Ping (gcc/configure.ac, docs): [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-20 23:35           ` Arsen Arsenović
@ 2023-03-21  9:52             ` Arsen Arsenović
  2023-03-21 23:11               ` Gerald Pfeifer
  0 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-03-21  9:52 UTC (permalink / raw)
  To: Gerald Pfeifer; +Cc: Sandra Loosemore, Joseph Myers, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 450 bytes --]


Arsen Arsenović via Gcc-patches <gcc-patches@gcc.gnu.org> writes:

> Thank you!  I'll do a final rebase and push in the morning.

Done!

Gerald, please update the scripts when you get a chance (but back the
old ones up just in case!)

If makeinfo is updated as I've asked in one of the other emails, will
the script eventually automatically regenerate docs with the newer
makeinfo?

Thanks, have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 381 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: Ping (gcc/configure.ac, docs): [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias
  2023-03-21  9:52             ` Arsen Arsenović
@ 2023-03-21 23:11               ` Gerald Pfeifer
  0 siblings, 0 replies; 59+ messages in thread
From: Gerald Pfeifer @ 2023-03-21 23:11 UTC (permalink / raw)
  To: Arsen Arsenović, Joseph Myers; +Cc: Sandra Loosemore, gcc-patches

[-- Attachment #1: Type: text/plain, Size: 1030 bytes --]

On Tue, 21 Mar 2023, Arsen Arsenović wrote:
> Done!
> 
> Gerald, please update the scripts when you get a chance (but back the
> old ones up just in case!)

Done. Minus the backup, since everything is in Git anyways, isn't it? :-)

The script should run in about 1 hour and 45 minutes.

> If makeinfo is updated as I've asked in one of the other emails, will
> the script eventually automatically regenerate docs with the newer
> makeinfo?

Only what is covered by update_web_docs_git and then whenever our release 
managers create docs for a new release.

Which makes sense since we cannot guarantee older *.texi sources actually
building, or at least properly, with newer makeinfo releases. And there 
may be other factors, such as names of file changing,...


Which makes me realize we may have an issue building releases: 

Joseph, you are release manager - do you and your peers create releases on 
a local system or gcc.gnu.org? If the former, installing newer texinfo on 
gcc.gnu.org is not going to be sufficient.

Gerald

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-03-10 19:00                     ` Gerald Pfeifer
  2023-03-13  9:05                       ` Richard Biener
@ 2023-05-29 15:06                       ` NightStrike
  2023-05-29 17:26                         ` Arsen Arsenović
  1 sibling, 1 reply; 59+ messages in thread
From: NightStrike @ 2023-05-29 15:06 UTC (permalink / raw)
  To: Gerald Pfeifer
  Cc: Sandra Loosemore, Iain Sandoe, Richard Biener, Andrew Pinski,
	Sandra Loosemore, Arsen Arsenović,
	GCC Patches, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 898 bytes --]

On Fri, Mar 10, 2023, 14:00 Gerald Pfeifer <gerald@pfeifer.com> wrote:

> On Fri, 10 Mar 2023, Sandra Loosemore wrote:
> > AFAIK we have not knowingly changed any specific requirements beyond the
> > stated 4.7 and 4.9 for PDF output, but it concerns me that nobody is
> > likely to be using versions that old on a regular basis to make sure
> > they continue to work and we haven't unknowingly introduced dependencies
> > on newer Texinfo features.
>
> I'm generally very interested in ensuring we do not hurt users who do not
> have the latest and greatest of the day. On the other hand, if there's a
> few people using (more or less deliberately abandonware) we should not
> feel too bad if something breaks.
>

Can you include texinfo in a top-level directory and have it built with the
build, like you can with dejagnu? That's generally a decent path for
building new gcc on older systems.

>

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-05-29 15:06                       ` NightStrike
@ 2023-05-29 17:26                         ` Arsen Arsenović
  2023-05-29 19:27                           ` Sandra Loosemore
  0 siblings, 1 reply; 59+ messages in thread
From: Arsen Arsenović @ 2023-05-29 17:26 UTC (permalink / raw)
  To: NightStrike
  Cc: Gerald Pfeifer, Sandra Loosemore, Iain Sandoe, Richard Biener,
	Andrew Pinski, Sandra Loosemore, GCC Patches, Joseph Myers

[-- Attachment #1: Type: text/plain, Size: 975 bytes --]

Hi,

NightStrike <nightstrike@gmail.com> writes:

> Can you include texinfo in a top-level directory and have it built with the
> build, like you can with dejagnu? That's generally a decent path for
> building new gcc on older systems.

Note that the Texinfo requirement wasn't bumped, so nothing changed in
this regard, however, I believe that this is already done, as I see the
following in Makefile.def:

  host_modules= { module= texinfo; no_install= true; };

(... and some relevant logic in configure.ac)


I'm not a fan of building dependencies in-tree, but I can see the
usefulness; I believe a superior solution would be one that adds .info
(et al.) files to all generated tarballs (including snapshots), hence
eliminating any extra deps anyway.  These files aren't system-specific,
after all, as they are neither code nor conditionally compiled.

This is also assumed practice in other packages.

Have a lovely day.
-- 
Arsen Arsenović

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 251 bytes --]

^ permalink raw reply	[flat|nested] 59+ messages in thread

* Re: [PATCH v2 0/5] A small Texinfo refinement
  2023-05-29 17:26                         ` Arsen Arsenović
@ 2023-05-29 19:27                           ` Sandra Loosemore
  0 siblings, 0 replies; 59+ messages in thread
From: Sandra Loosemore @ 2023-05-29 19:27 UTC (permalink / raw)
  To: Arsen Arsenović, NightStrike
  Cc: Gerald Pfeifer, Iain Sandoe, Richard Biener, Andrew Pinski,
	GCC Patches, Joseph Myers

n 5/29/23 11:26, Arsen Arsenović wrote:
> Hi,
> 
> NightStrike <nightstrike@gmail.com> writes:
> 
>> Can you include texinfo in a top-level directory and have it built
>> with the build, like you can with dejagnu? That's generally a
>> decent path for building new gcc on older systems.
> 
> Note that the Texinfo requirement wasn't bumped, so nothing changed
> in this regard, [snip]

That is correct.  The only change we ended up making was to the build 
instructions, which now point out that new versions of Texinfo produce 
better HTML output, but that the version of Texinfo packaged with your 
OS distribution is adequate for building GCC otherwise.  We have GCC 
developers using quite old LTS distros with even older versions of 
Texinfo, so we would find out about it if something broke backward 
compatibility of the documentation.

-Sandra

^ permalink raw reply	[flat|nested] 59+ messages in thread

end of thread, other threads:[~2023-05-29 19:28 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-23 10:27 [PATCH v2 0/5] A small Texinfo refinement Arsen Arsenović
2023-02-23 10:27 ` [PATCH v2 1/5] docs: Create Indices appendix Arsen Arsenović
2023-03-09  3:16   ` Sandra Loosemore
2023-03-09 10:12     ` Arsen Arsenović
2023-03-09 20:38     ` Arsen Arsenović
2023-03-11  1:12       ` Sandra Loosemore
2023-03-11  1:34         ` Arsen Arsenović
2023-03-11 12:22         ` Arsen Arsenović
2023-03-11 19:22           ` Gerald Pfeifer
2023-03-11 20:22             ` Arsen Arsenović
2023-03-11 19:34           ` Sandra Loosemore
2023-03-11 20:14             ` Arsen Arsenović
2023-03-11 20:32               ` [PATCH v2] html: Set CONTENTS_OUTPUT_LOCATION=inline if makeinfo supports it Arsen Arsenović
2023-03-12 10:25               ` [PATCH v2 1/5] docs: Create Indices appendix Gerald Pfeifer
2023-03-12 12:23                 ` Arsen Arsenović
2023-02-23 10:27 ` [PATCH v2 2/5] **/*.texi: Reorder index entries Arsen Arsenović
2023-02-23 23:50   ` Gerald Pfeifer
2023-02-23 10:27 ` [PATCH v2 3/5] doc: Add @defbuiltin family of helpers, set documentlanguage Arsen Arsenović
2023-03-09 23:50   ` Sandra Loosemore
2023-02-23 10:27 ` [PATCH v2 4/5] Update texinfo.tex, remove the @gol macro/alias Arsen Arsenović
2023-03-09 23:55   ` Sandra Loosemore
2023-03-10  0:17     ` Gerald Pfeifer
2023-03-10 10:33       ` Thomas Schwinge
2023-03-10 12:49         ` Arsen Arsenović
2023-03-10 15:51           ` Gerald Pfeifer
2023-03-10 15:58             ` Arsen Arsenović
2023-03-10 12:48     ` Arsen Arsenović
2023-03-10 15:49     ` Arsen Arsenović
2023-03-18 20:14       ` Ping (gcc/configure.ac, docs): " Arsen Arsenović
2023-03-20 22:01         ` Sandra Loosemore
2023-03-20 23:06           ` Joseph Myers
2023-03-20 23:27             ` Arsen Arsenović
2023-03-20 23:35           ` Arsen Arsenović
2023-03-21  9:52             ` Arsen Arsenović
2023-03-21 23:11               ` Gerald Pfeifer
2023-02-23 10:27 ` [PATCH v2 5/5] update_web_docs_git: Update CSS reference to new manual CSS Arsen Arsenović
2023-03-10  0:07   ` Sandra Loosemore
2023-03-10 13:00     ` Arsen Arsenović
2023-02-25 22:04 ` [PATCH v2 0/5] A small Texinfo refinement Thomas Schwinge
2023-02-26 14:54   ` Arsen Arsenović
2023-03-08  1:56 ` Sandra Loosemore
2023-03-08  9:11   ` Arsen Arsenović
2023-03-08 18:38     ` Sandra Loosemore
2023-03-08 21:22       ` Arsen Arsenović
2023-03-09  1:09         ` Sandra Loosemore
2023-03-09  1:19           ` Andrew Pinski
2023-03-09  8:26             ` Richard Biener
2023-03-09 23:35               ` Sandra Loosemore
2023-03-10  8:50                 ` Iain Sandoe
2023-03-10 17:51                   ` Sandra Loosemore
2023-03-10 18:09                     ` Sandra Loosemore
2023-03-10 19:00                     ` Gerald Pfeifer
2023-03-13  9:05                       ` Richard Biener
2023-03-13 11:01                         ` Arsen Arsenović
2023-05-29 15:06                       ` NightStrike
2023-05-29 17:26                         ` Arsen Arsenović
2023-05-29 19:27                           ` Sandra Loosemore
2023-03-09 10:22           ` Arsen Arsenović
2023-03-09  8:28       ` Gerald Pfeifer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).