public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH 0/3] Option handling: add documentation URLs
@ 2023-11-10 21:42 David Malcolm
  2023-11-10 21:42 ` [PATCH 1/3] options: add gcc/regenerate-opt-urls.py David Malcolm
                   ` (3 more replies)
  0 siblings, 4 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-10 21:42 UTC (permalink / raw)
  To: gcc-patches, Joseph Myers; +Cc: David Malcolm

In r14-5118-gc5db4d8ba5f3de I added a mechanism to automatically add
URLs to quoted strings in diagnostics.  This was based on a data table
mapping strings to URLs, with placeholder data covering various pragmas
and a couple of options.

The following patches add automatic URLification in our diagnostic
messages to mentions of *all* of our options in quoted strings, linking
to our HTML documentation.

For example, with these patches, given:

  ./xgcc -B. -S t.c -Wctad-maybe-unsupported
  cc1: warning: command-line option ‘-Wctad-maybe-unsupported’ is valid for C++/ObjC++ but not for C

the quoted string '-Wctad-maybe-unsupported' gets automatically URLified
in a sufficiently modern terminal to:
  https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported

Objectives:
- integrate with DOCUMENTATION_ROOT_URL
- integrate with the existing .opt mechanisms
- automate keeping the URLs up-to-date
- work with target-specific options based on current configuration
- work with lang-specific options based on current configuration
- keep autogenerated material separate from the human-maintained .opt
  files
- no new build-time requirements (by using awk at build time)
- be maintainable

The approach is a new regenerate-opt-urls.py which:
- scrapes the generated HTML documentation finding anchors
  for options,
- reads all the .opt files in the source tree
- for each .opt file, generates a .opt.urls file; for each
  option in the .opt file it has either a UrlSuffix directives giving
  the final part of the URL of that option's documentation (relative
  to DOCUMENTATION_ROOT_URL), or a comment describing the problem.

regenerate-opt-urls.py is written in Python 3, and has unit tests.
I tested it with Python 3.8, and it probably works with earlier
releases of Python 3.
The .opt.urls files it generates become part of the source tree, and
would be regenerated by maintainers whenever new options are added.
Forgetting to update the files (or not having Python 3 handy) merely
means that URLs might be missing or out of date until someone else
regenerates them.

At build time, the .opt.urls are added to .opt files when regenerating
the optionslist file.  A new "options-urls-cc-gen.awk" is run at build
time on the optionslist to generate a "options-urls.cc" file containing
a big array of strings for all of the options present in the
configuration:

const char * const opt_url_suffixes[] =
{
  [...snip...]

  /* [563] (OPT_Wclass_memaccess) = */
  "gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess",

  /* [564] (OPT_Wclobbered) = */
  "gcc/Warning-Options.html#index-Wclobbered",

  [...snip...]
};

and this is then used by the gcc_urlifier class when emitting
diagnostics.

Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
OK for trunk?

David Malcolm (3):
  options: add gcc/regenerate-opt-urls.py
  Add generated .opt.urls files
  diagnostics: use the .opt.urls files to urlify quoted text

 gcc/Makefile.in                              |   18 +-
 gcc/ada/gcc-interface/lang.opt.urls          |   28 +
 gcc/analyzer/analyzer.opt.urls               |  206 ++
 gcc/c-family/c.opt.urls                      | 1404 ++++++++++++++
 gcc/common.opt.urls                          | 1823 ++++++++++++++++++
 gcc/config/aarch64/aarch64.opt.urls          |   84 +
 gcc/config/alpha/alpha.opt.urls              |   76 +
 gcc/config/alpha/elf.opt.urls                |    2 +
 gcc/config/arc/arc-tables.opt.urls           |    2 +
 gcc/config/arc/arc.opt.urls                  |  260 +++
 gcc/config/arm/arm-tables.opt.urls           |    2 +
 gcc/config/arm/arm.opt.urls                  |  149 ++
 gcc/config/arm/vxworks.opt.urls              |    2 +
 gcc/config/avr/avr.opt.urls                  |   71 +
 gcc/config/bfin/bfin.opt.urls                |   61 +
 gcc/config/bpf/bpf.opt.urls                  |   35 +
 gcc/config/c6x/c6x-tables.opt.urls           |    2 +
 gcc/config/c6x/c6x.opt.urls                  |   18 +
 gcc/config/cris/cris.opt.urls                |   65 +
 gcc/config/cris/elf.opt.urls                 |    8 +
 gcc/config/csky/csky.opt.urls                |  104 +
 gcc/config/csky/csky_tables.opt.urls         |    2 +
 gcc/config/darwin.opt.urls                   |  221 +++
 gcc/config/dragonfly.opt.urls                |    9 +
 gcc/config/epiphany/epiphany.opt.urls        |   52 +
 gcc/config/fr30/fr30.opt.urls                |    8 +
 gcc/config/freebsd.opt.urls                  |    9 +
 gcc/config/frv/frv.opt.urls                  |  111 ++
 gcc/config/ft32/ft32.opt.urls                |   20 +
 gcc/config/fused-madd.opt.urls               |    4 +
 gcc/config/g.opt.urls                        |    5 +
 gcc/config/gcn/gcn.opt.urls                  |   23 +
 gcc/config/gnu-user.opt.urls                 |    9 +
 gcc/config/h8300/h8300.opt.urls              |   29 +
 gcc/config/hpux11.opt.urls                   |    6 +
 gcc/config/i386/cygming.opt.urls             |   30 +
 gcc/config/i386/cygwin.opt.urls              |    6 +
 gcc/config/i386/djgpp.opt.urls               |    2 +
 gcc/config/i386/i386.opt.urls                |  602 ++++++
 gcc/config/i386/mingw-w64.opt.urls           |    5 +
 gcc/config/i386/mingw.opt.urls               |   12 +
 gcc/config/i386/nto.opt.urls                 |    5 +
 gcc/config/ia64/ia64.opt.urls                |  122 ++
 gcc/config/ia64/ilp32.opt.urls               |    8 +
 gcc/config/ia64/vms.opt.urls                 |    2 +
 gcc/config/iq2000/iq2000.opt.urls            |   14 +
 gcc/config/linux-android.opt.urls            |   11 +
 gcc/config/linux.opt.urls                    |   14 +
 gcc/config/lm32/lm32.opt.urls                |   14 +
 gcc/config/loongarch/loongarch.opt.urls      |   60 +
 gcc/config/lynx.opt.urls                     |    5 +
 gcc/config/m32c/m32c.opt.urls                |    8 +
 gcc/config/m32r/m32r.opt.urls                |   27 +
 gcc/config/m68k/ieee.opt.urls                |    4 +
 gcc/config/m68k/m68k-tables.opt.urls         |    2 +
 gcc/config/m68k/m68k.opt.urls                |  107 +
 gcc/config/m68k/uclinux.opt.urls             |    2 +
 gcc/config/mcore/mcore.opt.urls              |   38 +
 gcc/config/microblaze/microblaze.opt.urls    |   59 +
 gcc/config/mips/mips-tables.opt.urls         |    2 +
 gcc/config/mips/mips.opt.urls                |  269 +++
 gcc/config/mips/sde.opt.urls                 |    2 +
 gcc/config/mmix/mmix.opt.urls                |   44 +
 gcc/config/mn10300/mn10300.opt.urls          |   32 +
 gcc/config/moxie/moxie.opt.urls              |   14 +
 gcc/config/msp430/msp430.opt.urls            |   53 +
 gcc/config/nds32/nds32-elf.opt.urls          |    5 +
 gcc/config/nds32/nds32-linux.opt.urls        |    5 +
 gcc/config/nds32/nds32.opt.urls              |   57 +
 gcc/config/netbsd-elf.opt.urls               |    5 +
 gcc/config/netbsd.opt.urls                   |    6 +
 gcc/config/nios2/elf.opt.urls                |   14 +
 gcc/config/nios2/nios2.opt.urls              |   50 +
 gcc/config/nvptx/nvptx-gen.opt.urls          |    2 +
 gcc/config/nvptx/nvptx.opt.urls              |   29 +
 gcc/config/openbsd.opt.urls                  |    6 +
 gcc/config/or1k/elf.opt.urls                 |    8 +
 gcc/config/or1k/or1k.opt.urls                |   46 +
 gcc/config/pa/pa-hpux.opt.urls               |   11 +
 gcc/config/pa/pa-hpux1010.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1111.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1131.opt.urls           |    2 +
 gcc/config/pa/pa.opt.urls                    |   71 +
 gcc/config/pa/pa64-hpux.opt.urls             |    8 +
 gcc/config/pdp11/pdp11.opt.urls              |   41 +
 gcc/config/pru/pru.opt.urls                  |   17 +
 gcc/config/riscv/riscv.opt.urls              |   88 +
 gcc/config/rl78/rl78.opt.urls                |   31 +
 gcc/config/rpath.opt.urls                    |    2 +
 gcc/config/rs6000/476.opt.urls               |    2 +
 gcc/config/rs6000/aix64.opt.urls             |   23 +
 gcc/config/rs6000/darwin.opt.urls            |   14 +
 gcc/config/rs6000/linux64.opt.urls           |    4 +
 gcc/config/rs6000/rs6000-tables.opt.urls     |    2 +
 gcc/config/rs6000/rs6000.opt.urls            |  214 ++
 gcc/config/rs6000/sysv4.opt.urls             |   87 +
 gcc/config/rtems.opt.urls                    |    6 +
 gcc/config/rx/elf.opt.urls                   |   14 +
 gcc/config/rx/rx.opt.urls                    |   54 +
 gcc/config/s390/s390.opt.urls                |   92 +
 gcc/config/s390/tpf.opt.urls                 |    8 +
 gcc/config/sh/sh.opt.urls                    |  174 ++
 gcc/config/sh/superh.opt.urls                |    4 +
 gcc/config/sol2.opt.urls                     |   21 +
 gcc/config/sparc/long-double-switch.opt.urls |    6 +
 gcc/config/sparc/sparc.opt.urls              |  108 ++
 gcc/config/stormy16/stormy16.opt.urls        |    5 +
 gcc/config/v850/v850.opt.urls                |   60 +
 gcc/config/vax/elf.opt.urls                  |    2 +
 gcc/config/vax/vax.opt.urls                  |   10 +
 gcc/config/visium/visium.opt.urls            |   29 +
 gcc/config/vms/vms.opt.urls                  |    8 +
 gcc/config/vxworks-smp.opt.urls              |    5 +
 gcc/config/vxworks.opt.urls                  |   20 +
 gcc/config/xtensa/elf.opt.urls               |    5 +
 gcc/config/xtensa/uclinux.opt.urls           |    2 +
 gcc/config/xtensa/xtensa.opt.urls            |   37 +
 gcc/d/lang.opt.urls                          |   95 +
 gcc/doc/options.texi                         |   17 +
 gcc/fortran/lang.opt.urls                    |  153 ++
 gcc/gcc-urlifier.cc                          |  106 +-
 gcc/gcc-urlifier.def                         |    2 -
 gcc/gcc-urlifier.h                           |    2 +-
 gcc/gcc.cc                                   |    2 +-
 gcc/go/lang.opt.urls                         |   15 +
 gcc/lto/lang.opt.urls                        |    8 +
 gcc/m2/lang.opt.urls                         |  110 ++
 gcc/opt-functions.awk                        |    7 +
 gcc/options-urls-cc-gen.awk                  |   79 +
 gcc/opts.cc                                  |   75 +-
 gcc/opts.h                                   |    4 +
 gcc/params.opt.urls                          |    2 +
 gcc/regenerate-opt-urls.py                   |  366 ++++
 gcc/rust/lang.opt.urls                       |   27 +
 gcc/testsuite/lib/gcc-dg.exp                 |    6 +
 gcc/toplev.cc                                |    2 +-
 136 files changed, 9044 insertions(+), 61 deletions(-)
 create mode 100644 gcc/ada/gcc-interface/lang.opt.urls
 create mode 100644 gcc/analyzer/analyzer.opt.urls
 create mode 100644 gcc/c-family/c.opt.urls
 create mode 100644 gcc/common.opt.urls
 create mode 100644 gcc/config/aarch64/aarch64.opt.urls
 create mode 100644 gcc/config/alpha/alpha.opt.urls
 create mode 100644 gcc/config/alpha/elf.opt.urls
 create mode 100644 gcc/config/arc/arc-tables.opt.urls
 create mode 100644 gcc/config/arc/arc.opt.urls
 create mode 100644 gcc/config/arm/arm-tables.opt.urls
 create mode 100644 gcc/config/arm/arm.opt.urls
 create mode 100644 gcc/config/arm/vxworks.opt.urls
 create mode 100644 gcc/config/avr/avr.opt.urls
 create mode 100644 gcc/config/bfin/bfin.opt.urls
 create mode 100644 gcc/config/bpf/bpf.opt.urls
 create mode 100644 gcc/config/c6x/c6x-tables.opt.urls
 create mode 100644 gcc/config/c6x/c6x.opt.urls
 create mode 100644 gcc/config/cris/cris.opt.urls
 create mode 100644 gcc/config/cris/elf.opt.urls
 create mode 100644 gcc/config/csky/csky.opt.urls
 create mode 100644 gcc/config/csky/csky_tables.opt.urls
 create mode 100644 gcc/config/darwin.opt.urls
 create mode 100644 gcc/config/dragonfly.opt.urls
 create mode 100644 gcc/config/epiphany/epiphany.opt.urls
 create mode 100644 gcc/config/fr30/fr30.opt.urls
 create mode 100644 gcc/config/freebsd.opt.urls
 create mode 100644 gcc/config/frv/frv.opt.urls
 create mode 100644 gcc/config/ft32/ft32.opt.urls
 create mode 100644 gcc/config/fused-madd.opt.urls
 create mode 100644 gcc/config/g.opt.urls
 create mode 100644 gcc/config/gcn/gcn.opt.urls
 create mode 100644 gcc/config/gnu-user.opt.urls
 create mode 100644 gcc/config/h8300/h8300.opt.urls
 create mode 100644 gcc/config/hpux11.opt.urls
 create mode 100644 gcc/config/i386/cygming.opt.urls
 create mode 100644 gcc/config/i386/cygwin.opt.urls
 create mode 100644 gcc/config/i386/djgpp.opt.urls
 create mode 100644 gcc/config/i386/i386.opt.urls
 create mode 100644 gcc/config/i386/mingw-w64.opt.urls
 create mode 100644 gcc/config/i386/mingw.opt.urls
 create mode 100644 gcc/config/i386/nto.opt.urls
 create mode 100644 gcc/config/ia64/ia64.opt.urls
 create mode 100644 gcc/config/ia64/ilp32.opt.urls
 create mode 100644 gcc/config/ia64/vms.opt.urls
 create mode 100644 gcc/config/iq2000/iq2000.opt.urls
 create mode 100644 gcc/config/linux-android.opt.urls
 create mode 100644 gcc/config/linux.opt.urls
 create mode 100644 gcc/config/lm32/lm32.opt.urls
 create mode 100644 gcc/config/loongarch/loongarch.opt.urls
 create mode 100644 gcc/config/lynx.opt.urls
 create mode 100644 gcc/config/m32c/m32c.opt.urls
 create mode 100644 gcc/config/m32r/m32r.opt.urls
 create mode 100644 gcc/config/m68k/ieee.opt.urls
 create mode 100644 gcc/config/m68k/m68k-tables.opt.urls
 create mode 100644 gcc/config/m68k/m68k.opt.urls
 create mode 100644 gcc/config/m68k/uclinux.opt.urls
 create mode 100644 gcc/config/mcore/mcore.opt.urls
 create mode 100644 gcc/config/microblaze/microblaze.opt.urls
 create mode 100644 gcc/config/mips/mips-tables.opt.urls
 create mode 100644 gcc/config/mips/mips.opt.urls
 create mode 100644 gcc/config/mips/sde.opt.urls
 create mode 100644 gcc/config/mmix/mmix.opt.urls
 create mode 100644 gcc/config/mn10300/mn10300.opt.urls
 create mode 100644 gcc/config/moxie/moxie.opt.urls
 create mode 100644 gcc/config/msp430/msp430.opt.urls
 create mode 100644 gcc/config/nds32/nds32-elf.opt.urls
 create mode 100644 gcc/config/nds32/nds32-linux.opt.urls
 create mode 100644 gcc/config/nds32/nds32.opt.urls
 create mode 100644 gcc/config/netbsd-elf.opt.urls
 create mode 100644 gcc/config/netbsd.opt.urls
 create mode 100644 gcc/config/nios2/elf.opt.urls
 create mode 100644 gcc/config/nios2/nios2.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx-gen.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx.opt.urls
 create mode 100644 gcc/config/openbsd.opt.urls
 create mode 100644 gcc/config/or1k/elf.opt.urls
 create mode 100644 gcc/config/or1k/or1k.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1010.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1111.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1131.opt.urls
 create mode 100644 gcc/config/pa/pa.opt.urls
 create mode 100644 gcc/config/pa/pa64-hpux.opt.urls
 create mode 100644 gcc/config/pdp11/pdp11.opt.urls
 create mode 100644 gcc/config/pru/pru.opt.urls
 create mode 100644 gcc/config/riscv/riscv.opt.urls
 create mode 100644 gcc/config/rl78/rl78.opt.urls
 create mode 100644 gcc/config/rpath.opt.urls
 create mode 100644 gcc/config/rs6000/476.opt.urls
 create mode 100644 gcc/config/rs6000/aix64.opt.urls
 create mode 100644 gcc/config/rs6000/darwin.opt.urls
 create mode 100644 gcc/config/rs6000/linux64.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000-tables.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000.opt.urls
 create mode 100644 gcc/config/rs6000/sysv4.opt.urls
 create mode 100644 gcc/config/rtems.opt.urls
 create mode 100644 gcc/config/rx/elf.opt.urls
 create mode 100644 gcc/config/rx/rx.opt.urls
 create mode 100644 gcc/config/s390/s390.opt.urls
 create mode 100644 gcc/config/s390/tpf.opt.urls
 create mode 100644 gcc/config/sh/sh.opt.urls
 create mode 100644 gcc/config/sh/superh.opt.urls
 create mode 100644 gcc/config/sol2.opt.urls
 create mode 100644 gcc/config/sparc/long-double-switch.opt.urls
 create mode 100644 gcc/config/sparc/sparc.opt.urls
 create mode 100644 gcc/config/stormy16/stormy16.opt.urls
 create mode 100644 gcc/config/v850/v850.opt.urls
 create mode 100644 gcc/config/vax/elf.opt.urls
 create mode 100644 gcc/config/vax/vax.opt.urls
 create mode 100644 gcc/config/visium/visium.opt.urls
 create mode 100644 gcc/config/vms/vms.opt.urls
 create mode 100644 gcc/config/vxworks-smp.opt.urls
 create mode 100644 gcc/config/vxworks.opt.urls
 create mode 100644 gcc/config/xtensa/elf.opt.urls
 create mode 100644 gcc/config/xtensa/uclinux.opt.urls
 create mode 100644 gcc/config/xtensa/xtensa.opt.urls
 create mode 100644 gcc/d/lang.opt.urls
 create mode 100644 gcc/fortran/lang.opt.urls
 create mode 100644 gcc/go/lang.opt.urls
 create mode 100644 gcc/lto/lang.opt.urls
 create mode 100644 gcc/m2/lang.opt.urls
 create mode 100644 gcc/options-urls-cc-gen.awk
 create mode 100644 gcc/params.opt.urls
 create mode 100755 gcc/regenerate-opt-urls.py
 create mode 100644 gcc/rust/lang.opt.urls

-- 
2.26.3


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

* [PATCH 1/3] options: add gcc/regenerate-opt-urls.py
  2023-11-10 21:42 [PATCH 0/3] Option handling: add documentation URLs David Malcolm
@ 2023-11-10 21:42 ` David Malcolm
  2023-11-10 21:42 ` [PATCH 2/3] Add generated .opt.urls files David Malcolm
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-10 21:42 UTC (permalink / raw)
  To: gcc-patches, Joseph Myers; +Cc: David Malcolm

gcc/ChangeLog:
	* doc/options.texi (Option properties): Add UrlSuffix and
	description of regenerate-opt-urls.py.
	* regenerate-opt-urls.py: New file.
---
 gcc/doc/options.texi       |  17 ++
 gcc/regenerate-opt-urls.py | 366 +++++++++++++++++++++++++++++++++++++
 2 files changed, 383 insertions(+)
 create mode 100755 gcc/regenerate-opt-urls.py

diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi
index 715f0a1479c7..1ea4b33bc765 100644
--- a/gcc/doc/options.texi
+++ b/gcc/doc/options.texi
@@ -597,4 +597,21 @@ This warning option corresponds to @code{cpplib.h} warning reason code
 @var{CPP_W_Enum}.  This should only be used for warning options of the
 C-family front-ends.
 
+@item UrlSuffix(@var{url_suffix})
+Adjacent to each human-written @code{.opt} file in the source tree is
+a corresponding file with a @code{.opt.urls} extension.  These files
+contain @code{UrlSuffix} directives giving the ending part of the URL
+for the documentation of the option, such as:
+
+@smallexample
+Wabi-tag
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
+@end smallexample
+
+These URL suffixes are relative to @code{DOCUMENTATION_ROOT_URL}.
+
+There files are generated from the @code{.opt} files and the generated
+HTML documentation by @code{regenerate-opt-urls.py}, and should be
+regenerated when adding new options.
+
 @end table
diff --git a/gcc/regenerate-opt-urls.py b/gcc/regenerate-opt-urls.py
new file mode 100755
index 000000000000..e2c63c27cbad
--- /dev/null
+++ b/gcc/regenerate-opt-urls.py
@@ -0,0 +1,366 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2023 Free Software Foundation, Inc.
+#
+# Script to regenerate FOO.opt.urls files for each FOO.opt in the
+# source tree.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+DESCRIPTION = """
+Parses the generated HTML (from "make html") to locate anchors
+for options, then parses the .opt files within the source tree,
+and generates a .opt.urls in the source tree for each .opt file,
+giving URLs for each option, where it can.
+
+Usage (from build/gcc subdirectory):
+  ../../src/gcc/regenerate-opt-urls.py HTML/gcc-14.0.0/ ../../src
+
+To run unit tests:
+  ../../src/gcc/regenerate-opt-urls.py HTML/gcc-14.0.0/ ../../src --unit-test
+"""
+
+import argparse
+import json
+import os
+from pathlib import Path
+from pprint import pprint
+import sys
+import re
+import unittest
+
+def canonicalize_option_name(option_name):
+    if option_name.endswith('='):
+        option_name = option_name[0:-1]
+    return option_name
+
+
+def canonicalize_url_suffix(url_suffix):
+    """
+    Various options have anchors for both the positive and
+    negative form.  For example -Wcpp has both:
+      'gcc/Warning-Options.html#index-Wno-cpp'
+      'gcc/Warning-Options.html#index-Wcpp'
+
+    Return a canonicalized version of the url_suffix that
+    strips out any "no-" prefixes, for use in deduplication.
+    Note that the resulting url suffix might not correspond to
+    an actual anchor in the HTML.
+    """
+    url_suffix = re.sub('index-Wno-', 'index-W', url_suffix)
+    url_suffix = re.sub('index-fno-', 'index-f', url_suffix)
+    url_suffix = re.sub('_003d$', '', url_suffix)
+    url_suffix = re.sub('-([0-9]+)$', '', url_suffix)
+    return url_suffix
+
+
+class Index:
+    def __init__(self):
+        # Map from option name to set of URL suffixes
+        self.entries = {}
+
+    def add_entry(self, matched_text, url_suffix, verbose=False):
+        if 'Attributes.html' in url_suffix:
+            return
+        matched_text = canonicalize_option_name(matched_text)
+        if matched_text in self.entries:
+            # Partition by canonicalized url_suffixes; add the
+            # first url_suffix in each such partition.
+            c_new = canonicalize_url_suffix(url_suffix)
+            for entry in self.entries[matched_text]:
+                c_entry = canonicalize_url_suffix(entry)
+                if c_new == c_entry:
+                    return
+            self.entries[matched_text].add(url_suffix)
+        else:
+            self.entries[matched_text] = set([url_suffix])
+
+    def get_url_suffixes(self, text):
+        text = canonicalize_option_name(text)
+        return self.entries.get(text)
+
+    def parse_option_index(self, input_filename, verbose=False):
+        with open(input_filename) as f:
+            for line in f:
+                self.parse_html_line_option_index(line, verbose)
+
+    def parse_html_line_option_index(self, line, verbose=False):
+        if verbose:
+            print(repr(line))
+
+        # Update for this in the GCC website's bin/preprocess process_html_file:
+        #   | sed -e 's/_002d/-/g' -e 's/_002a/*/g' \
+        line = line.replace('_002d', '-')
+        line = line.replace('_002a', '*')
+
+        # e.g. <a href="Optimize-Options.html#index-fmodulo_002dsched"><code>fmodulo-sched</code></a>
+        m = re.search(r'<a href="([\S]+)"><code>([\S]+)</code></a>', line)
+        if not m:
+            return
+        if verbose:
+            print(m.groups())
+        url_suffix, index_text = m.groups()
+        #print(f'{url_suffix=} {index_text=}')
+        option = '-' + index_text
+
+        # Strip off "no-" prefixes from options
+        if option[:5] == '-Wno-':
+            option = '-W' + option[5:]
+        if option[:5] == '-fno-':
+            option = '-f' + option[5:]
+
+        url_suffix = 'gcc/' + url_suffix
+        self.add_entry(option, url_suffix, verbose)
+
+
+class TestParsingIndex(unittest.TestCase):
+    def test_parse_line(self):
+        index = Index()
+        index.parse_html_line_option_index('<a href="Optimize-Options.html#index-fmodulo_002dsched"><code>fmodulo-sched</code></a>')
+        self.assertEqual(index.get_url_suffixes('-fmodulo-sched'),
+                         {'gcc/Optimize-Options.html#index-fmodulo-sched'})
+
+    def test_negated_flag(self):
+        index = Index()
+        index.parse_html_line_option_index('<tr><td></td><td valign="top"><a href="Static-Analyzer-Options.html#index-fno_002danalyzer"><code>fno-analyzer</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Analyzer-Options.html">Static Analyzer Options</a></td></tr>\n')
+        self.assertEqual(index.get_url_suffixes('-fno-analyzer'), None)
+        self.assertEqual(index.get_url_suffixes('-fanalyzer'),
+                         {'gcc/Static-Analyzer-Options.html#index-fno-analyzer'})
+
+    def test_negated_warning(self):
+        index = Index()
+        index.parse_html_line_option_index('<tr><td></td><td valign="top"><a href="Warning-Options.html#index-Wno_002dalloca"><code>Wno-alloca</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Warning-Options.html">Warning Options</a></td></tr>\n')
+        self.assertEqual(index.get_url_suffixes('-Wno-alloca'),
+                         None)
+        self.assertEqual(index.get_url_suffixes('-Walloca'),
+                         {'gcc/Warning-Options.html#index-Wno-alloca'})
+
+    def test_parse_option_index(self):
+        index = Index()
+        index.parse_option_index(INPUT_HTML_PATH / 'gcc/Option-Index.html')
+        self.assertEqual(index.get_url_suffixes('-fmodulo-sched'),
+                         {'gcc/Optimize-Options.html#index-fmodulo-sched'})
+        self.assertEqual(index.get_url_suffixes('-O'),
+                         {'gcc/Optimize-Options.html#index-O'})
+        self.assertEqual(index.get_url_suffixes('-O0'),
+                         {'gcc/Optimize-Options.html#index-O0'})
+        self.assertEqual(index.get_url_suffixes('-Wframe-larger-than='),
+                         {'gcc/Warning-Options.html#index-Wframe-larger-than_003d'})
+
+        # Check an option with duplicates: '-march'
+        # The url_suffixes will be of the form
+        #  'gcc/HPPA-Options.html#index-march-5',
+        #  'gcc/LoongArch-Options.html#index-march-7',
+        # etc, where the trailing number is, unfortunately, likely to
+        # change from release to release.
+        # Replace them with 'NN' for the purpose of this test:
+        em_arch_url_suffixes = [re.sub('(-[0-9]+)', '-NN', s)
+                                for s in index.get_url_suffixes('-march')]
+        if 0:
+            print(em_arch_url_suffixes)
+        self.assertIn('gcc/ARM-Options.html#index-march-NN', em_arch_url_suffixes)
+        self.assertIn('gcc/x86-Options.html#index-march-NN', em_arch_url_suffixes)
+
+        self.assertEqual(index.get_url_suffixes('-Wcpp'),
+                         {'gcc/Warning-Options.html#index-Wcpp'})
+
+        self.assertNotEqual(index.get_url_suffixes('-march'), None)
+        self.assertNotEqual(index.get_url_suffixes('-march='), None)
+
+class OptFile:
+    def __init__(self, opt_path, rel_path):
+        """
+        Parse a .opt file.  Similar to opt-gather.awk.
+        """
+        self.rel_path = rel_path
+        assert rel_path.startswith('gcc')
+        # self.filename = os.path.basename(path)
+        self.records = []
+        with open(opt_path) as f:
+            flag = 0
+            for line in f:
+                #print(repr(line))
+                if re.match(r'[ \t]*(;|$)', line):
+                    flag = 0
+                else:
+                    if flag == 0:
+                        self.records.append([line])
+                        flag = 1
+                    else:
+                        self.records[-1].append(line)
+
+# Mapping from target-specific page to subdirectory containing .opt files
+# documented on that page.
+
+TARGET_SPECIFIC_PAGES = {
+    'gcc/AArch64-Options.html' : 'gcc/config/aarch64/',
+    'gcc/AMD-GCN-Options.html' : 'gcc/config/gcn/',
+    'gcc/ARC-Options.html' : 'gcc/config/arc/',
+    'gcc/ARC-Options.html' : 'gcc/config/arc/',
+    'gcc/ARM-Options.html' : 'gcc/config/arm/',
+    'gcc/AVR-Options.html' : 'gcc/config/avr/',
+    'gcc/Adapteva-Epiphany-Options.html' : 'gcc/config/epiphany/',
+    'gcc/Blackfin-Options.html' : 'gcc/config/bfin/',
+    'gcc/C-SKY-Options.html' : 'gcc/config/csky/',
+    'gcc/C6X-Options.html' : 'gcc/config/c6x/',
+    'gcc/CRIS-Options.html' : 'gcc/config/cris/',
+    'gcc/DEC-Alpha-Options.html' : 'gcc/config/alpha/',
+    'gcc/FR30-Options.html' : 'gcc/config/fr30/',
+    'gcc/FRV-Options.html' : 'gcc/config/frv/',
+    'gcc/FT32-Options.html' : 'gcc/config/ft32/',
+    'gcc/H8_002f300-Options.html' : 'gcc/config/h8300/',
+    'gcc/HPPA-Options.html' : 'gcc/config/pa/',
+    'gcc/IA-64-Options.html' : 'gcc/config/ia64/',
+    'gcc/LoongArch-Options.html' : 'gcc/config/loongarch/',
+    'gcc/M32C-Options.html' : 'gcc/config/m32c/',
+    'gcc/M32R_002fD-Options.html' : 'gcc/config/m32r/',
+    'gcc/M680x0-Options.html' : 'gcc/config/m68k/',
+    'gcc/MCore-Options.html' : 'gcc/config/mcore/',
+    'gcc/MIPS-Options.html' : 'gcc/config/mips/',
+    'gcc/MMIX-Options.html' : 'gcc/config/mmix/',
+    'gcc/MN10300-Options.html' : 'gcc/config/mn10300/',
+    'gcc/MSP430-Options.html' : 'gcc/config/msp430/',
+    'gcc/MicroBlaze-Options.html' : 'gcc/config/microblaze/',
+    'gcc/Moxie-Options.html' : 'gcc/config/moxie/',
+    'gcc/NDS32-Options.html' : 'gcc/config/nds32/',
+    'gcc/Nios-II-Options.html' : 'gcc/config/nios2/',
+    'gcc/Nvidia-PTX-Options.html' : 'gcc/config/nvptx/',
+    'gcc/OpenRISC-Options.html' : 'gcc/config/or1k/',
+    'gcc/PDP-11-Options.html' : 'gcc/config/pdp11',
+    'gcc/PRU-Options.html' : 'gcc/config/pru/',
+    'gcc/RISC-V-Options.html' : 'gcc/config/riscv/',
+    'gcc/RL78-Options.html' : 'gcc/config/rl78/',
+    'gcc/RS_002f6000-and-PowerPC-Options.html' : 'gcc/config/rs6000/',
+    'gcc/RX-Options.html' : 'gcc/config/rx/',
+    'gcc/SH-Options.html' : 'gcc/config/sh/',
+    'gcc/SPARC-Options.html' : 'gcc/config/sparc/',
+    'gcc/S_002f390-and-zSeries-Options.html' : 'gcc/config/s390',
+    'gcc/V850-Options.html' : 'gcc/config/vax/',
+    'gcc/VAX-Options.html' : 'gcc/config/v850/',
+    'gcc/Visium-Options.html' : 'gcc/config/visium/',
+    'gcc/Xstormy16-Options.html' : 'gcc/config/stormy16/',
+    'gcc/Xtensa-Options.html' : 'gcc/config/xtensa/',
+    'gcc/eBPF-Options.html' : 'gcc/config/bpf/',
+    'gcc/x86-Options.html' : 'gcc/config/i386/',
+}
+
+def target_specific(url_suffix):
+    for page_prefix, subdir in TARGET_SPECIFIC_PAGES.items():
+        if url_suffix.startswith(page_prefix):
+            return subdir
+
+def filter_urlsuffixes_for_optfile(optfile, url_suffixes):
+    """
+    Filter out target-specific options for the wrong target.
+    """
+    result = set()
+    for url_suffix in url_suffixes:
+        subdir = target_specific(url_suffix)
+        if subdir:
+            if 0:
+                print(f'{optfile.rel_path=}')
+                print(f'{url_suffixes=}')
+                print(f'{subdir=}')
+            if not optfile.rel_path.startswith(subdir):
+                # Skip this
+                continue
+        result.add(url_suffix)
+    return result
+
+
+class TestFiltering(unittest.TestCase):
+    def test_target_specific(self):
+        self.assertEqual(target_specific('gcc/Preprocessor-Options.html#index-A'),
+                         None)
+        self.assertEqual(target_specific('gcc/MMIX-Options.html#index-mknuthdiv'),
+                         'gcc/config/mmix/')
+
+    def test_filter(self):
+        s = {'gcc/MIPS-Options.html#index-munaligned-access-1',
+             'gcc/ARM-Options.html#index-munaligned-access'}
+        arm_optfile = OptFile('/dev/null', 'gcc/config/arm/arm.opt')
+        mips_optfile = OptFile('/dev/null', 'gcc/config/mips/mips.opt')
+        self.assertEqual(
+            filter_urlsuffixes_for_optfile(arm_optfile, s),
+            {'gcc/ARM-Options.html#index-munaligned-access'})
+        self.assertEqual(
+            filter_urlsuffixes_for_optfile(mips_optfile, s),
+            {'gcc/MIPS-Options.html#index-munaligned-access-1'})
+
+
+def write_url_file(index, optfile, dstfile):
+    dstfile.write('; Autogenerated by regenerate-opt-urls.py from %s'
+                  ' and generated HTML\n\n'
+                  % optfile.rel_path)
+    for record in optfile.records:
+        opt = '-' + record[0].strip()
+        if 0:
+            dstfile.write('; entry for %s\n' % record)
+            dstfile.write('; opt=%r\n' % opt)
+        url_suffixes = index.get_url_suffixes(opt)
+        if 0:
+            dstfile.write('; url_suffixes=%r\n' % url_suffixes)
+        if url_suffixes:
+            url_suffixes = filter_urlsuffixes_for_optfile(optfile, url_suffixes)
+            if url_suffixes:
+                if len(url_suffixes) == 1:
+                    dstfile.write('%s\n' % opt[1:])
+                    dstfile.write('UrlSuffix(%s)\n' % list(url_suffixes)[0])
+                else:
+                    dstfile.write('; skipping %r due to multiple URLs:\n'
+                                  % opt[1:])
+                    for u in sorted(url_suffixes):
+                        dstfile.write(';   duplicate: %r\n' % u)
+            else:
+                dstfile.write('; skipping %r due to finding no URLs\n'
+                              % opt[1:])
+            dstfile.write('\n')
+
+
+def main(args):
+    index = Index()
+    index.parse_option_index(args.base_html_dir / 'gcc/Option-Index.html')
+    if 0:
+        pprint(index.entries)
+    for root, dirs, files in os.walk(args.src_gcc_dir):
+        for f in files:
+            if f.endswith('.opt'):
+                opt_path = os.path.join(root, f)
+                rel_path = os.path.relpath(opt_path, args.src_gcc_dir)
+                optfile = OptFile(opt_path, rel_path)
+                if 0:
+                    pprint(optfile.path)
+                    pprint(optfile.records)
+                dstname = f + '.urls'
+                urlfile = os.path.join(root, dstname)
+                with open(urlfile, 'w') as dstfile:
+                    write_url_file(index, optfile, dstfile)
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description=DESCRIPTION,
+                                     formatter_class=argparse.RawDescriptionHelpFormatter)
+    parser.add_argument('base_html_dir', type=Path)
+    parser.add_argument('src_gcc_dir', type=Path)
+    parser.add_argument('--unit-test', action='store_true')
+    args = parser.parse_args()
+
+    if args.unit_test:
+        INPUT_HTML_PATH = args.base_html_dir
+        unittest.main(argv=[sys.argv[0], '-v'])
+    else:
+        main(args)
-- 
2.26.3


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

* [PATCH 2/3] Add generated .opt.urls files
  2023-11-10 21:42 [PATCH 0/3] Option handling: add documentation URLs David Malcolm
  2023-11-10 21:42 ` [PATCH 1/3] options: add gcc/regenerate-opt-urls.py David Malcolm
@ 2023-11-10 21:42 ` David Malcolm
  2023-11-12 10:56   ` Iain Buclaw
  2023-11-13 13:11   ` Marc Poulhiès
  2023-11-10 21:42 ` [PATCH 3/3] diagnostics: use the .opt.urls files to urlify quoted text David Malcolm
  2023-11-14  0:12 ` [PATCH 0/3] Option handling: add documentation URLs Joseph Myers
  3 siblings, 2 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-10 21:42 UTC (permalink / raw)
  To: gcc-patches, Joseph Myers; +Cc: David Malcolm

gcc/ada/ChangeLog:
	* gcc-interface/lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/analyzer/ChangeLog:
	* analyzer.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/c-family/ChangeLog:
	* c.opt.urls: New file, autogenerated by regenerate-opt-urls.py.

gcc/ChangeLog:
	* common.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.
	* config/aarch64/aarch64.opt.urls: Likewise.
	* config/alpha/alpha.opt.urls: Likewise.
	* config/alpha/elf.opt.urls: Likewise.
	* config/arc/arc-tables.opt.urls: Likewise.
	* config/arc/arc.opt.urls: Likewise.
	* config/arm/arm-tables.opt.urls: Likewise.
	* config/arm/arm.opt.urls: Likewise.
	* config/arm/vxworks.opt.urls: Likewise.
	* config/avr/avr.opt.urls: Likewise.
	* config/bpf/bpf.opt.urls: Likewise.
	* config/c6x/c6x-tables.opt.urls: Likewise.
	* config/c6x/c6x.opt.urls: Likewise.
	* config/cris/cris.opt.urls: Likewise.
	* config/cris/elf.opt.urls: Likewise.
	* config/csky/csky.opt.urls: Likewise.
	* config/csky/csky_tables.opt.urls: Likewise.
	* config/darwin.opt.urls: Likewise.
	* config/dragonfly.opt.urls: Likewise.
	* config/epiphany/epiphany.opt.urls: Likewise.
	* config/fr30/fr30.opt.urls: Likewise.
	* config/freebsd.opt.urls: Likewise.
	* config/frv/frv.opt.urls: Likewise.
	* config/ft32/ft32.opt.urls: Likewise.
	* config/fused-madd.opt.urls: Likewise.
	* config/g.opt.urls: Likewise.
	* config/gcn/gcn.opt.urls: Likewise.
	* config/gnu-user.opt.urls: Likewise.
	* config/h8300/h8300.opt.urls: Likewise.
	* config/hpux11.opt.urls: Likewise.
	* config/i386/cygming.opt.urls: Likewise.
	* config/i386/cygwin.opt.urls: Likewise.
	* config/i386/djgpp.opt.urls: Likewise.
	* config/i386/i386.opt.urls: Likewise.
	* config/i386/mingw-w64.opt.urls: Likewise.
	* config/i386/mingw.opt.urls: Likewise.
	* config/i386/nto.opt.urls: Likewise.
	* config/ia64/ia64.opt.urls: Likewise.
	* config/ia64/ilp32.opt.urls: Likewise.
	* config/ia64/vms.opt.urls: Likewise.
	* config/iq2000/iq2000.opt.urls: Likewise.
	* config/linux-android.opt.urls: Likewise.
	* config/linux.opt.urls: Likewise.
	* config/lm32/lm32.opt.urls: Likewise.
	* config/loongarch/loongarch.opt.urls: Likewise.
	* config/lynx.opt.urls: Likewise.
	* config/m32c/m32c.opt.urls: Likewise.
	* config/m32r/m32r.opt.urls: Likewise.
	* config/m68k/ieee.opt.urls: Likewise.
	* config/m68k/m68k-tables.opt.urls: Likewise.
	* config/m68k/m68k.opt.urls: Likewise.
	* config/m68k/uclinux.opt.urls: Likewise.
	* config/mcore/mcore.opt.urls: Likewise.
	* config/microblaze/microblaze.opt.urls: Likewise.
	* config/mips/mips-tables.opt.urls: Likewise.
	* config/mips/mips.opt.urls: Likewise.
	* config/mips/sde.opt.urls: Likewise.
	* config/mmix/mmix.opt.urls: Likewise.
	* config/mn10300/mn10300.opt.urls: Likewise.
	* config/moxie/moxie.opt.urls: Likewise.
	* config/msp430/msp430.opt.urls: Likewise.
	* config/nds32/nds32-elf.opt.urls: Likewise.
	* config/nds32/nds32-linux.opt.urls: Likewise.
	* config/nds32/nds32.opt.urls: Likewise.
	* config/netbsd-elf.opt.urls: Likewise.
	* config/netbsd.opt.urls: Likewise.
	* config/nios2/elf.opt.urls: Likewise.
	* config/nios2/nios2.opt.urls: Likewise.
	* config/nvptx/nvptx-gen.opt.urls: Likewise.
	* config/nvptx/nvptx.opt.urls: Likewise.
	* config/openbsd.opt.urls: Likewise.
	* config/or1k/elf.opt.urls: Likewise.
	* config/or1k/or1k.opt.urls: Likewise.
	* config/pa/pa-hpux.opt.urls: Likewise.
	* config/pa/pa-hpux1010.opt.urls: Likewise.
	* config/pa/pa-hpux1111.opt.urls: Likewise.
	* config/pa/pa-hpux1131.opt.urls: Likewise.
	* config/pa/pa.opt.urls: Likewise.
	* config/pa/pa64-hpux.opt.urls: Likewise.
	* config/pdp11/pdp11.opt.urls: Likewise.
	* config/pru/pru.opt.urls: Likewise.
	* config/riscv/riscv.opt.urls: Likewise.
	* config/rl78/rl78.opt.urls: Likewise.
	* config/rpath.opt.urls: Likewise.
	* config/rs6000/476.opt.urls: Likewise.
	* config/rs6000/aix64.opt.urls: Likewise.
	* config/rs6000/darwin.opt.urls: Likewise.
	* config/rs6000/linux64.opt.urls: Likewise.
	* config/rs6000/rs6000-tables.opt.urls: Likewise.
	* config/rs6000/rs6000.opt.urls: Likewise.
	* config/rs6000/sysv4.opt.urls: Likewise.
	* config/rtems.opt.urls: Likewise.
	* config/rx/elf.opt.urls: Likewise.
	* config/rx/rx.opt.urls: Likewise.
	* config/s390/s390.opt.urls: Likewise.
	* config/s390/tpf.opt.urls: Likewise.
	* config/sh/sh.opt.urls: Likewise.
	* config/sh/superh.opt.urls: Likewise.
	* config/sol2.opt.urls: Likewise.
	* config/sparc/long-double-switch.opt.urls: Likewise.
	* config/sparc/sparc.opt.urls: Likewise.
	* config/stormy16/stormy16.opt.urls: Likewise.
	* config/v850/v850.opt.urls: Likewise.
	* config/vax/elf.opt.urls: Likewise.
	* config/vax/vax.opt.urls: Likewise.
	* config/visium/visium.opt.urls: Likewise.
	* config/vms/vms.opt.urls: Likewise.
	* config/vxworks-smp.opt.urls: Likewise.
	* config/vxworks.opt.urls: Likewise.
	* config/xtensa/elf.opt.urls: Likewise.
	* config/xtensa/uclinux.opt.urls: Likewise.
	* config/xtensa/xtensa.opt.urls: Likewise.

gcc/d/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/fortran/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/go/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/lto/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/m2/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/ChangeLog:
	* params.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/rust/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.
---
 gcc/ada/gcc-interface/lang.opt.urls          |   28 +
 gcc/analyzer/analyzer.opt.urls               |  206 ++
 gcc/c-family/c.opt.urls                      | 1404 ++++++++++++++
 gcc/common.opt.urls                          | 1823 ++++++++++++++++++
 gcc/config/aarch64/aarch64.opt.urls          |   84 +
 gcc/config/alpha/alpha.opt.urls              |   76 +
 gcc/config/alpha/elf.opt.urls                |    2 +
 gcc/config/arc/arc-tables.opt.urls           |    2 +
 gcc/config/arc/arc.opt.urls                  |  260 +++
 gcc/config/arm/arm-tables.opt.urls           |    2 +
 gcc/config/arm/arm.opt.urls                  |  149 ++
 gcc/config/arm/vxworks.opt.urls              |    2 +
 gcc/config/avr/avr.opt.urls                  |   71 +
 gcc/config/bfin/bfin.opt.urls                |   61 +
 gcc/config/bpf/bpf.opt.urls                  |   35 +
 gcc/config/c6x/c6x-tables.opt.urls           |    2 +
 gcc/config/c6x/c6x.opt.urls                  |   18 +
 gcc/config/cris/cris.opt.urls                |   65 +
 gcc/config/cris/elf.opt.urls                 |    8 +
 gcc/config/csky/csky.opt.urls                |  104 +
 gcc/config/csky/csky_tables.opt.urls         |    2 +
 gcc/config/darwin.opt.urls                   |  221 +++
 gcc/config/dragonfly.opt.urls                |    9 +
 gcc/config/epiphany/epiphany.opt.urls        |   52 +
 gcc/config/fr30/fr30.opt.urls                |    8 +
 gcc/config/freebsd.opt.urls                  |    9 +
 gcc/config/frv/frv.opt.urls                  |  111 ++
 gcc/config/ft32/ft32.opt.urls                |   20 +
 gcc/config/fused-madd.opt.urls               |    4 +
 gcc/config/g.opt.urls                        |    5 +
 gcc/config/gcn/gcn.opt.urls                  |   23 +
 gcc/config/gnu-user.opt.urls                 |    9 +
 gcc/config/h8300/h8300.opt.urls              |   29 +
 gcc/config/hpux11.opt.urls                   |    6 +
 gcc/config/i386/cygming.opt.urls             |   30 +
 gcc/config/i386/cygwin.opt.urls              |    6 +
 gcc/config/i386/djgpp.opt.urls               |    2 +
 gcc/config/i386/i386.opt.urls                |  602 ++++++
 gcc/config/i386/mingw-w64.opt.urls           |    5 +
 gcc/config/i386/mingw.opt.urls               |   12 +
 gcc/config/i386/nto.opt.urls                 |    5 +
 gcc/config/ia64/ia64.opt.urls                |  122 ++
 gcc/config/ia64/ilp32.opt.urls               |    8 +
 gcc/config/ia64/vms.opt.urls                 |    2 +
 gcc/config/iq2000/iq2000.opt.urls            |   14 +
 gcc/config/linux-android.opt.urls            |   11 +
 gcc/config/linux.opt.urls                    |   14 +
 gcc/config/lm32/lm32.opt.urls                |   14 +
 gcc/config/loongarch/loongarch.opt.urls      |   60 +
 gcc/config/lynx.opt.urls                     |    5 +
 gcc/config/m32c/m32c.opt.urls                |    8 +
 gcc/config/m32r/m32r.opt.urls                |   27 +
 gcc/config/m68k/ieee.opt.urls                |    4 +
 gcc/config/m68k/m68k-tables.opt.urls         |    2 +
 gcc/config/m68k/m68k.opt.urls                |  107 +
 gcc/config/m68k/uclinux.opt.urls             |    2 +
 gcc/config/mcore/mcore.opt.urls              |   38 +
 gcc/config/microblaze/microblaze.opt.urls    |   59 +
 gcc/config/mips/mips-tables.opt.urls         |    2 +
 gcc/config/mips/mips.opt.urls                |  269 +++
 gcc/config/mips/sde.opt.urls                 |    2 +
 gcc/config/mmix/mmix.opt.urls                |   44 +
 gcc/config/mn10300/mn10300.opt.urls          |   32 +
 gcc/config/moxie/moxie.opt.urls              |   14 +
 gcc/config/msp430/msp430.opt.urls            |   53 +
 gcc/config/nds32/nds32-elf.opt.urls          |    5 +
 gcc/config/nds32/nds32-linux.opt.urls        |    5 +
 gcc/config/nds32/nds32.opt.urls              |   57 +
 gcc/config/netbsd-elf.opt.urls               |    5 +
 gcc/config/netbsd.opt.urls                   |    6 +
 gcc/config/nios2/elf.opt.urls                |   14 +
 gcc/config/nios2/nios2.opt.urls              |   50 +
 gcc/config/nvptx/nvptx-gen.opt.urls          |    2 +
 gcc/config/nvptx/nvptx.opt.urls              |   29 +
 gcc/config/openbsd.opt.urls                  |    6 +
 gcc/config/or1k/elf.opt.urls                 |    8 +
 gcc/config/or1k/or1k.opt.urls                |   46 +
 gcc/config/pa/pa-hpux.opt.urls               |   11 +
 gcc/config/pa/pa-hpux1010.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1111.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1131.opt.urls           |    2 +
 gcc/config/pa/pa.opt.urls                    |   71 +
 gcc/config/pa/pa64-hpux.opt.urls             |    8 +
 gcc/config/pdp11/pdp11.opt.urls              |   41 +
 gcc/config/pru/pru.opt.urls                  |   17 +
 gcc/config/riscv/riscv.opt.urls              |   88 +
 gcc/config/rl78/rl78.opt.urls                |   31 +
 gcc/config/rpath.opt.urls                    |    2 +
 gcc/config/rs6000/476.opt.urls               |    2 +
 gcc/config/rs6000/aix64.opt.urls             |   23 +
 gcc/config/rs6000/darwin.opt.urls            |   14 +
 gcc/config/rs6000/linux64.opt.urls           |    4 +
 gcc/config/rs6000/rs6000-tables.opt.urls     |    2 +
 gcc/config/rs6000/rs6000.opt.urls            |  214 ++
 gcc/config/rs6000/sysv4.opt.urls             |   87 +
 gcc/config/rtems.opt.urls                    |    6 +
 gcc/config/rx/elf.opt.urls                   |   14 +
 gcc/config/rx/rx.opt.urls                    |   54 +
 gcc/config/s390/s390.opt.urls                |   92 +
 gcc/config/s390/tpf.opt.urls                 |    8 +
 gcc/config/sh/sh.opt.urls                    |  174 ++
 gcc/config/sh/superh.opt.urls                |    4 +
 gcc/config/sol2.opt.urls                     |   21 +
 gcc/config/sparc/long-double-switch.opt.urls |    6 +
 gcc/config/sparc/sparc.opt.urls              |  108 ++
 gcc/config/stormy16/stormy16.opt.urls        |    5 +
 gcc/config/v850/v850.opt.urls                |   60 +
 gcc/config/vax/elf.opt.urls                  |    2 +
 gcc/config/vax/vax.opt.urls                  |   10 +
 gcc/config/visium/visium.opt.urls            |   29 +
 gcc/config/vms/vms.opt.urls                  |    8 +
 gcc/config/vxworks-smp.opt.urls              |    5 +
 gcc/config/vxworks.opt.urls                  |   20 +
 gcc/config/xtensa/elf.opt.urls               |    5 +
 gcc/config/xtensa/uclinux.opt.urls           |    2 +
 gcc/config/xtensa/xtensa.opt.urls            |   37 +
 gcc/d/lang.opt.urls                          |   95 +
 gcc/fortran/lang.opt.urls                    |  153 ++
 gcc/go/lang.opt.urls                         |   15 +
 gcc/lto/lang.opt.urls                        |    8 +
 gcc/m2/lang.opt.urls                         |  110 ++
 gcc/params.opt.urls                          |    2 +
 gcc/rust/lang.opt.urls                       |   27 +
 123 files changed, 8419 insertions(+)
 create mode 100644 gcc/ada/gcc-interface/lang.opt.urls
 create mode 100644 gcc/analyzer/analyzer.opt.urls
 create mode 100644 gcc/c-family/c.opt.urls
 create mode 100644 gcc/common.opt.urls
 create mode 100644 gcc/config/aarch64/aarch64.opt.urls
 create mode 100644 gcc/config/alpha/alpha.opt.urls
 create mode 100644 gcc/config/alpha/elf.opt.urls
 create mode 100644 gcc/config/arc/arc-tables.opt.urls
 create mode 100644 gcc/config/arc/arc.opt.urls
 create mode 100644 gcc/config/arm/arm-tables.opt.urls
 create mode 100644 gcc/config/arm/arm.opt.urls
 create mode 100644 gcc/config/arm/vxworks.opt.urls
 create mode 100644 gcc/config/avr/avr.opt.urls
 create mode 100644 gcc/config/bfin/bfin.opt.urls
 create mode 100644 gcc/config/bpf/bpf.opt.urls
 create mode 100644 gcc/config/c6x/c6x-tables.opt.urls
 create mode 100644 gcc/config/c6x/c6x.opt.urls
 create mode 100644 gcc/config/cris/cris.opt.urls
 create mode 100644 gcc/config/cris/elf.opt.urls
 create mode 100644 gcc/config/csky/csky.opt.urls
 create mode 100644 gcc/config/csky/csky_tables.opt.urls
 create mode 100644 gcc/config/darwin.opt.urls
 create mode 100644 gcc/config/dragonfly.opt.urls
 create mode 100644 gcc/config/epiphany/epiphany.opt.urls
 create mode 100644 gcc/config/fr30/fr30.opt.urls
 create mode 100644 gcc/config/freebsd.opt.urls
 create mode 100644 gcc/config/frv/frv.opt.urls
 create mode 100644 gcc/config/ft32/ft32.opt.urls
 create mode 100644 gcc/config/fused-madd.opt.urls
 create mode 100644 gcc/config/g.opt.urls
 create mode 100644 gcc/config/gcn/gcn.opt.urls
 create mode 100644 gcc/config/gnu-user.opt.urls
 create mode 100644 gcc/config/h8300/h8300.opt.urls
 create mode 100644 gcc/config/hpux11.opt.urls
 create mode 100644 gcc/config/i386/cygming.opt.urls
 create mode 100644 gcc/config/i386/cygwin.opt.urls
 create mode 100644 gcc/config/i386/djgpp.opt.urls
 create mode 100644 gcc/config/i386/i386.opt.urls
 create mode 100644 gcc/config/i386/mingw-w64.opt.urls
 create mode 100644 gcc/config/i386/mingw.opt.urls
 create mode 100644 gcc/config/i386/nto.opt.urls
 create mode 100644 gcc/config/ia64/ia64.opt.urls
 create mode 100644 gcc/config/ia64/ilp32.opt.urls
 create mode 100644 gcc/config/ia64/vms.opt.urls
 create mode 100644 gcc/config/iq2000/iq2000.opt.urls
 create mode 100644 gcc/config/linux-android.opt.urls
 create mode 100644 gcc/config/linux.opt.urls
 create mode 100644 gcc/config/lm32/lm32.opt.urls
 create mode 100644 gcc/config/loongarch/loongarch.opt.urls
 create mode 100644 gcc/config/lynx.opt.urls
 create mode 100644 gcc/config/m32c/m32c.opt.urls
 create mode 100644 gcc/config/m32r/m32r.opt.urls
 create mode 100644 gcc/config/m68k/ieee.opt.urls
 create mode 100644 gcc/config/m68k/m68k-tables.opt.urls
 create mode 100644 gcc/config/m68k/m68k.opt.urls
 create mode 100644 gcc/config/m68k/uclinux.opt.urls
 create mode 100644 gcc/config/mcore/mcore.opt.urls
 create mode 100644 gcc/config/microblaze/microblaze.opt.urls
 create mode 100644 gcc/config/mips/mips-tables.opt.urls
 create mode 100644 gcc/config/mips/mips.opt.urls
 create mode 100644 gcc/config/mips/sde.opt.urls
 create mode 100644 gcc/config/mmix/mmix.opt.urls
 create mode 100644 gcc/config/mn10300/mn10300.opt.urls
 create mode 100644 gcc/config/moxie/moxie.opt.urls
 create mode 100644 gcc/config/msp430/msp430.opt.urls
 create mode 100644 gcc/config/nds32/nds32-elf.opt.urls
 create mode 100644 gcc/config/nds32/nds32-linux.opt.urls
 create mode 100644 gcc/config/nds32/nds32.opt.urls
 create mode 100644 gcc/config/netbsd-elf.opt.urls
 create mode 100644 gcc/config/netbsd.opt.urls
 create mode 100644 gcc/config/nios2/elf.opt.urls
 create mode 100644 gcc/config/nios2/nios2.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx-gen.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx.opt.urls
 create mode 100644 gcc/config/openbsd.opt.urls
 create mode 100644 gcc/config/or1k/elf.opt.urls
 create mode 100644 gcc/config/or1k/or1k.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1010.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1111.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1131.opt.urls
 create mode 100644 gcc/config/pa/pa.opt.urls
 create mode 100644 gcc/config/pa/pa64-hpux.opt.urls
 create mode 100644 gcc/config/pdp11/pdp11.opt.urls
 create mode 100644 gcc/config/pru/pru.opt.urls
 create mode 100644 gcc/config/riscv/riscv.opt.urls
 create mode 100644 gcc/config/rl78/rl78.opt.urls
 create mode 100644 gcc/config/rpath.opt.urls
 create mode 100644 gcc/config/rs6000/476.opt.urls
 create mode 100644 gcc/config/rs6000/aix64.opt.urls
 create mode 100644 gcc/config/rs6000/darwin.opt.urls
 create mode 100644 gcc/config/rs6000/linux64.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000-tables.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000.opt.urls
 create mode 100644 gcc/config/rs6000/sysv4.opt.urls
 create mode 100644 gcc/config/rtems.opt.urls
 create mode 100644 gcc/config/rx/elf.opt.urls
 create mode 100644 gcc/config/rx/rx.opt.urls
 create mode 100644 gcc/config/s390/s390.opt.urls
 create mode 100644 gcc/config/s390/tpf.opt.urls
 create mode 100644 gcc/config/sh/sh.opt.urls
 create mode 100644 gcc/config/sh/superh.opt.urls
 create mode 100644 gcc/config/sol2.opt.urls
 create mode 100644 gcc/config/sparc/long-double-switch.opt.urls
 create mode 100644 gcc/config/sparc/sparc.opt.urls
 create mode 100644 gcc/config/stormy16/stormy16.opt.urls
 create mode 100644 gcc/config/v850/v850.opt.urls
 create mode 100644 gcc/config/vax/elf.opt.urls
 create mode 100644 gcc/config/vax/vax.opt.urls
 create mode 100644 gcc/config/visium/visium.opt.urls
 create mode 100644 gcc/config/vms/vms.opt.urls
 create mode 100644 gcc/config/vxworks-smp.opt.urls
 create mode 100644 gcc/config/vxworks.opt.urls
 create mode 100644 gcc/config/xtensa/elf.opt.urls
 create mode 100644 gcc/config/xtensa/uclinux.opt.urls
 create mode 100644 gcc/config/xtensa/xtensa.opt.urls
 create mode 100644 gcc/d/lang.opt.urls
 create mode 100644 gcc/fortran/lang.opt.urls
 create mode 100644 gcc/go/lang.opt.urls
 create mode 100644 gcc/lto/lang.opt.urls
 create mode 100644 gcc/m2/lang.opt.urls
 create mode 100644 gcc/params.opt.urls
 create mode 100644 gcc/rust/lang.opt.urls

diff --git a/gcc/ada/gcc-interface/lang.opt.urls b/gcc/ada/gcc-interface/lang.opt.urls
new file mode 100644
index 000000000000..e24210bcb12a
--- /dev/null
+++ b/gcc/ada/gcc-interface/lang.opt.urls
@@ -0,0 +1,28 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/ada/gcc-interface/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I)
+
+; skipping 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc)
+
+nostdlib
+UrlSuffix(gcc/Link-Options.html#index-nostdlib)
+
+; skipping 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+; skipping 'fsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
+
+; skipping 'funsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'
+
diff --git a/gcc/analyzer/analyzer.opt.urls b/gcc/analyzer/analyzer.opt.urls
new file mode 100644
index 000000000000..9f7d33ff434c
--- /dev/null
+++ b/gcc/analyzer/analyzer.opt.urls
@@ -0,0 +1,206 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/analyzer/analyzer.opt and generated HTML
+
+Wanalyzer-allocation-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-allocation-size)
+
+Wanalyzer-deref-before-check
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-deref-before-check)
+
+Wanalyzer-double-fclose
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-fclose)
+
+Wanalyzer-double-free
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free)
+
+Wanalyzer-exposure-through-output-file
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-output-file)
+
+Wanalyzer-exposure-through-uninit-copy
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-uninit-copy)
+
+Wanalyzer-fd-access-mode-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-access-mode-mismatch)
+
+Wanalyzer-fd-double-close
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-double-close)
+
+Wanalyzer-fd-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-leak)
+
+Wanalyzer-fd-phase-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-phase-mismatch)
+
+Wanalyzer-fd-type-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-type-mismatch)
+
+Wanalyzer-fd-use-after-close
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-after-close)
+
+Wanalyzer-fd-use-without-check
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-without-check)
+
+Wanalyzer-file-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-file-leak)
+
+Wanalyzer-free-of-non-heap
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-free-of-non-heap)
+
+Wanalyzer-imprecise-fp-arithmetic
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-imprecise-fp-arithmetic)
+
+Wanalyzer-infinite-recursion
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-recursion)
+
+Wanalyzer-jump-through-null
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-jump-through-null)
+
+Wanalyzer-malloc-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-malloc-leak)
+
+Wanalyzer-mismatching-deallocation
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-mismatching-deallocation)
+
+Wanalyzer-out-of-bounds
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-out-of-bounds)
+
+Wanalyzer-overlapping-buffers
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-overlapping-buffers)
+
+Wanalyzer-possible-null-argument
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-argument)
+
+Wanalyzer-possible-null-dereference
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-dereference)
+
+Wanalyzer-unsafe-call-within-signal-handler
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-unsafe-call-within-signal-handler)
+
+Wanalyzer-null-argument
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-argument)
+
+Wanalyzer-null-dereference
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-dereference)
+
+Wanalyzer-putenv-of-auto-var
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-putenv-of-auto-var)
+
+Wanalyzer-shift-count-negative
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-negative)
+
+Wanalyzer-shift-count-overflow
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-overflow)
+
+Wanalyzer-stale-setjmp-buffer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-stale-setjmp-buffer)
+
+Wanalyzer-tainted-allocation-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-allocation-size)
+
+Wanalyzer-tainted-array-index
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-array-index)
+
+Wanalyzer-tainted-assertion
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-assertion)
+
+Wanalyzer-tainted-divisor
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-divisor)
+
+Wanalyzer-tainted-offset
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-offset)
+
+Wanalyzer-tainted-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-size)
+
+Wanalyzer-use-after-free
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-after-free)
+
+Wanalyzer-use-of-pointer-in-stale-stack-frame
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-pointer-in-stale-stack-frame)
+
+Wanalyzer-va-arg-type-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-arg-type-mismatch)
+
+Wanalyzer-va-list-exhausted
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-exhausted)
+
+Wanalyzer-va-list-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-leak)
+
+Wanalyzer-va-list-use-after-va-end
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-use-after-va-end)
+
+Wanalyzer-write-to-const
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-const)
+
+Wanalyzer-write-to-string-literal
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-literal)
+
+Wanalyzer-use-of-uninitialized-value
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-uninitialized-value)
+
+Wanalyzer-too-complex
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-too-complex)
+
+fanalyzer-checker=
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-checker)
+
+fanalyzer-debug-text-art
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-debug-text-art)
+
+fanalyzer-fine-grained
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-fine-grained)
+
+fanalyzer-feasibility
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-feasibility)
+
+fanalyzer-show-duplicate-count
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-duplicate-count)
+
+fanalyzer-state-purge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-purge)
+
+fanalyzer-state-merge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-merge)
+
+fanalyzer-suppress-followups
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-suppress-followups)
+
+fanalyzer-transitivity
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-transitivity)
+
+fanalyzer-show-events-in-system-headers
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-events-in-system-headers)
+
+fanalyzer-call-summaries
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-call-summaries)
+
+fanalyzer-undo-inlining
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-undo-inlining)
+
+fdump-analyzer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer)
+
+fdump-analyzer-stderr
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-stderr)
+
+fdump-analyzer-callgraph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-callgraph)
+
+fdump-analyzer-exploded-graph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-graph)
+
+fdump-analyzer-exploded-paths
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-paths)
+
+fdump-analyzer-json
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-json)
+
+fdump-analyzer-state-purge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-state-purge)
+
+fdump-analyzer-supergraph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-supergraph)
+
+fdump-analyzer-untracked
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-untracked)
+
diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
new file mode 100644
index 000000000000..0c5ed7f49e4d
--- /dev/null
+++ b/gcc/c-family/c.opt.urls
@@ -0,0 +1,1404 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/c-family/c.opt and generated HTML
+
+A
+UrlSuffix(gcc/Preprocessor-Options.html#index-A)
+
+C
+UrlSuffix(gcc/Preprocessor-Options.html#index-C)
+
+CC
+UrlSuffix(gcc/Preprocessor-Options.html#index-CC)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+F
+UrlSuffix(gcc/Darwin-Options.html#index-F)
+
+fgimple
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgimple)
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD)
+
+Mno-modules
+UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT)
+
+fdeps-format=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-format)
+
+fdeps-file=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-file)
+
+fdeps-target=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-target)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+U
+UrlSuffix(gcc/Preprocessor-Options.html#index-U)
+
+Wabi
+UrlSuffix(gcc/Warning-Options.html#index-Wabi)
+
+Wabi=
+UrlSuffix(gcc/Warning-Options.html#index-Wabi)
+
+Wabi-tag
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
+
+Wabsolute-value
+UrlSuffix(gcc/Warning-Options.html#index-Wabsolute-value)
+
+Waddress
+UrlSuffix(gcc/Warning-Options.html#index-Waddress)
+
+Waligned-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
+
+Waligned-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
+
+; skipping 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+
+Walloca
+UrlSuffix(gcc/Warning-Options.html#index-Walloca)
+
+Walloc-size-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-size-larger-than_003d)
+
+Walloc-zero
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-zero)
+
+Walloca-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d)
+
+Warray-bounds=
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Warray-compare
+UrlSuffix(gcc/Warning-Options.html#index-Warray-compare)
+
+Warray-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+
+Warray-parameter=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+
+Wzero-length-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
+
+Wassign-intercept
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wassign-intercept)
+
+Wbad-function-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wbad-function-cast)
+
+Wbidi-chars
+UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars)
+
+Wbidi-chars=
+UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars)
+
+Wbool-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wbool-compare)
+
+Wbool-operation
+UrlSuffix(gcc/Warning-Options.html#index-Wbool-operation)
+
+Wframe-address
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
+
+Wbuiltin-declaration-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch)
+
+Wbuiltin-macro-redefined
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-macro-redefined)
+
+Wc11-c2x-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc11-c2x-compat)
+
+Wc90-c99-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc90-c99-compat)
+
+Wc99-c11-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc99-c11-compat)
+
+Wc++-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b-compat)
+
+Wc++11-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-compat)
+
+Wc++14-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-compat)
+
+Wc++17-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-compat)
+
+Wc++20-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-compat)
+
+Wc++11-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-extensions)
+
+Wc++14-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-extensions)
+
+Wc++17-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-extensions)
+
+Wc++20-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-extensions)
+
+Wc++23-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b23-extensions)
+
+Wcast-function-type
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-function-type)
+
+Wcast-qual
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-qual)
+
+Wcatch-value
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
+
+Wcatch-value=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
+
+Wchar-subscripts
+UrlSuffix(gcc/Warning-Options.html#index-Wchar-subscripts)
+
+Wclobbered
+UrlSuffix(gcc/Warning-Options.html#index-Wclobbered)
+
+Wcomma-subscript
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcomma-subscript)
+
+Wcomment
+UrlSuffix(gcc/Warning-Options.html#index-Wcomment)
+
+Wcomments
+UrlSuffix(gcc/Warning-Options.html#index-Wcomments)
+
+Wconditionally-supported
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconditionally-supported)
+
+Wconversion
+UrlSuffix(gcc/Warning-Options.html#index-Wconversion)
+
+Wconversion-null
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconversion-null)
+
+Wcpp
+UrlSuffix(gcc/Warning-Options.html#index-Wcpp)
+
+Wctad-maybe-unsupported
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported)
+
+Wctor-dtor-privacy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctor-dtor-privacy)
+
+Wdangling-else
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-else)
+
+Wdangling-pointer
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer)
+
+Wdangling-pointer=
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer)
+
+Wdangling-reference
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference)
+
+Wdate-time
+UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
+
+Wdeclaration-after-statement
+UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-after-statement)
+
+Wdelete-incomplete
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-incomplete)
+
+Wdelete-non-virtual-dtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-non-virtual-dtor)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated)
+
+Wdeprecated-copy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-copy)
+
+Wdeprecated-enum-enum-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-enum-conversion)
+
+Wdeprecated-enum-float-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-float-conversion)
+
+Wdesignated-init
+UrlSuffix(gcc/Warning-Options.html#index-Wdesignated-init)
+
+Wdiscarded-array-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-array-qualifiers)
+
+Wdiscarded-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-qualifiers)
+
+Wdiv-by-zero
+UrlSuffix(gcc/Warning-Options.html#index-Wdiv-by-zero)
+
+Wduplicated-branches
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-branches)
+
+Wduplicated-cond
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-cond)
+
+Weffc++
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Weffc_002b_002b)
+
+Wempty-body
+UrlSuffix(gcc/Warning-Options.html#index-Wempty-body)
+
+Wendif-labels
+UrlSuffix(gcc/Warning-Options.html#index-Wendif-labels)
+
+Wenum-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-compare)
+
+Wenum-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-conversion)
+
+Wenum-int-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-int-mismatch)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror)
+
+Wexceptions
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wexceptions)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra)
+
+Wextra-semi
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wextra-semi)
+
+Wfloat-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wfloat-conversion)
+
+Wfloat-equal
+UrlSuffix(gcc/Warning-Options.html#index-Wfloat-equal)
+
+Wformat
+UrlSuffix(gcc/Warning-Options.html#index-Wformat)
+
+Wformat-contains-nul
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-contains-nul)
+
+Wformat-extra-args
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-extra-args)
+
+Wformat-nonliteral
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-nonliteral)
+
+Wformat-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
+Wformat-security
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-security)
+
+Wformat-signedness
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-signedness)
+
+Wformat-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
+Wformat-y2k
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-y2k)
+
+Wformat-zero-length
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-zero-length)
+
+Wformat=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat)
+
+Wformat-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
+Wformat-truncation=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
+Wflex-array-member-not-at-end
+UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+
+Wif-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned)
+
+Wignored-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wignored-qualifiers)
+
+Wignored-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wignored-attributes)
+
+Winaccessible-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winaccessible-base)
+
+Wincompatible-pointer-types
+UrlSuffix(gcc/Warning-Options.html#index-Wincompatible-pointer-types)
+
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
+Waddress-of-packed-member
+UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
+
+Winit-self
+UrlSuffix(gcc/Warning-Options.html#index-Winit-self)
+
+Winit-list-lifetime
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winit-list-lifetime)
+
+Winterference-size
+UrlSuffix(gcc/Warning-Options.html#index-Winterference-size)
+
+Wimplicit
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wdouble-promotion
+UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
+
+Wexpansion-to-defined
+UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
+
+Wimplicit-function-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
+
+Wimplicit-int
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
+
+Winherited-variadic-ctor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winherited-variadic-ctor)
+
+Wint-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wint-conversion)
+
+Wint-in-bool-context
+UrlSuffix(gcc/Warning-Options.html#index-Wint-in-bool-context)
+
+Wint-to-pointer-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wint-to-pointer-cast)
+
+Winvalid-constexpr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-constexpr)
+
+Winvalid-offsetof
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-offsetof)
+
+Winvalid-pch
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-pch)
+
+Winvalid-utf8
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-utf8)
+
+Wjump-misses-init
+UrlSuffix(gcc/Warning-Options.html#index-Wjump-misses-init)
+
+Wliteral-suffix
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wliteral-suffix)
+
+Wlogical-op
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
+
+Wlogical-not-parentheses
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-not-parentheses)
+
+Wlong-long
+UrlSuffix(gcc/Warning-Options.html#index-Wlong-long)
+
+Wmain
+UrlSuffix(gcc/Warning-Options.html#index-Wmain)
+
+Wmain
+UrlSuffix(gcc/Warning-Options.html#index-Wmain)
+
+Wmemset-transposed-args
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+
+Wmemset-elt-size
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-elt-size)
+
+Wmisleading-indentation
+UrlSuffix(gcc/Warning-Options.html#index-Wmisleading-indentation)
+
+Wmismatched-dealloc
+UrlSuffix(gcc/Warning-Options.html#index-Wmismatched-dealloc)
+
+Wmismatched-new-delete
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete)
+
+Wmismatched-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-tags)
+
+Wmissing-braces
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-braces)
+
+Wmissing-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-declarations)
+
+Wmissing-field-initializers
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-field-initializers)
+
+Wmissing-requires
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
+
+Wmissing-template-keyword
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
+
+Wmultistatement-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
+
+Wmultiple-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
+
+Wnamespaces
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
+
+Wnrvo
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
+
+Wpacked-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
+
+Wrange-loop-construct
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
+
+Wredundant-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
+
+Wsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
+
+Wsizeof-pointer-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
+
+Wsizeof-array-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
+
+Wsizeof-pointer-memaccess
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
+
+Wsizeof-array-argument
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
+
+Wstring-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
+
+Wstringop-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overread
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
+
+Wstringop-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
+
+Wstrict-flex-arrays
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
+
+Wsuggest-attribute=format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
+
+Wsuggest-override
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
+
+Wswitch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
+
+Wswitch-default
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
+
+Wswitch-enum
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
+
+Wswitch-bool
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
+
+Wswitch-outside-range
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
+
+Wtemplates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
+
+Wmissing-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
+
+Wmissing-format-attribute
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-format-attribute)
+
+Wmissing-include-dirs
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
+
+Wmissing-parameter-type
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-parameter-type)
+
+Wmissing-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-prototypes)
+
+Wmissing-variable-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-variable-declarations)
+
+Wmultichar
+UrlSuffix(gcc/Warning-Options.html#index-Wmultichar)
+
+Wnarrowing
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnarrowing)
+
+Wnested-externs
+UrlSuffix(gcc/Warning-Options.html#index-Wnested-externs)
+
+Wnoexcept
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept)
+
+Wnoexcept-type
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept-type)
+
+Wnon-template-friend
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-template-friend)
+
+Wclass-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
+
+Wclass-memaccess
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
+
+Wnon-virtual-dtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-virtual-dtor)
+
+Wnonnull
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull)
+
+Wnonnull
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull)
+
+Wnonnull-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare)
+
+Wnormalized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized)
+
+Wnormalized=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized)
+
+Wobjc-root-class
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wobjc-root-class)
+
+Wold-style-cast
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-old-style-cast)
+
+Wold-style-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-declaration)
+
+Wold-style-definition
+UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-definition)
+
+Wopenacc-parallelism
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
+
+Wopenmp-simd
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
+
+Woverlength-strings
+UrlSuffix(gcc/Warning-Options.html#index-Wno-overlength-strings)
+
+Woverloaded-virtual
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual)
+
+Woverloaded-virtual=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual)
+
+Woverride-init
+UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init)
+
+Woverride-init-side-effects
+UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init-side-effects)
+
+Wpacked-bitfield-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-bitfield-compat)
+
+Wparentheses
+UrlSuffix(gcc/Warning-Options.html#index-Wno-parentheses)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wpessimizing-move
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-pessimizing-move)
+
+; skipping 'Wpmf-conversions' due to multiple URLs:
+;   duplicate: 'gcc/Bound-member-functions.html#index-Wno-pmf-conversions-1'
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-Wno-pmf-conversions'
+
+; skipping 'Wpointer-arith' due to multiple URLs:
+;   duplicate: 'gcc/Pointer-Arith.html#index-Wpointer-arith-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wno-pointer-arith'
+
+Wpointer-sign
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-sign)
+
+Wpointer-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-compare)
+
+Wpointer-to-int-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-to-int-cast)
+
+Wpragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pragmas)
+
+Wprio-ctor-dtor
+UrlSuffix(gcc/Warning-Options.html#index-Wno-prio-ctor-dtor)
+
+Wproperty-assign-default
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-property-assign-default)
+
+Wprotocol
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-protocol)
+
+Wplacement-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wplacement-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wredundant-decls
+UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
+
+Wredundant-move
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-move)
+
+Wregister
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register)
+
+Wreorder
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wscalar-storage-order
+UrlSuffix(gcc/Warning-Options.html#index-Wno-scalar-storage-order)
+
+Wselector
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-selector)
+
+Wself-move
+UrlSuffix(gcc/Warning-Options.html#index-Wno-self-move)
+
+Wsequence-point
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sequence-point)
+
+Wshadow-ivar
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow-ivar)
+
+Wshift-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow)
+
+Wshift-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow)
+
+Wshift-count-negative
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-negative)
+
+Wshift-count-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-overflow)
+
+Wshift-negative-value
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-negative-value)
+
+Warith-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
+
+Wsign-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
+
+Wsign-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
+
+Wsign-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-conversion)
+
+Wsign-promo
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sign-promo)
+
+Wstrict-null-sentinel
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+
+Wstrict-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+
+Wstrict-aliasing=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wstrict-selector-match
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-strict-selector-match)
+
+Wsync-nand
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sync-nand)
+
+Wsystem-headers
+UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
+
+Wtautological-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-tautological-compare)
+
+Wterminate
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-terminate)
+
+Wtraditional
+UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional)
+
+Wtraditional-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional-conversion)
+
+Wtrigraphs
+UrlSuffix(gcc/Warning-Options.html#index-Wtrigraphs)
+
+Wundeclared-selector
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-undeclared-selector)
+
+Wundef
+UrlSuffix(gcc/Warning-Options.html#index-Wno-undef)
+
+Wunicode
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unicode)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wunknown-pragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas)
+
+Wunsuffixed-float-constants
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unsuffixed-float-constants)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+Wunused-local-typedefs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-local-typedefs)
+
+Wunused-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wunused-macros)
+
+Wunused-result
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wuse-after-free=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wvariadic-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wno-variadic-macros)
+
+Wvarargs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs)
+
+Wvexing-parse
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-vexing-parse)
+
+Wvla
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla)
+
+Wvla-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-larger-than)
+
+Wvla-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-parameter)
+
+Wvolatile
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-volatile)
+
+Wvolatile-register-var
+UrlSuffix(gcc/Warning-Options.html#index-Wno-volatile-register-var)
+
+Wvirtual-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-inheritance)
+
+Wvirtual-move-assign
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
+
+Wwrite-strings
+UrlSuffix(gcc/Warning-Options.html#index-Wno-write-strings)
+
+Wxor-used-as-pow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-xor-used-as-pow)
+
+Wzero-as-null-pointer-constant
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-zero-as-null-pointer-constant)
+
+Wuseless-cast
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-useless-cast)
+
+Wsubobject-linkage
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
+
+Welaborated-enum-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
+
+Wduplicate-decl-specifier
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
+
+Wrestrict
+UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+
+; skipping 'ansi' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
+;   duplicate: 'gcc/Non-bugs.html#index-ansi-3'
+;   duplicate: 'gcc/Other-Builtins.html#index-ansi-2'
+;   duplicate: 'gcc/Standards.html#index-ansi'
+
+; skipping 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+fabi-compat-version=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-compat-version)
+
+faccess-control
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faccess-control)
+
+fada-spec-parent=
+UrlSuffix(gcc/Overall-Options.html#index-fada-spec-parent)
+
+faligned-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new)
+
+faligned-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new)
+
+fasm
+UrlSuffix(gcc/C-Dialect-Options.html#index-fasm)
+
+; skipping 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
+;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
+;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
+
+fcanonical-system-headers
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-canonical-system-headers)
+
+fchar8_t
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fchar8_005ft)
+
+fconcepts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts)
+
+fconcepts-ts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts-ts)
+
+fcond-mismatch
+UrlSuffix(gcc/C-Dialect-Options.html#index-fcond-mismatch)
+
+fconstant-string-class=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fconstant-string-class)
+
+fconstexpr-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-depth)
+
+fconstexpr-cache-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-cache-depth)
+
+fconstexpr-fp-except
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-fp-except)
+
+fconstexpr-loop-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-loop-limit)
+
+fconstexpr-ops-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-ops-limit)
+
+fcontracts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontracts)
+
+fcontract-assumption-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-assumption-mode)
+
+fcontract-build-level=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-build-level)
+
+fcontract-strict-declarations=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-strict-declarations)
+
+fcontract-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-mode)
+
+fcontract-continuation-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-continuation-mode)
+
+fcontract-role=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-role)
+
+fcoroutines
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcoroutines)
+
+fdebug-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-fdebug-cpp)
+
+fdeclone-ctor-dtor
+UrlSuffix(gcc/Optimize-Options.html#index-fdeclone-ctor-dtor)
+
+fdefault-inline
+UrlSuffix(gcc/Inline.html#index-fno-default-inline)
+
+fdiagnostics-show-template-tree
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-template-tree)
+
+fdirectives-only
+UrlSuffix(gcc/Preprocessor-Options.html#index-fdirectives-only)
+
+; skipping 'fdollars-in-identifiers' due to multiple URLs:
+;   duplicate: 'gcc/Interoperation.html#index-fdollars-in-identifiers-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-fdollars-in-identifiers'
+
+fmacro-prefix-map=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fmacro-prefix-map)
+
+fdump-ada-spec
+UrlSuffix(gcc/Overall-Options.html#index-fdump-ada-spec)
+
+felide-constructors
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-felide-constructors)
+
+felide-type
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-felide-type)
+
+fenforce-eh-specs
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fenforce-eh-specs)
+
+fexec-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fexec-charset)
+
+fextended-identifiers
+UrlSuffix(gcc/Preprocessor-Options.html#index-fextended-identifiers)
+
+finput-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-finput-charset)
+
+fextern-tls-init
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fextern-tls-init)
+
+ffold-simple-inlines
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ffold-simple-inlines)
+
+; skipping 'ffreestanding' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ffreestanding-1'
+;   duplicate: 'gcc/Standards.html#index-ffreestanding'
+;   duplicate: 'gcc/Warning-Options.html#index-ffreestanding-2'
+
+fgnu-keywords
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fgnu-keywords)
+
+fgnu-runtime
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fgnu-runtime)
+
+fgnu89-inline
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu89-inline)
+
+fhosted
+UrlSuffix(gcc/C-Dialect-Options.html#index-fhosted)
+
+; skipping 'fimplement-inlines' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplement-inlines'
+;   duplicate: 'gcc/C_002b_002b-Interface.html#index-fno-implement-inlines-1'
+
+fimplicit-constexpr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-constexpr)
+
+fimplicit-inline-templates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-inline-templates)
+
+; skipping 'fimplicit-templates' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-templates'
+;   duplicate: 'gcc/Template-Instantiation.html#index-fno-implicit-templates-1'
+
+fnew-inheriting-ctors
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-inheriting-ctors)
+
+fkeep-inline-dllexport
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-inline-dllexport)
+
+flax-vector-conversions
+UrlSuffix(gcc/C-Dialect-Options.html#index-flax-vector-conversions)
+
+fmodules-ts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodules-ts)
+
+fmodule-header
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header)
+
+fmodule-header=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header)
+
+fmodule-implicit-inline
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-implicit-inline)
+
+fmodule-only
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-only)
+
+fmodule-mapper=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-mapper)
+
+fmodule-lazy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-lazy)
+
+Winvalid-imported-macros
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-imported-macros)
+
+Wcompare-distinct-pointer-types
+UrlSuffix(gcc/Warning-Options.html#index-Wcompare-distinct-pointer-types)
+
+flang-info-include-translate
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate)
+
+flang-info-include-translate-not
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate-not)
+
+flang-info-include-translate=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate)
+
+flang-info-module-cmi
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi)
+
+flang-info-module-cmi=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi)
+
+fmax-include-depth=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fmax-include-depth)
+
+; skipping 'fms-extensions' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fms-extensions'
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fms-extensions-1'
+;   duplicate: 'gcc/Unnamed-Fields.html#index-fms-extensions-2'
+
+fnew-ttp-matching
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-ttp-matching)
+
+fnext-runtime
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnext-runtime)
+
+fnil-receivers
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnil-receivers)
+
+flocal-ivars
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-flocal-ivars)
+
+fivar-visibility=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fivar-visibility)
+
+fnonansi-builtins
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-nonansi-builtins)
+
+fnothrow-opt
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnothrow-opt)
+
+fobjc-abi-version=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-abi-version)
+
+fobjc-call-cxx-cdtors
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-call-cxx-cdtors)
+
+fobjc-direct-dispatch
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-direct-dispatch)
+
+fobjc-exceptions
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-exceptions)
+
+fobjc-gc
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-gc)
+
+fobjc-nilcheck
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-nilcheck)
+
+fopenacc
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc)
+
+fopenacc-dim=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
+
+fopenmp
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp)
+
+fopenmp-simd
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd)
+
+foperator-names
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-operator-names)
+
+foptional-diags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-optional-diags)
+
+fpch-deps
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-deps)
+
+fpch-preprocess
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-preprocess)
+
+fpermissive
+UrlSuffix(gcc/Warning-Options.html#index-fpermissive)
+
+; skipping 'fplan9-extensions' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fplan9-extensions'
+;   duplicate: 'gcc/Unnamed-Fields.html#index-fplan9-extensions-1'
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+ftrack-macro-expansion
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion)
+
+ftrack-macro-expansion=
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion)
+
+fpretty-templates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-pretty-templates)
+
+fprintf-return-value
+UrlSuffix(gcc/Optimize-Options.html#index-fno-printf-return-value)
+
+freplace-objc-classes
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-freplace-objc-classes)
+
+frtti
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti)
+
+; skipping 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+fshort-wchar
+UrlSuffix(gcc/Code-Gen-Options.html#index-fshort-wchar)
+
+; skipping 'fsigned-bitfields' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fno-signed-bitfields'
+;   duplicate: 'gcc/Non-bugs.html#index-fsigned-bitfields-1'
+
+; skipping 'fsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
+
+fsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fsized-deallocation)
+
+fstrict-flex-arrays
+UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays)
+
+fstrict-flex-arrays=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays)
+
+fsso-struct=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fsso-struct)
+
+fstats
+UrlSuffix(gcc/Developer-Options.html#index-fstats)
+
+fstrict-enums
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrict-enums)
+
+fstrong-eval-order
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order)
+
+fstrong-eval-order=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order)
+
+ftemplate-backtrace-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-backtrace-limit)
+
+ftemplate-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-depth)
+
+fthreadsafe-statics
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-threadsafe-statics)
+
+; skipping 'funsigned-bitfields' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fno-unsigned-bitfields'
+;   duplicate: 'gcc/Non-bugs.html#index-funsigned-bitfields-2'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-funsigned-bitfields-1'
+
+; skipping 'funsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'
+
+fuse-cxa-atexit
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fuse-cxa-atexit)
+
+fuse-cxa-get-exception-ptr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-use-cxa-get-exception-ptr)
+
+fvisibility-inlines-hidden
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-inlines-hidden)
+
+fvisibility-ms-compat
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-ms-compat)
+
+fweak
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-weak)
+
+fwide-exec-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fwide-exec-charset)
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+fzero-link
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fzero-link)
+
+gen-decls
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-gen-decls)
+
+femit-struct-debug-baseonly
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-baseonly)
+
+femit-struct-debug-reduced
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-reduced)
+
+femit-struct-debug-detailed=
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-detailed)
+
+fext-numeric-literals
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fext-numeric-literals)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imacros
+UrlSuffix(gcc/Preprocessor-Options.html#index-imacros)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib)
+
+include
+UrlSuffix(gcc/Preprocessor-Options.html#index-include)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+iwithprefix
+UrlSuffix(gcc/Directory-Options.html#index-iwithprefix)
+
+iwithprefixbefore
+UrlSuffix(gcc/Directory-Options.html#index-iwithprefixbefore)
+
+no-integrated-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-no-integrated-cpp)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc)
+
+; skipping 'nostdinc++' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-nostdinc_002b_002b'
+;   duplicate: 'gcc/Directory-Options.html#index-nostdinc_002b_002b-1'
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+; skipping 'pedantic' due to multiple URLs:
+;   duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3'
+;   duplicate: 'gcc/C-Extensions.html#index-pedantic-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4'
+
+print-objc-runtime-info
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-print-objc-runtime-info)
+
+remap
+UrlSuffix(gcc/Preprocessor-Options.html#index-remap)
+
+stdlib=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-stdlib)
+
+; skipping 'traditional' due to multiple URLs:
+;   duplicate: 'gcc/Incompatibilities.html#index-traditional-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-traditional'
+
+traditional-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp)
+
+trigraphs
+UrlSuffix(gcc/Preprocessor-Options.html#index-trigraphs)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v)
+
+w
+UrlSuffix(gcc/Warning-Options.html#index-w)
+
diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
new file mode 100644
index 000000000000..4123ee6a79b5
--- /dev/null
+++ b/gcc/common.opt.urls
@@ -0,0 +1,1823 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/common.opt and generated HTML
+
+###
+UrlSuffix(gcc/Overall-Options.html#index-_0023_0023_0023)
+
+B
+UrlSuffix(gcc/Directory-Options.html#index-B)
+
+; skipping 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L)
+
+O
+UrlSuffix(gcc/Optimize-Options.html#index-O)
+
+Os
+UrlSuffix(gcc/Optimize-Options.html#index-Os)
+
+Ofast
+UrlSuffix(gcc/Optimize-Options.html#index-Ofast)
+
+Og
+UrlSuffix(gcc/Optimize-Options.html#index-Og)
+
+Oz
+UrlSuffix(gcc/Optimize-Options.html#index-Oz)
+
+Q
+UrlSuffix(gcc/Developer-Options.html#index-Q)
+
+Qn
+UrlSuffix(gcc/System-V-Options.html#index-Qn)
+
+Qy
+UrlSuffix(gcc/System-V-Options.html#index-Qy)
+
+; skipping 'S' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-S-1'
+;   duplicate: 'gcc/Overall-Options.html#index-S'
+
+T
+UrlSuffix(gcc/Link-Options.html#index-T)
+
+; skipping 'W' due to multiple URLs:
+;   duplicate: 'gcc/Incompatibilities.html#index-W-3'
+;   duplicate: 'gcc/Warning-Options.html#index-W'
+
+Waggregate-return
+UrlSuffix(gcc/Warning-Options.html#index-Waggregate-return)
+
+Waggressive-loop-optimizations
+UrlSuffix(gcc/Warning-Options.html#index-Waggressive-loop-optimizations)
+
+Warray-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Warray-bounds=
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Wuse-after-free
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wuse-after-free=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wattributes
+UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
+
+Wattributes=
+UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
+
+Wattribute-alias
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
+
+Wattribute-alias=
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
+
+Wcast-align
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-align)
+
+Wcast-align=strict
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-align_003dstrict)
+
+Wcomplain-wrong-lang
+UrlSuffix(gcc/Warning-Options.html#index-Wcomplain-wrong-lang)
+
+Wcpp
+UrlSuffix(gcc/Warning-Options.html#index-Wcpp)
+
+Wattribute-warning
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-warning)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated)
+
+Wdeprecated-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated-declarations)
+
+Wdisabled-optimization
+UrlSuffix(gcc/Warning-Options.html#index-Wdisabled-optimization)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror)
+
+Werror=
+UrlSuffix(gcc/Warning-Options.html#index-Werror)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra)
+
+Wfatal-errors
+UrlSuffix(gcc/Warning-Options.html#index-Wfatal-errors)
+
+Wframe-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-larger-than_003d)
+
+Wfree-nonheap-object
+UrlSuffix(gcc/Warning-Options.html#index-Wfree-nonheap-object)
+
+Wimplicit-fallthrough
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
+; skipping 'Winline' due to multiple URLs:
+;   duplicate: 'gcc/Inline.html#index-Winline-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Winline'
+
+Winvalid-memory-model
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-memory-model)
+
+Wlarger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wlarger-than_003d)
+
+Wnonnull-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare)
+
+Wnull-dereference
+UrlSuffix(gcc/Warning-Options.html#index-Wno-null-dereference)
+
+Wunsafe-loop-optimizations
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unsafe-loop-optimizations)
+
+Wmissing-noreturn
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-noreturn)
+
+Wodr
+UrlSuffix(gcc/Warning-Options.html#index-Wno-odr)
+
+Woverflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-overflow)
+
+Wlto-type-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wlto-type-mismatch)
+
+Wpacked
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed)
+
+Wpadded
+UrlSuffix(gcc/Warning-Options.html#index-Wno-padded)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-local-addr
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-local-addr)
+
+Wshadow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow)
+
+Wshadow=global
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dglobal)
+
+Wshadow=local
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dlocal)
+
+Wshadow=compatible-local
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dcompatible-local)
+
+Wstack-protector
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-protector)
+
+Wstack-usage=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-usage)
+
+Wstrict-aliasing
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-aliasing=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wstrict-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wsuggest-attribute=cold
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dcold)
+
+Wsuggest-attribute=const
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dconst)
+
+Wsuggest-attribute=pure
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dpure)
+
+Wsuggest-attribute=noreturn
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dnoreturn)
+
+Wsuggest-attribute=malloc
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dmalloc)
+
+Wsuggest-final-types
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-types)
+
+Wsuggest-final-methods
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-methods)
+
+Wswitch-unreachable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-unreachable)
+
+Wsystem-headers
+UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
+
+Wtrampolines
+UrlSuffix(gcc/Warning-Options.html#index-Wno-trampolines)
+
+Wtrivial-auto-var-init
+UrlSuffix(gcc/Warning-Options.html#index-Wno-trivial-auto-var-init)
+
+Wtype-limits
+UrlSuffix(gcc/Warning-Options.html#index-Wno-type-limits)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+Wunused-but-set-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-parameter)
+
+Wunused-but-set-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-variable)
+
+Wunused-function
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-function)
+
+Wunused-label
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-label)
+
+Wunused-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter)
+
+Wunused-value
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-value)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wcoverage-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-mismatch)
+
+Wcoverage-invalid-line-number
+UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-invalid-line-number)
+
+Wmissing-profile
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-profile)
+
+Wvector-operation-performance
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vector-operation-performance)
+
+Wtsan
+UrlSuffix(gcc/Warning-Options.html#index-Wno-tsan)
+
+Xassembler
+UrlSuffix(gcc/Assembler-Options.html#index-Xassembler)
+
+Xlinker
+UrlSuffix(gcc/Link-Options.html#index-Xlinker)
+
+Xpreprocessor
+UrlSuffix(gcc/Preprocessor-Options.html#index-Xpreprocessor)
+
+aux-info
+UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
+
+aux-info=
+UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
+
+coverage
+UrlSuffix(gcc/Instrumentation-Options.html#index-coverage)
+
+; skipping 'c' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-c-1'
+;   duplicate: 'gcc/Overall-Options.html#index-c'
+
+; skipping 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+dumpbase
+UrlSuffix(gcc/Overall-Options.html#index-dumpbase)
+
+dumpbase-ext
+UrlSuffix(gcc/Overall-Options.html#index-dumpbase-ext)
+
+dumpdir
+UrlSuffix(gcc/Overall-Options.html#index-dumpdir)
+
+dumpmachine
+UrlSuffix(gcc/Developer-Options.html#index-dumpmachine)
+
+dumpspecs
+UrlSuffix(gcc/Developer-Options.html#index-dumpspecs)
+
+dumpversion
+UrlSuffix(gcc/Developer-Options.html#index-dumpversion)
+
+dumpfullversion
+UrlSuffix(gcc/Developer-Options.html#index-dumpfullversion)
+
+e
+UrlSuffix(gcc/Link-Options.html#index-e)
+
+fabi-version=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-version)
+
+faggressive-loop-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-faggressive-loop-optimizations)
+
+falign-functions
+UrlSuffix(gcc/Optimize-Options.html#index-falign-functions)
+
+falign-functions=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-functions)
+
+falign-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps)
+
+falign-jumps=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps)
+
+falign-labels
+UrlSuffix(gcc/Optimize-Options.html#index-falign-labels)
+
+falign-labels=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-labels)
+
+falign-loops
+UrlSuffix(gcc/Optimize-Options.html#index-falign-loops)
+
+falign-loops=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-loops)
+
+fallow-store-data-races
+UrlSuffix(gcc/Optimize-Options.html#index-fallow-store-data-races)
+
+fanalyzer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer)
+
+fasan-shadow-offset=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fasan-shadow-offset)
+
+fsanitize-sections=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-sections)
+
+fsanitize-recover=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover)
+
+fsanitize-recover
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover)
+
+fsanitize-trap=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap)
+
+fsanitize-trap
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap)
+
+fsanitize-address-use-after-scope
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-address-use-after-scope)
+
+fsanitize-undefined-trap-on-error
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-undefined-trap-on-error)
+
+fasynchronous-unwind-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-fasynchronous-unwind-tables)
+
+fauto-inc-dec
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-inc-dec)
+
+fauto-profile
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile)
+
+fauto-profile=
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile)
+
+fbranch-count-reg
+UrlSuffix(gcc/Optimize-Options.html#index-fbranch-count-reg)
+
+fbranch-probabilities
+UrlSuffix(gcc/Optimize-Options.html#index-fbranch-probabilities)
+
+fcallgraph-info
+UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info)
+
+fcallgraph-info=
+UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info)
+
+fcaller-saves
+UrlSuffix(gcc/Optimize-Options.html#index-fcaller-saves)
+
+fcheck-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcheck-new)
+
+fchecking
+UrlSuffix(gcc/Developer-Options.html#index-fchecking)
+
+fchecking=
+UrlSuffix(gcc/Developer-Options.html#index-fchecking)
+
+fcanon-prefix-map
+UrlSuffix(gcc/Overall-Options.html#index-fcanon-prefix-map)
+
+fcode-hoisting
+UrlSuffix(gcc/Optimize-Options.html#index-fcode-hoisting)
+
+fcombine-stack-adjustments
+UrlSuffix(gcc/Optimize-Options.html#index-fcombine-stack-adjustments)
+
+fcommon
+UrlSuffix(gcc/Code-Gen-Options.html#index-fcommon)
+
+fcompare-debug
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug)
+
+fcompare-debug=
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug)
+
+fcompare-debug-second
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug-second)
+
+fcompare-elim
+UrlSuffix(gcc/Optimize-Options.html#index-fcompare-elim)
+
+fconserve-stack
+UrlSuffix(gcc/Optimize-Options.html#index-fconserve-stack)
+
+fcprop-registers
+UrlSuffix(gcc/Optimize-Options.html#index-fcprop-registers)
+
+ffold-mem-offsets
+UrlSuffix(gcc/Optimize-Options.html#index-ffold-mem-offsets)
+
+fcrossjumping
+UrlSuffix(gcc/Optimize-Options.html#index-fcrossjumping)
+
+fcse-follow-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-fcse-follow-jumps)
+
+fcse-skip-blocks
+UrlSuffix(gcc/Optimize-Options.html#index-fcse-skip-blocks)
+
+fcx-limited-range
+UrlSuffix(gcc/Optimize-Options.html#index-fcx-limited-range)
+
+fcx-fortran-rules
+UrlSuffix(gcc/Optimize-Options.html#index-fcx-fortran-rules)
+
+fdata-sections
+UrlSuffix(gcc/Optimize-Options.html#index-fdata-sections)
+
+fdbg-cnt-list
+UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt-list)
+
+fdbg-cnt=
+UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt)
+
+fdebug-prefix-map=
+UrlSuffix(gcc/Debugging-Options.html#index-fdebug-prefix-map)
+
+ffile-prefix-map=
+UrlSuffix(gcc/Overall-Options.html#index-ffile-prefix-map)
+
+fdebug-types-section
+UrlSuffix(gcc/Debugging-Options.html#index-fdebug-types-section)
+
+fdefer-pop
+UrlSuffix(gcc/Optimize-Options.html#index-fdefer-pop)
+
+fdelayed-branch
+UrlSuffix(gcc/Optimize-Options.html#index-fdelayed-branch)
+
+fdelete-dead-exceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fdelete-dead-exceptions)
+
+fdelete-null-pointer-checks
+UrlSuffix(gcc/Optimize-Options.html#index-fdelete-null-pointer-checks)
+
+fdevirtualize-at-ltrans
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-at-ltrans)
+
+fdevirtualize-speculatively
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-speculatively)
+
+fdevirtualize
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize)
+
+fdiagnostics-show-location=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-location)
+
+fdiagnostics-show-caret
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-caret)
+
+fdiagnostics-show-labels
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-labels)
+
+fdiagnostics-show-line-numbers
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-line-numbers)
+
+fdiagnostics-color
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
+
+fdiagnostics-color=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
+
+fdiagnostics-urls=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-urls)
+
+fdiagnostics-column-unit=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-unit)
+
+fdiagnostics-column-origin=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-origin)
+
+fdiagnostics-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format)
+
+fdiagnostics-escape-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-escape-format)
+
+fdiagnostics-parseable-fixits
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-parseable-fixits)
+
+fdiagnostics-generate-patch
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-generate-patch)
+
+fdiagnostics-show-option
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-option)
+
+fdiagnostics-show-cwe
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-cwe)
+
+fdiagnostics-show-rules
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-rules)
+
+fdiagnostics-path-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-path-format)
+
+ftabstop=
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftabstop)
+
+fdiagnostics-show-path-depths
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-path-depths)
+
+fdiagnostics-text-art-charset=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-text-art-charset)
+
+fdiagnostics-minimum-margin-width=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-minimum-margin-width)
+
+fdisable-
+UrlSuffix(gcc/Developer-Options.html#index-fdisable-)
+
+fenable-
+UrlSuffix(gcc/Developer-Options.html#index-fenable-)
+
+fdump-final-insns
+UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns)
+
+fdump-final-insns=
+UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns)
+
+fdump-go-spec=
+UrlSuffix(gcc/Overall-Options.html#index-fdump-go-spec)
+
+fdump-noaddr
+UrlSuffix(gcc/Developer-Options.html#index-fdump-noaddr)
+
+freport-bug
+UrlSuffix(gcc/Developer-Options.html#index-freport-bug)
+
+fdump-passes
+UrlSuffix(gcc/Developer-Options.html#index-fdump-passes)
+
+fdump-unnumbered
+UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered)
+
+fdump-unnumbered-links
+UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered-links)
+
+fdwarf2-cfi-asm
+UrlSuffix(gcc/Debugging-Options.html#index-fdwarf2-cfi-asm)
+
+fearly-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-fearly-inlining)
+
+fipa-sra
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-sra)
+
+feliminate-unused-debug-symbols
+UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-symbols)
+
+feliminate-unused-debug-types
+UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-types)
+
+femit-class-debug-always
+UrlSuffix(gcc/Debugging-Options.html#index-femit-class-debug-always)
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fexpensive-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-fexpensive-optimizations)
+
+fexcess-precision=
+UrlSuffix(gcc/Optimize-Options.html#index-fexcess-precision)
+
+fpermitted-flt-eval-methods=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fpermitted-flt-eval-methods)
+
+ffast-math
+UrlSuffix(gcc/Optimize-Options.html#index-ffast-math)
+
+ffat-lto-objects
+UrlSuffix(gcc/Optimize-Options.html#index-ffat-lto-objects)
+
+ffinite-math-only
+UrlSuffix(gcc/Optimize-Options.html#index-ffinite-math-only)
+
+ffinite-loops
+UrlSuffix(gcc/Optimize-Options.html#index-ffinite-loops)
+
+; skipping 'ffloat-store' due to multiple URLs:
+;   duplicate: 'gcc/Disappointments.html#index-ffloat-store-1'
+;   duplicate: 'gcc/Optimize-Options.html#index-ffloat-store'
+
+fforward-propagate
+UrlSuffix(gcc/Optimize-Options.html#index-fforward-propagate)
+
+ffp-contract=
+UrlSuffix(gcc/Optimize-Options.html#index-ffp-contract)
+
+ffp-int-builtin-inexact
+UrlSuffix(gcc/Optimize-Options.html#index-ffp-int-builtin-inexact)
+
+ffunction-cse
+UrlSuffix(gcc/Optimize-Options.html#index-ffunction-cse)
+
+ffunction-sections
+UrlSuffix(gcc/Optimize-Options.html#index-ffunction-sections)
+
+fgcse
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse)
+
+fgcse-lm
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-lm)
+
+fgcse-sm
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-sm)
+
+fgcse-las
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-las)
+
+fgcse-after-reload
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-after-reload)
+
+fgraphite-identity
+UrlSuffix(gcc/Optimize-Options.html#index-fgraphite-identity)
+
+fhoist-adjacent-loads
+UrlSuffix(gcc/Optimize-Options.html#index-fhoist-adjacent-loads)
+
+flarge-source-files
+UrlSuffix(gcc/Preprocessor-Options.html#index-flarge-source-files)
+
+floop-parallelize-all
+UrlSuffix(gcc/Optimize-Options.html#index-floop-parallelize-all)
+
+floop-strip-mine
+UrlSuffix(gcc/Optimize-Options.html#index-floop-strip-mine)
+
+floop-interchange
+UrlSuffix(gcc/Optimize-Options.html#index-floop-interchange)
+
+floop-block
+UrlSuffix(gcc/Optimize-Options.html#index-floop-block)
+
+floop-unroll-and-jam
+UrlSuffix(gcc/Optimize-Options.html#index-floop-unroll-and-jam)
+
+fgnu-tm
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu-tm)
+
+fgnu-unique
+UrlSuffix(gcc/Code-Gen-Options.html#index-fgnu-unique)
+
+floop-nest-optimize
+UrlSuffix(gcc/Optimize-Options.html#index-floop-nest-optimize)
+
+fstrict-volatile-bitfields
+UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-volatile-bitfields)
+
+fstore-merging
+UrlSuffix(gcc/Optimize-Options.html#index-fstore-merging)
+
+fguess-branch-probability
+UrlSuffix(gcc/Optimize-Options.html#index-fguess-branch-probability)
+
+fharden-compares
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-compares)
+
+fharden-conditional-branches
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-conditional-branches)
+
+fharden-control-flow-redundancy
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-control-flow-redundancy)
+
+fhardcfr-skip-leaf
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-skip-leaf)
+
+fhardcfr-check-returning-calls
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-returning-calls)
+
+fhardcfr-check-exceptions
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-exceptions)
+
+fhardcfr-check-noreturn-calls=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-noreturn-calls)
+
+fident
+UrlSuffix(gcc/Code-Gen-Options.html#index-fident)
+
+fif-conversion
+UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion)
+
+fif-conversion2
+UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion2)
+
+ftree-loop-if-convert
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-if-convert)
+
+finhibit-size-directive
+UrlSuffix(gcc/Code-Gen-Options.html#index-finhibit-size-directive)
+
+findirect-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-findirect-inlining)
+
+finline
+UrlSuffix(gcc/Optimize-Options.html#index-finline)
+
+finline-small-functions
+UrlSuffix(gcc/Optimize-Options.html#index-finline-small-functions)
+
+finline-functions
+UrlSuffix(gcc/Optimize-Options.html#index-finline-functions)
+
+finline-functions-called-once
+UrlSuffix(gcc/Optimize-Options.html#index-finline-functions-called-once)
+
+finline-limit=
+UrlSuffix(gcc/Optimize-Options.html#index-finline-limit)
+
+fcf-protection
+UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
+
+fcf-protection=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
+
+finstrument-functions
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions)
+
+finstrument-functions-once
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-once)
+
+finstrument-functions-exclude-function-list=
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-function-list)
+
+finstrument-functions-exclude-file-list=
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-file-list)
+
+fipa-cp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp)
+
+fipa-cp-clone
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp-clone)
+
+fipa-bit-cp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-bit-cp)
+
+fipa-modref
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-modref)
+
+fipa-profile
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-profile)
+
+fipa-pta
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-pta)
+
+fipa-pure-const
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-pure-const)
+
+fipa-icf
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-icf)
+
+fipa-reference
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference)
+
+fipa-reference-addressable
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference-addressable)
+
+fipa-stack-alignment
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-stack-alignment)
+
+fipa-vrp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-vrp)
+
+fira-algorithm=
+UrlSuffix(gcc/Optimize-Options.html#index-fira-algorithm)
+
+fipa-strict-aliasing
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-strict-aliasing)
+
+fira-region=
+UrlSuffix(gcc/Optimize-Options.html#index-fira-region)
+
+fira-hoist-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fira-hoist-pressure)
+
+fira-loop-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fira-loop-pressure)
+
+fira-share-save-slots
+UrlSuffix(gcc/Optimize-Options.html#index-fira-share-save-slots)
+
+fira-share-spill-slots
+UrlSuffix(gcc/Optimize-Options.html#index-fira-share-spill-slots)
+
+fira-verbose=
+UrlSuffix(gcc/Developer-Options.html#index-fira-verbose)
+
+fivopts
+UrlSuffix(gcc/Optimize-Options.html#index-fivopts)
+
+fjump-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-fjump-tables)
+
+fbit-tests
+UrlSuffix(gcc/Code-Gen-Options.html#index-fbit-tests)
+
+; skipping 'fkeep-inline-functions' due to multiple URLs:
+;   duplicate: 'gcc/Inline.html#index-fkeep-inline-functions-1'
+;   duplicate: 'gcc/Optimize-Options.html#index-fkeep-inline-functions'
+
+fkeep-static-functions
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-functions)
+
+fkeep-static-consts
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-consts)
+
+fleading-underscore
+UrlSuffix(gcc/Code-Gen-Options.html#index-fleading-underscore)
+
+flra-remat
+UrlSuffix(gcc/Optimize-Options.html#index-flra-remat)
+
+flto
+UrlSuffix(gcc/Optimize-Options.html#index-flto)
+
+flto=
+UrlSuffix(gcc/Optimize-Options.html#index-flto)
+
+flto-partition=
+UrlSuffix(gcc/Optimize-Options.html#index-flto-partition)
+
+flto-compression-level=
+UrlSuffix(gcc/Optimize-Options.html#index-flto-compression-level)
+
+flto-report
+UrlSuffix(gcc/Developer-Options.html#index-flto-report)
+
+flto-report-wpa
+UrlSuffix(gcc/Developer-Options.html#index-flto-report-wpa)
+
+fmath-errno
+UrlSuffix(gcc/Optimize-Options.html#index-fmath-errno)
+
+fmax-errors=
+UrlSuffix(gcc/Warning-Options.html#index-fmax-errors)
+
+fmem-report
+UrlSuffix(gcc/Developer-Options.html#index-fmem-report)
+
+fmem-report-wpa
+UrlSuffix(gcc/Developer-Options.html#index-fmem-report-wpa)
+
+fmerge-all-constants
+UrlSuffix(gcc/Optimize-Options.html#index-fmerge-all-constants)
+
+fmerge-constants
+UrlSuffix(gcc/Optimize-Options.html#index-fmerge-constants)
+
+fmerge-debug-strings
+UrlSuffix(gcc/Debugging-Options.html#index-fmerge-debug-strings)
+
+fmessage-length=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fmessage-length)
+
+fmodulo-sched
+UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched)
+
+fmodulo-sched-allow-regmoves
+UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched-allow-regmoves)
+
+fmove-loop-invariants
+UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-invariants)
+
+fmove-loop-stores
+UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-stores)
+
+fmultiflags
+UrlSuffix(gcc/Developer-Options.html#index-fmultiflags)
+
+fdce
+UrlSuffix(gcc/Optimize-Options.html#index-fdce)
+
+fdse
+UrlSuffix(gcc/Optimize-Options.html#index-fdse)
+
+freschedule-modulo-scheduled-loops
+UrlSuffix(gcc/Optimize-Options.html#index-freschedule-modulo-scheduled-loops)
+
+fnon-call-exceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fnon-call-exceptions)
+
+foffload=
+UrlSuffix(gcc/C-Dialect-Options.html#index-foffload)
+
+foffload-options=
+UrlSuffix(gcc/C-Dialect-Options.html#index-foffload-options)
+
+fomit-frame-pointer
+UrlSuffix(gcc/Optimize-Options.html#index-fomit-frame-pointer)
+
+fopenmp-target-simd-clone
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone)
+
+fopenmp-target-simd-clone=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone)
+
+fopt-info
+UrlSuffix(gcc/Developer-Options.html#index-fopt-info)
+
+fsave-optimization-record
+UrlSuffix(gcc/Developer-Options.html#index-fsave-optimization-record)
+
+foptimize-sibling-calls
+UrlSuffix(gcc/Optimize-Options.html#index-foptimize-sibling-calls)
+
+fpartial-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-fpartial-inlining)
+
+fpre-ipa-mem-report
+UrlSuffix(gcc/Developer-Options.html#index-fpre-ipa-mem-report)
+
+fpost-ipa-mem-report
+UrlSuffix(gcc/Developer-Options.html#index-fpost-ipa-mem-report)
+
+fpack-struct
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct)
+
+fpack-struct=
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct)
+
+; skipping 'fpcc-struct-return' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fpcc-struct-return'
+;   duplicate: 'gcc/Incompatibilities.html#index-fpcc-struct-return-1'
+
+fpeel-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fpeel-loops)
+
+fpeephole
+UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole)
+
+fpeephole2
+UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole2)
+
+fPIC
+UrlSuffix(gcc/Code-Gen-Options.html#index-fPIC)
+
+fPIE
+UrlSuffix(gcc/Code-Gen-Options.html#index-fPIE)
+
+fpic
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpic)
+
+fpie
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpie)
+
+fplt
+UrlSuffix(gcc/Code-Gen-Options.html#index-fno-plt)
+
+fplugin=
+UrlSuffix(gcc/Overall-Options.html#index-fplugin)
+
+fpredictive-commoning
+UrlSuffix(gcc/Optimize-Options.html#index-fpredictive-commoning)
+
+fprefetch-loop-arrays
+UrlSuffix(gcc/Optimize-Options.html#index-fprefetch-loop-arrays)
+
+fprofile-abs-path
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-abs-path)
+
+; skipping 'fprofile-arcs' due to multiple URLs:
+;   duplicate: 'gcc/Instrumentation-Options.html#index-fprofile-arcs'
+;   duplicate: 'gcc/Other-Builtins.html#index-fprofile-arcs-1'
+
+fprofile-dir=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-dir)
+
+fprofile-note=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-note)
+
+fprofile-correction
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-correction)
+
+fprofile-update=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-update)
+
+fprofile-filter-files=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-filter-files)
+
+fprofile-exclude-files=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-exclude-files)
+
+fprofile-reproducible=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-reproducible)
+
+fprofile-prefix-path=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-path)
+
+fprofile-prefix-map=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-map)
+
+fprofile-generate
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate)
+
+fprofile-generate=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate)
+
+fprofile-info-section
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section)
+
+fprofile-info-section=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section)
+
+fprofile-partial-training
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-partial-training)
+
+fprofile-use
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use)
+
+fprofile-use=
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use)
+
+fprofile-values
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-values)
+
+fprofile-report
+UrlSuffix(gcc/Developer-Options.html#index-fprofile-report)
+
+fprofile-reorder-functions
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-reorder-functions)
+
+fpatchable-function-entry=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fpatchable-function-entry)
+
+frandom-seed
+UrlSuffix(gcc/Developer-Options.html#index-frandom-seed)
+
+frandom-seed=
+UrlSuffix(gcc/Developer-Options.html#index-frandom-seed)
+
+frecord-gcc-switches
+UrlSuffix(gcc/Code-Gen-Options.html#index-frecord-gcc-switches)
+
+freg-struct-return
+UrlSuffix(gcc/Code-Gen-Options.html#index-freg-struct-return)
+
+flifetime-dse
+UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
+
+flifetime-dse=
+UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
+
+flive-patching
+UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
+
+flive-patching=
+UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
+
+fallocation-dce
+UrlSuffix(gcc/Optimize-Options.html#index-fno-allocation-dce)
+
+flive-range-shrinkage
+UrlSuffix(gcc/Optimize-Options.html#index-flive-range-shrinkage)
+
+frename-registers
+UrlSuffix(gcc/Optimize-Options.html#index-frename-registers)
+
+fschedule-fusion
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-fusion)
+
+freorder-blocks
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks)
+
+freorder-blocks-algorithm=
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-algorithm)
+
+freorder-blocks-and-partition
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-and-partition)
+
+freorder-functions
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-functions)
+
+frerun-cse-after-loop
+UrlSuffix(gcc/Optimize-Options.html#index-frerun-cse-after-loop)
+
+frounding-math
+UrlSuffix(gcc/Optimize-Options.html#index-frounding-math)
+
+fsched-interblock
+UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-interblock)
+
+fsched-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-pressure)
+
+fsched-spec
+UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-spec)
+
+fsched-spec-load
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load)
+
+fsched-spec-load-dangerous
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load-dangerous)
+
+fsched-verbose=
+UrlSuffix(gcc/Developer-Options.html#index-fsched-verbose)
+
+fsched2-use-superblocks
+UrlSuffix(gcc/Optimize-Options.html#index-fsched2-use-superblocks)
+
+fschedule-insns
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns)
+
+fschedule-insns2
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns2)
+
+fselective-scheduling
+UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling)
+
+fselective-scheduling2
+UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling2)
+
+fsel-sched-pipelining
+UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining)
+
+fsel-sched-pipelining-outer-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining-outer-loops)
+
+fsemantic-interposition
+UrlSuffix(gcc/Optimize-Options.html#index-fsemantic-interposition)
+
+fsched-stalled-insns
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns)
+
+fsched-stalled-insns=
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns)
+
+fsched-stalled-insns-dep
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep)
+
+fsched-stalled-insns-dep=
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep)
+
+fsched-group-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-group-heuristic)
+
+fsched-critical-path-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-critical-path-heuristic)
+
+fsched-spec-insn-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-insn-heuristic)
+
+fsched-rank-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-rank-heuristic)
+
+fsched-last-insn-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-last-insn-heuristic)
+
+fsched-dep-count-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-dep-count-heuristic)
+
+fsection-anchors
+UrlSuffix(gcc/Optimize-Options.html#index-fsection-anchors)
+
+free
+UrlSuffix(gcc/Optimize-Options.html#index-free-1)
+
+fshow-column
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fno-show-column)
+
+fshrink-wrap
+UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap)
+
+fshrink-wrap-separate
+UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap-separate)
+
+fsignaling-nans
+UrlSuffix(gcc/Optimize-Options.html#index-fsignaling-nans)
+
+fsigned-zeros
+UrlSuffix(gcc/Optimize-Options.html#index-fno-signed-zeros)
+
+fsingle-precision-constant
+UrlSuffix(gcc/Optimize-Options.html#index-fsingle-precision-constant)
+
+fsplit-ivs-in-unroller
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-ivs-in-unroller)
+
+fsplit-stack
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsplit-stack)
+
+fsplit-wide-types
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types)
+
+fsplit-wide-types-early
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types-early)
+
+fssa-backprop
+UrlSuffix(gcc/Optimize-Options.html#index-fssa-backprop)
+
+fssa-phiopt
+UrlSuffix(gcc/Optimize-Options.html#index-fssa-phiopt)
+
+fstdarg-opt
+UrlSuffix(gcc/Optimize-Options.html#index-fstdarg-opt)
+
+fvariable-expansion-in-unroller
+UrlSuffix(gcc/Optimize-Options.html#index-fvariable-expansion-in-unroller)
+
+fstack-check=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check)
+
+fstack-check
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check)
+
+fstack-clash-protection
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-clash-protection)
+
+fstack-limit
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-stack-limit)
+
+fstack-limit-register=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-register)
+
+fstack-limit-symbol=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-symbol)
+
+fstack-protector
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector)
+
+fstack-protector-all
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-all)
+
+fstack-protector-strong
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-strong)
+
+fstack-protector-explicit
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-explicit)
+
+fstack-usage
+UrlSuffix(gcc/Developer-Options.html#index-fstack-usage)
+
+fstrict-aliasing
+UrlSuffix(gcc/Optimize-Options.html#index-fstrict-aliasing)
+
+fstrict-overflow
+UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-overflow)
+
+fsync-libcalls
+UrlSuffix(gcc/Code-Gen-Options.html#index-fsync-libcalls)
+
+fsyntax-only
+UrlSuffix(gcc/Warning-Options.html#index-fsyntax-only)
+
+ftest-coverage
+UrlSuffix(gcc/Instrumentation-Options.html#index-ftest-coverage)
+
+fthread-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-fthread-jumps)
+
+ftime-report
+UrlSuffix(gcc/Developer-Options.html#index-ftime-report)
+
+ftime-report-details
+UrlSuffix(gcc/Developer-Options.html#index-ftime-report-details)
+
+ftls-model=
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftls-model)
+
+ftoplevel-reorder
+UrlSuffix(gcc/Optimize-Options.html#index-fno-toplevel-reorder)
+
+ftracer
+UrlSuffix(gcc/Optimize-Options.html#index-ftracer)
+
+ftrampolines
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampolines)
+
+ftrampoline-impl=
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampoline-impl)
+
+ftrapping-math
+UrlSuffix(gcc/Optimize-Options.html#index-fno-trapping-math)
+
+ftrapv
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrapv)
+
+ftree-ccp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ccp)
+
+ftree-bit-ccp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-bit-ccp)
+
+ftree-ch
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ch)
+
+ftree-coalesce-vars
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-coalesce-vars)
+
+ftree-copy-prop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-copy-prop)
+
+ftree-switch-conversion
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-switch-conversion)
+
+ftree-dce
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dce)
+
+ftree-dominator-opts
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dominator-opts)
+
+ftree-tail-merge
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-tail-merge)
+
+ftree-dse
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dse)
+
+ftree-forwprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-forwprop)
+
+ftree-fre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-fre)
+
+foptimize-strlen
+UrlSuffix(gcc/Optimize-Options.html#index-foptimize-strlen)
+
+fisolate-erroneous-paths-dereference
+UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-dereference)
+
+fisolate-erroneous-paths-attribute
+UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-attribute)
+
+ftree-loop-distribution
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribution)
+
+ftree-loop-distribute-patterns
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribute-patterns)
+
+ftree-loop-im
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-im)
+
+ftree-loop-linear
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-linear)
+
+ftree-loop-ivcanon
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-ivcanon)
+
+ftree-loop-optimize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-optimize)
+
+ftree-parallelize-loops=
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-parallelize-loops)
+
+ftree-phiprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-phiprop)
+
+ftree-pre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-pre)
+
+ftree-partial-pre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-partial-pre)
+
+ftree-pta
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-pta)
+
+ftree-reassoc
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-reassoc)
+
+ftree-sink
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-sink)
+
+ftree-slsr
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-slsr)
+
+ftree-sra
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-sra)
+
+ftree-ter
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ter)
+
+ftree-vrp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-vrp)
+
+fsplit-paths
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-paths)
+
+funconstrained-commons
+UrlSuffix(gcc/Optimize-Options.html#index-funconstrained-commons)
+
+funit-at-a-time
+UrlSuffix(gcc/Optimize-Options.html#index-funit-at-a-time)
+
+funreachable-traps
+UrlSuffix(gcc/Optimize-Options.html#index-funreachable-traps)
+
+funroll-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funroll-loops)
+
+funroll-all-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funroll-all-loops)
+
+fassociative-math
+UrlSuffix(gcc/Optimize-Options.html#index-fassociative-math)
+
+freciprocal-math
+UrlSuffix(gcc/Optimize-Options.html#index-freciprocal-math)
+
+funsafe-math-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-funsafe-math-optimizations)
+
+funswitch-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funswitch-loops)
+
+fsplit-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-loops)
+
+fversion-loops-for-strides
+UrlSuffix(gcc/Optimize-Options.html#index-fversion-loops-for-strides)
+
+funwind-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-funwind-tables)
+
+fuse-ld=bfd
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dbfd)
+
+fuse-ld=gold
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dgold)
+
+fuse-ld=lld
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dlld)
+
+fuse-ld=mold
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dmold)
+
+fuse-linker-plugin
+UrlSuffix(gcc/Optimize-Options.html#index-fuse-linker-plugin)
+
+fvar-tracking
+UrlSuffix(gcc/Debugging-Options.html#index-fvar-tracking)
+
+fvar-tracking-assignments
+UrlSuffix(gcc/Debugging-Options.html#index-fno-var-tracking-assignments)
+
+fvar-tracking-assignments-toggle
+UrlSuffix(gcc/Developer-Options.html#index-fno-var-tracking-assignments-toggle)
+
+ftree-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-vectorize)
+
+ftree-loop-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-vectorize)
+
+ftree-slp-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-slp-vectorize)
+
+fvect-cost-model=
+UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model)
+
+fsimd-cost-model=
+UrlSuffix(gcc/Optimize-Options.html#index-fsimd-cost-model)
+
+fvect-cost-model
+UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model)
+
+ftree-scev-cprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-scev-cprop)
+
+ftrivial-auto-var-init=
+UrlSuffix(gcc/Optimize-Options.html#index-ftrivial-auto-var-init)
+
+fverbose-asm
+UrlSuffix(gcc/Code-Gen-Options.html#index-fverbose-asm)
+
+fvisibility=
+UrlSuffix(gcc/Code-Gen-Options.html#index-fvisibility)
+
+fvtable-verify=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtable-verify)
+
+fvtv-counts
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-counts)
+
+fvtv-debug
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-debug)
+
+fvpt
+UrlSuffix(gcc/Optimize-Options.html#index-fvpt)
+
+fweb
+UrlSuffix(gcc/Optimize-Options.html#index-fweb)
+
+ftree-builtin-call-dce
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-builtin-call-dce)
+
+fwhole-program
+UrlSuffix(gcc/Optimize-Options.html#index-fwhole-program)
+
+fwrapv-pointer
+UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv-pointer)
+
+fwrapv
+UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv)
+
+fzero-initialized-in-bss
+UrlSuffix(gcc/Optimize-Options.html#index-fno-zero-initialized-in-bss)
+
+fzero-call-used-regs=
+UrlSuffix(gcc/Optimize-Options.html#index-fzero-call-used-regs)
+
+g
+UrlSuffix(gcc/Debugging-Options.html#index-g)
+
+gas-loc-support
+UrlSuffix(gcc/Debugging-Options.html#index-gas-loc-support)
+
+gas-locview-support
+UrlSuffix(gcc/Debugging-Options.html#index-gas-locview-support)
+
+gcodeview
+UrlSuffix(gcc/Debugging-Options.html#index-gcodeview)
+
+gcolumn-info
+UrlSuffix(gcc/Debugging-Options.html#index-gcolumn-info)
+
+gctf
+UrlSuffix(gcc/Debugging-Options.html#index-gctf)
+
+gbtf
+UrlSuffix(gcc/Debugging-Options.html#index-gbtf)
+
+gdwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf)
+
+gdwarf32
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf32)
+
+gdwarf64
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf64)
+
+ggdb
+UrlSuffix(gcc/Debugging-Options.html#index-ggdb)
+
+ginline-points
+UrlSuffix(gcc/Debugging-Options.html#index-ginline-points)
+
+ginternal-reset-location-views
+UrlSuffix(gcc/Debugging-Options.html#index-ginternal-reset-location-views)
+
+gpubnames
+UrlSuffix(gcc/Debugging-Options.html#index-gpubnames)
+
+ggnu-pubnames
+UrlSuffix(gcc/Debugging-Options.html#index-ggnu-pubnames)
+
+grecord-gcc-switches
+UrlSuffix(gcc/Debugging-Options.html#index-grecord-gcc-switches)
+
+gsplit-dwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gsplit-dwarf)
+
+gstatement-frontiers
+UrlSuffix(gcc/Debugging-Options.html#index-gstatement-frontiers)
+
+gstrict-dwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gstrict-dwarf)
+
+gdescribe-dies
+UrlSuffix(gcc/Debugging-Options.html#index-gdescribe-dies)
+
+gtoggle
+UrlSuffix(gcc/Developer-Options.html#index-gtoggle)
+
+gvariable-location-views
+UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views)
+
+gvariable-location-views=incompat5
+UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views_003dincompat5)
+
+gvms
+UrlSuffix(gcc/Debugging-Options.html#index-gvms)
+
+gz
+UrlSuffix(gcc/Debugging-Options.html#index-gz)
+
+gz=
+UrlSuffix(gcc/Debugging-Options.html#index-gz)
+
+iplugindir=
+UrlSuffix(gcc/Directory-Options.html#index-iplugindir_003d)
+
+l
+UrlSuffix(gcc/Link-Options.html#index-l)
+
+no-canonical-prefixes
+UrlSuffix(gcc/Directory-Options.html#index-no-canonical-prefixes)
+
+nodefaultlibs
+UrlSuffix(gcc/Link-Options.html#index-nodefaultlibs)
+
+nostartfiles
+UrlSuffix(gcc/Link-Options.html#index-nostartfiles)
+
+nolibc
+UrlSuffix(gcc/Link-Options.html#index-nolibc)
+
+nostdlib
+UrlSuffix(gcc/Link-Options.html#index-nostdlib)
+
+nostdlib++
+UrlSuffix(gcc/Link-Options.html#index-nostdlib_002b_002b)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+p
+UrlSuffix(gcc/Instrumentation-Options.html#index-p)
+
+pass-exit-codes
+UrlSuffix(gcc/Overall-Options.html#index-pass-exit-codes)
+
+; skipping 'pedantic' due to multiple URLs:
+;   duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3'
+;   duplicate: 'gcc/C-Extensions.html#index-pedantic-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4'
+
+; skipping 'pedantic-errors' due to multiple URLs:
+;   duplicate: 'gcc/Non-bugs.html#index-pedantic-errors-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic-errors'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-errors-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-errors-3'
+
+pg
+UrlSuffix(gcc/Instrumentation-Options.html#index-pg)
+
+pipe
+UrlSuffix(gcc/Overall-Options.html#index-pipe)
+
+print-file-name=
+UrlSuffix(gcc/Developer-Options.html#index-print-file-name)
+
+print-libgcc-file-name
+UrlSuffix(gcc/Developer-Options.html#index-print-libgcc-file-name)
+
+print-multi-directory
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-directory)
+
+print-multi-lib
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-lib)
+
+print-multi-os-directory
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-os-directory)
+
+print-multiarch
+UrlSuffix(gcc/Developer-Options.html#index-print-multiarch)
+
+print-prog-name=
+UrlSuffix(gcc/Developer-Options.html#index-print-prog-name)
+
+print-search-dirs
+UrlSuffix(gcc/Developer-Options.html#index-print-search-dirs)
+
+print-sysroot
+UrlSuffix(gcc/Developer-Options.html#index-print-sysroot)
+
+print-sysroot-headers-suffix
+UrlSuffix(gcc/Developer-Options.html#index-print-sysroot-headers-suffix)
+
+r
+UrlSuffix(gcc/Link-Options.html#index-r)
+
+s
+UrlSuffix(gcc/Link-Options.html#index-s)
+
+save-temps
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+save-temps=
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+time
+UrlSuffix(gcc/Developer-Options.html#index-time)
+
+time=
+UrlSuffix(gcc/Developer-Options.html#index-time)
+
+u
+UrlSuffix(gcc/Link-Options.html#index-u)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v)
+
+version
+UrlSuffix(gcc/Overall-Options.html#index-version)
+
+w
+UrlSuffix(gcc/Warning-Options.html#index-w)
+
+wrapper
+UrlSuffix(gcc/Overall-Options.html#index-wrapper)
+
+x
+UrlSuffix(gcc/Overall-Options.html#index-x)
+
+shared
+UrlSuffix(gcc/Link-Options.html#index-shared)
+
+shared-libgcc
+UrlSuffix(gcc/Link-Options.html#index-shared-libgcc)
+
+specs
+UrlSuffix(gcc/Overall-Options.html#index-specs)
+
+specs=
+UrlSuffix(gcc/Overall-Options.html#index-specs)
+
+; skipping 'static' due to multiple URLs:
+;   duplicate: 'gcc/Darwin-Options.html#index-static-1'
+;   duplicate: 'gcc/Link-Options.html#index-static'
+
+static-libgcc
+UrlSuffix(gcc/Link-Options.html#index-static-libgcc)
+
+static-libstdc++
+UrlSuffix(gcc/Link-Options.html#index-static-libstdc_002b_002b)
+
+static-libasan
+UrlSuffix(gcc/Link-Options.html#index-static-libasan)
+
+static-libtsan
+UrlSuffix(gcc/Link-Options.html#index-static-libtsan)
+
+static-liblsan
+UrlSuffix(gcc/Link-Options.html#index-static-liblsan)
+
+static-libubsan
+UrlSuffix(gcc/Link-Options.html#index-static-libubsan)
+
+symbolic
+UrlSuffix(gcc/Link-Options.html#index-symbolic)
+
+no-pie
+UrlSuffix(gcc/Link-Options.html#index-no-pie)
+
+pie
+UrlSuffix(gcc/Link-Options.html#index-pie)
+
+static-pie
+UrlSuffix(gcc/Link-Options.html#index-static-pie)
+
+z
+UrlSuffix(gcc/Link-Options.html#index-z)
+
+fipa-ra
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-ra)
+
diff --git a/gcc/config/aarch64/aarch64.opt.urls b/gcc/config/aarch64/aarch64.opt.urls
new file mode 100644
index 000000000000..e008686db225
--- /dev/null
+++ b/gcc/config/aarch64/aarch64.opt.urls
@@ -0,0 +1,84 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/aarch64/aarch64.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/AArch64-Options.html#index-mbig-endian)
+
+mgeneral-regs-only
+UrlSuffix(gcc/AArch64-Options.html#index-mgeneral-regs-only)
+
+mharden-sls=
+UrlSuffix(gcc/AArch64-Options.html#index-mharden-sls)
+
+mfix-cortex-a53-835769
+UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-835769)
+
+mfix-cortex-a53-843419
+UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-843419)
+
+mlittle-endian
+UrlSuffix(gcc/AArch64-Options.html#index-mlittle-endian)
+
+; skipping 'mcmodel=' due to finding no URLs
+
+mtp=
+UrlSuffix(gcc/AArch64-Options.html#index-mtp)
+
+mstrict-align
+UrlSuffix(gcc/AArch64-Options.html#index-mstrict-align)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/AArch64-Options.html#index-momit-leaf-frame-pointer)
+
+; skipping 'mtls-dialect=' due to finding no URLs
+
+mtls-size=
+UrlSuffix(gcc/AArch64-Options.html#index-mtls-size)
+
+march=
+UrlSuffix(gcc/AArch64-Options.html#index-march)
+
+mcpu=
+UrlSuffix(gcc/AArch64-Options.html#index-mcpu)
+
+mtune=
+UrlSuffix(gcc/AArch64-Options.html#index-mtune)
+
+mabi=
+UrlSuffix(gcc/AArch64-Options.html#index-mabi)
+
+moverride=
+UrlSuffix(gcc/AArch64-Options.html#index-moverride)
+
+mpc-relative-literal-loads
+UrlSuffix(gcc/AArch64-Options.html#index-mpc-relative-literal-loads)
+
+mbranch-protection=
+UrlSuffix(gcc/AArch64-Options.html#index-mbranch-protection)
+
+msign-return-address=
+UrlSuffix(gcc/AArch64-Options.html#index-msign-return-address)
+
+mlow-precision-recip-sqrt
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-recip-sqrt)
+
+mlow-precision-sqrt
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-sqrt)
+
+mlow-precision-div
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-div)
+
+msve-vector-bits=
+UrlSuffix(gcc/AArch64-Options.html#index-msve-vector-bits)
+
+mverbose-cost-dump
+UrlSuffix(gcc/AArch64-Options.html#index-mverbose-cost-dump)
+
+mstack-protector-guard=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-reg)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-offset)
+
diff --git a/gcc/config/alpha/alpha.opt.urls b/gcc/config/alpha/alpha.opt.urls
new file mode 100644
index 000000000000..96d44b9c98c1
--- /dev/null
+++ b/gcc/config/alpha/alpha.opt.urls
@@ -0,0 +1,76 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/alpha.opt and generated HTML
+
+msoft-float
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msoft-float-2)
+
+; skipping 'mgas' due to finding no URLs
+
+mieee-conformant
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-conformant)
+
+mieee
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee)
+
+mieee-with-inexact
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-with-inexact)
+
+mbuild-constants
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbuild-constants)
+
+mfloat-vax
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-vax)
+
+mfloat-ieee
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-ieee)
+
+mbwx
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbwx)
+
+mmax
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmax)
+
+mfix
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfix)
+
+mcix
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcix)
+
+mexplicit-relocs
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mexplicit-relocs)
+
+msmall-data
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-data)
+
+mlarge-data
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-data)
+
+msmall-text
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-text)
+
+mlarge-text
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-text)
+
+; skipping 'mlong-double-128' due to finding no URLs
+
+; skipping 'mlong-double-64' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcpu-4)
+
+mtune=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtune-6)
+
+mfp-rounding-mode=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-rounding-mode)
+
+mfp-trap-mode=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-trap-mode)
+
+mtrap-precision=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtrap-precision)
+
+mmemory-latency=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmemory-latency)
+
+; skipping 'mtls-size=' due to finding no URLs
+
diff --git a/gcc/config/alpha/elf.opt.urls b/gcc/config/alpha/elf.opt.urls
new file mode 100644
index 000000000000..d97d0fe0f6a1
--- /dev/null
+++ b/gcc/config/alpha/elf.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/elf.opt and generated HTML
+
diff --git a/gcc/config/arc/arc-tables.opt.urls b/gcc/config/arc/arc-tables.opt.urls
new file mode 100644
index 000000000000..1e177e874064
--- /dev/null
+++ b/gcc/config/arc/arc-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc-tables.opt and generated HTML
+
diff --git a/gcc/config/arc/arc.opt.urls b/gcc/config/arc/arc.opt.urls
new file mode 100644
index 000000000000..b427a5573a6a
--- /dev/null
+++ b/gcc/config/arc/arc.opt.urls
@@ -0,0 +1,260 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/ARC-Options.html#index-mbig-endian-1)
+
+mlittle-endian
+UrlSuffix(gcc/ARC-Options.html#index-mlittle-endian-1)
+
+mno-cond-exec
+UrlSuffix(gcc/ARC-Options.html#index-mno-cond-exec)
+
+mA6
+UrlSuffix(gcc/ARC-Options.html#index-mA6)
+
+mARC600
+UrlSuffix(gcc/ARC-Options.html#index-mARC600)
+
+mARC601
+UrlSuffix(gcc/ARC-Options.html#index-mARC601)
+
+mA7
+UrlSuffix(gcc/ARC-Options.html#index-mA7)
+
+mARC700
+UrlSuffix(gcc/ARC-Options.html#index-mARC700)
+
+mjli-always
+UrlSuffix(gcc/ARC-Options.html#index-mjli-always)
+
+mmpy-option=
+UrlSuffix(gcc/ARC-Options.html#index-mmpy-option)
+
+mdiv-rem
+UrlSuffix(gcc/ARC-Options.html#index-mdiv-rem)
+
+mcode-density
+UrlSuffix(gcc/ARC-Options.html#index-mcode-density)
+
+mmixed-code
+UrlSuffix(gcc/ARC-Options.html#index-mmixed-code)
+
+mvolatile-cache
+UrlSuffix(gcc/ARC-Options.html#index-mvolatile-cache)
+
+mno-volatile-cache
+UrlSuffix(gcc/ARC-Options.html#index-mno-volatile-cache)
+
+mbarrel-shifter
+UrlSuffix(gcc/ARC-Options.html#index-mbarrel-shifter)
+
+mnorm
+UrlSuffix(gcc/ARC-Options.html#index-mnorm)
+
+mswap
+UrlSuffix(gcc/ARC-Options.html#index-mswap)
+
+mmul64
+UrlSuffix(gcc/ARC-Options.html#index-mmul64)
+
+mno-mpy
+UrlSuffix(gcc/ARC-Options.html#index-mno-mpy)
+
+mea
+UrlSuffix(gcc/ARC-Options.html#index-mea)
+
+msoft-float
+UrlSuffix(gcc/ARC-Options.html#index-msoft-float)
+
+mlong-calls
+UrlSuffix(gcc/ARC-Options.html#index-mlong-calls-1)
+
+mno-brcc
+UrlSuffix(gcc/ARC-Options.html#index-mno-brcc)
+
+msdata
+UrlSuffix(gcc/ARC-Options.html#index-msdata)
+
+mmillicode
+UrlSuffix(gcc/ARC-Options.html#index-mmillicode)
+
+mspfp
+UrlSuffix(gcc/ARC-Options.html#index-mspfp)
+
+mspfp-compact
+UrlSuffix(gcc/ARC-Options.html#index-mspfp-compact)
+
+mspfp-fast
+UrlSuffix(gcc/ARC-Options.html#index-mspfp-fast)
+
+margonaut
+UrlSuffix(gcc/ARC-Options.html#index-margonaut)
+
+mdpfp
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp)
+
+mdpfp-compact
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp-compact)
+
+mdpfp-fast
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp-fast)
+
+mno-dpfp-lrsr
+UrlSuffix(gcc/ARC-Options.html#index-mno-dpfp-lrsr)
+
+msimd
+UrlSuffix(gcc/ARC-Options.html#index-msimd)
+
+mcpu=
+UrlSuffix(gcc/ARC-Options.html#index-mcpu-1)
+
+msize-level=
+UrlSuffix(gcc/ARC-Options.html#index-msize-level)
+
+misize
+UrlSuffix(gcc/ARC-Options.html#index-misize)
+
+mmultcost=
+UrlSuffix(gcc/ARC-Options.html#index-mmultcost)
+
+mtune=
+UrlSuffix(gcc/ARC-Options.html#index-mtune-2)
+
+mindexed-loads
+UrlSuffix(gcc/ARC-Options.html#index-mindexed-loads)
+
+mauto-modify-reg
+UrlSuffix(gcc/ARC-Options.html#index-mauto-modify-reg)
+
+mmul32x16
+UrlSuffix(gcc/ARC-Options.html#index-mmul32x16)
+
+munalign-prob-threshold=
+UrlSuffix(gcc/ARC-Options.html#index-munalign-prob-threshold)
+
+mmedium-calls
+UrlSuffix(gcc/ARC-Options.html#index-mmedium-calls)
+
+mannotate-align
+UrlSuffix(gcc/ARC-Options.html#index-mannotate-align)
+
+malign-call
+UrlSuffix(gcc/ARC-Options.html#index-malign-call)
+
+mRcq
+UrlSuffix(gcc/ARC-Options.html#index-mRcq)
+
+mRcw
+UrlSuffix(gcc/ARC-Options.html#index-mRcw)
+
+mearly-cbranchsi
+UrlSuffix(gcc/ARC-Options.html#index-mearly-cbranchsi)
+
+mbbit-peephole
+UrlSuffix(gcc/ARC-Options.html#index-mbbit-peephole)
+
+mcase-vector-pcrel
+UrlSuffix(gcc/ARC-Options.html#index-mcase-vector-pcrel)
+
+mcompact-casesi
+UrlSuffix(gcc/ARC-Options.html#index-mcompact-casesi)
+
+mq-class
+UrlSuffix(gcc/ARC-Options.html#index-mq-class)
+
+mexpand-adddi
+UrlSuffix(gcc/ARC-Options.html#index-mexpand-adddi)
+
+; skipping 'mcrc' due to finding no URLs
+
+mdsp-packa
+UrlSuffix(gcc/ARC-Options.html#index-mdsp-packa)
+
+mdvbf
+UrlSuffix(gcc/ARC-Options.html#index-mdvbf)
+
+mmac-d16
+UrlSuffix(gcc/ARC-Options.html#index-mmac-d16)
+
+mmac-24
+UrlSuffix(gcc/ARC-Options.html#index-mmac-24)
+
+mtelephony
+UrlSuffix(gcc/ARC-Options.html#index-mtelephony)
+
+mxy
+UrlSuffix(gcc/ARC-Options.html#index-mxy)
+
+mlock
+UrlSuffix(gcc/ARC-Options.html#index-mlock)
+
+mswape
+UrlSuffix(gcc/ARC-Options.html#index-mswape)
+
+mrtsc
+UrlSuffix(gcc/ARC-Options.html#index-mrtsc)
+
+EB
+UrlSuffix(gcc/ARC-Options.html#index-EB)
+
+EL
+UrlSuffix(gcc/ARC-Options.html#index-EL)
+
+marclinux
+UrlSuffix(gcc/ARC-Options.html#index-marclinux)
+
+marclinux_prof
+UrlSuffix(gcc/ARC-Options.html#index-marclinux_005fprof)
+
+mlra
+UrlSuffix(gcc/ARC-Options.html#index-mlra)
+
+mlra-priority-none
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-none)
+
+mlra-priority-compact
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-compact)
+
+mlra-priority-noncompact
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-noncompact)
+
+mEA
+UrlSuffix(gcc/ARC-Options.html#index-mEA)
+
+multcost=
+UrlSuffix(gcc/ARC-Options.html#index-multcost)
+
+matomic
+UrlSuffix(gcc/ARC-Options.html#index-matomic)
+
+mll64
+UrlSuffix(gcc/ARC-Options.html#index-mll64)
+
+mfpu=
+UrlSuffix(gcc/ARC-Options.html#index-mfpu)
+
+mtp-regno=
+UrlSuffix(gcc/ARC-Options.html#index-mtp-regno)
+
+; skipping 'mbitops' due to finding no URLs
+
+; skipping 'munaligned-access' due to finding no URLs
+
+mirq-ctrl-saved=
+UrlSuffix(gcc/ARC-Options.html#index-mirq-ctrl-saved)
+
+mrgf-banked-regs=
+UrlSuffix(gcc/ARC-Options.html#index-mrgf-banked-regs)
+
+mlpc-width=
+UrlSuffix(gcc/ARC-Options.html#index-mlpc-width)
+
+mrf16
+UrlSuffix(gcc/ARC-Options.html#index-mrf16)
+
+mbranch-index
+UrlSuffix(gcc/ARC-Options.html#index-mbranch-index)
+
+mcode-density-frame
+UrlSuffix(gcc/ARC-Options.html#index-mcode-density-frame)
+
diff --git a/gcc/config/arm/arm-tables.opt.urls b/gcc/config/arm/arm-tables.opt.urls
new file mode 100644
index 000000000000..f0a6f8e1600c
--- /dev/null
+++ b/gcc/config/arm/arm-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm-tables.opt and generated HTML
+
diff --git a/gcc/config/arm/arm.opt.urls b/gcc/config/arm/arm.opt.urls
new file mode 100644
index 000000000000..11959708a212
--- /dev/null
+++ b/gcc/config/arm/arm.opt.urls
@@ -0,0 +1,149 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm.opt and generated HTML
+
+mabi=
+UrlSuffix(gcc/ARM-Options.html#index-mabi-1)
+
+mabort-on-noreturn
+UrlSuffix(gcc/ARM-Options.html#index-mabort-on-noreturn)
+
+mapcs
+UrlSuffix(gcc/ARM-Options.html#index-mapcs)
+
+mapcs-frame
+UrlSuffix(gcc/ARM-Options.html#index-mapcs-frame)
+
+march=
+UrlSuffix(gcc/ARM-Options.html#index-march-2)
+
+marm
+UrlSuffix(gcc/ARM-Options.html#index-marm)
+
+mbig-endian
+UrlSuffix(gcc/ARM-Options.html#index-mbig-endian-2)
+
+mcallee-super-interworking
+UrlSuffix(gcc/ARM-Options.html#index-mcallee-super-interworking)
+
+mcaller-super-interworking
+UrlSuffix(gcc/ARM-Options.html#index-mcaller-super-interworking)
+
+mcpu=
+UrlSuffix(gcc/ARM-Options.html#index-mcpu-2)
+
+mfloat-abi=
+UrlSuffix(gcc/ARM-Options.html#index-mfloat-abi)
+
+mcmse
+UrlSuffix(gcc/ARM-Options.html#index-mcmse)
+
+mflip-thumb
+UrlSuffix(gcc/ARM-Options.html#index-mflip-thumb)
+
+mfp16-format=
+UrlSuffix(gcc/ARM-Options.html#index-mfp16-format)
+
+mfpu=
+UrlSuffix(gcc/ARM-Options.html#index-mfpu-1)
+
+; skipping 'mhard-float' due to finding no URLs
+
+mlittle-endian
+UrlSuffix(gcc/ARM-Options.html#index-mlittle-endian-2)
+
+mlong-calls
+UrlSuffix(gcc/ARM-Options.html#index-mlong-calls-2)
+
+mpic-data-is-text-relative
+UrlSuffix(gcc/ARM-Options.html#index-mpic-data-is-text-relative)
+
+mpic-register=
+UrlSuffix(gcc/ARM-Options.html#index-mpic-register)
+
+mpoke-function-name
+UrlSuffix(gcc/ARM-Options.html#index-mpoke-function-name)
+
+msched-prolog
+UrlSuffix(gcc/ARM-Options.html#index-msched-prolog)
+
+msingle-pic-base
+UrlSuffix(gcc/ARM-Options.html#index-msingle-pic-base)
+
+; skipping 'msoft-float' due to finding no URLs
+
+mstructure-size-boundary=
+UrlSuffix(gcc/ARM-Options.html#index-mstructure-size-boundary)
+
+mthumb
+UrlSuffix(gcc/ARM-Options.html#index-mthumb)
+
+mthumb-interwork
+UrlSuffix(gcc/ARM-Options.html#index-mthumb-interwork)
+
+mtls-dialect=
+UrlSuffix(gcc/ARM-Options.html#index-mtls-dialect)
+
+mtp=
+UrlSuffix(gcc/ARM-Options.html#index-mtp-1)
+
+mtpcs-frame
+UrlSuffix(gcc/ARM-Options.html#index-mtpcs-frame)
+
+mtpcs-leaf-frame
+UrlSuffix(gcc/ARM-Options.html#index-mtpcs-leaf-frame)
+
+mtune=
+UrlSuffix(gcc/ARM-Options.html#index-mtune-4)
+
+mprint-tune-info
+UrlSuffix(gcc/ARM-Options.html#index-mprint-tune-info)
+
+mverbose-cost-dump
+UrlSuffix(gcc/ARM-Options.html#index-mverbose-cost-dump-1)
+
+mword-relocations
+UrlSuffix(gcc/ARM-Options.html#index-mword-relocations)
+
+mrestrict-it
+UrlSuffix(gcc/ARM-Options.html#index-mrestrict-it)
+
+mfix-cortex-m3-ldrd
+UrlSuffix(gcc/ARM-Options.html#index-mfix-cortex-m3-ldrd)
+
+mfix-cmse-cve-2021-35465
+UrlSuffix(gcc/ARM-Options.html#index-mfix-cmse-cve-2021-35465)
+
+munaligned-access
+UrlSuffix(gcc/ARM-Options.html#index-munaligned-access)
+
+mneon-for-64bits
+UrlSuffix(gcc/ARM-Options.html#index-mneon-for-64bits)
+
+mslow-flash-data
+UrlSuffix(gcc/ARM-Options.html#index-mslow-flash-data)
+
+masm-syntax-unified
+UrlSuffix(gcc/ARM-Options.html#index-masm-syntax-unified)
+
+mpure-code
+UrlSuffix(gcc/ARM-Options.html#index-mpure-code)
+
+mbe8
+UrlSuffix(gcc/ARM-Options.html#index-mbe8)
+
+; skipping 'mbranch-cost=' due to finding no URLs
+
+mbranch-protection=
+UrlSuffix(gcc/ARM-Options.html#index-mbranch-protection-1)
+
+mgeneral-regs-only
+UrlSuffix(gcc/ARM-Options.html#index-mgeneral-regs-only-1)
+
+mfdpic
+UrlSuffix(gcc/ARM-Options.html#index-mfdpic)
+
+mstack-protector-guard=
+UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-1)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-offset-1)
+
diff --git a/gcc/config/arm/vxworks.opt.urls b/gcc/config/arm/vxworks.opt.urls
new file mode 100644
index 000000000000..8fe7eec22783
--- /dev/null
+++ b/gcc/config/arm/vxworks.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/vxworks.opt and generated HTML
+
diff --git a/gcc/config/avr/avr.opt.urls b/gcc/config/avr/avr.opt.urls
new file mode 100644
index 000000000000..7af677199cc4
--- /dev/null
+++ b/gcc/config/avr/avr.opt.urls
@@ -0,0 +1,71 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/avr/avr.opt and generated HTML
+
+mcall-prologues
+UrlSuffix(gcc/AVR-Options.html#index-mcall-prologues)
+
+mmcu=
+UrlSuffix(gcc/AVR-Options.html#index-mmcu)
+
+mgas-isr-prologues
+UrlSuffix(gcc/AVR-Options.html#index-mgas-isr-prologues)
+
+mn-flash=
+UrlSuffix(gcc/AVR-Options.html#index-mn-flash)
+
+mrmw
+UrlSuffix(gcc/AVR-Options.html#index-mrmw)
+
+mshort-calls
+UrlSuffix(gcc/AVR-Options.html#index-mshort-calls)
+
+mint8
+UrlSuffix(gcc/AVR-Options.html#index-mint8)
+
+mno-interrupts
+UrlSuffix(gcc/AVR-Options.html#index-mno-interrupts)
+
+mbranch-cost=
+UrlSuffix(gcc/AVR-Options.html#index-mbranch-cost-1)
+
+mmain-is-OS_task
+UrlSuffix(gcc/AVR-Options.html#index-mmain-is-OS_005ftask)
+
+mtiny-stack
+UrlSuffix(gcc/AVR-Options.html#index-mtiny-stack)
+
+mrelax
+UrlSuffix(gcc/AVR-Options.html#index-mrelax)
+
+maccumulate-args
+UrlSuffix(gcc/AVR-Options.html#index-maccumulate-args)
+
+mstrict-X
+UrlSuffix(gcc/AVR-Options.html#index-mstrict-X)
+
+msp8
+UrlSuffix(gcc/AVR-Options.html#index-msp8)
+
+Waddr-space-convert
+UrlSuffix(gcc/AVR-Options.html#index-Waddr-space-convert)
+
+Wmisspelled-isr
+UrlSuffix(gcc/AVR-Options.html#index-Wmisspelled-isr)
+
+mfract-convert-truncate
+UrlSuffix(gcc/AVR-Options.html#index-mfract-convert-truncate)
+
+mabsdata
+UrlSuffix(gcc/AVR-Options.html#index-mabsdata)
+
+mdouble=
+UrlSuffix(gcc/AVR-Options.html#index-mdouble)
+
+mlong-double=
+UrlSuffix(gcc/AVR-Options.html#index-mlong-double)
+
+nodevicelib
+UrlSuffix(gcc/AVR-Options.html#index-nodevicelib)
+
+nodevicespecs
+UrlSuffix(gcc/AVR-Options.html#index-nodevicespecs)
+
diff --git a/gcc/config/bfin/bfin.opt.urls b/gcc/config/bfin/bfin.opt.urls
new file mode 100644
index 000000000000..99836a30924b
--- /dev/null
+++ b/gcc/config/bfin/bfin.opt.urls
@@ -0,0 +1,61 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/bfin/bfin.opt and generated HTML
+
+msim
+UrlSuffix(gcc/Blackfin-Options.html#index-msim)
+
+mcpu=
+UrlSuffix(gcc/Blackfin-Options.html#index-mcpu_003d)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/Blackfin-Options.html#index-momit-leaf-frame-pointer-1)
+
+mlow64k
+UrlSuffix(gcc/Blackfin-Options.html#index-mlow64k)
+
+mcsync-anomaly
+UrlSuffix(gcc/Blackfin-Options.html#index-mcsync-anomaly)
+
+mspecld-anomaly
+UrlSuffix(gcc/Blackfin-Options.html#index-mspecld-anomaly)
+
+mid-shared-library
+UrlSuffix(gcc/Blackfin-Options.html#index-mid-shared-library)
+
+mleaf-id-shared-library
+UrlSuffix(gcc/Blackfin-Options.html#index-mleaf-id-shared-library)
+
+mshared-library-id=
+UrlSuffix(gcc/Blackfin-Options.html#index-mshared-library-id)
+
+msep-data
+UrlSuffix(gcc/Blackfin-Options.html#index-msep-data)
+
+mlong-calls
+UrlSuffix(gcc/Blackfin-Options.html#index-mlong-calls-3)
+
+mfast-fp
+UrlSuffix(gcc/Blackfin-Options.html#index-mfast-fp)
+
+; skipping 'mfdpic' due to finding no URLs
+
+minline-plt
+UrlSuffix(gcc/Blackfin-Options.html#index-minline-plt)
+
+mstack-check-l1
+UrlSuffix(gcc/Blackfin-Options.html#index-mstack-check-l1)
+
+mmulticore
+UrlSuffix(gcc/Blackfin-Options.html#index-mmulticore)
+
+mcorea
+UrlSuffix(gcc/Blackfin-Options.html#index-mcorea)
+
+mcoreb
+UrlSuffix(gcc/Blackfin-Options.html#index-mcoreb)
+
+msdram
+UrlSuffix(gcc/Blackfin-Options.html#index-msdram)
+
+micplb
+UrlSuffix(gcc/Blackfin-Options.html#index-micplb)
+
diff --git a/gcc/config/bpf/bpf.opt.urls b/gcc/config/bpf/bpf.opt.urls
new file mode 100644
index 000000000000..8c1e5f86d5cc
--- /dev/null
+++ b/gcc/config/bpf/bpf.opt.urls
@@ -0,0 +1,35 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/bpf/bpf.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/eBPF-Options.html#index-mbig-endian-5)
+
+mlittle-endian
+UrlSuffix(gcc/eBPF-Options.html#index-mlittle-endian-5)
+
+mco-re
+UrlSuffix(gcc/eBPF-Options.html#index-mco-re)
+
+mjmpext
+UrlSuffix(gcc/eBPF-Options.html#index-mjmpext)
+
+malu32
+UrlSuffix(gcc/eBPF-Options.html#index-malu32)
+
+mjmp32
+UrlSuffix(gcc/eBPF-Options.html#index-mjmp32)
+
+mv3-atomics
+UrlSuffix(gcc/eBPF-Options.html#index-mv3-atomics)
+
+mbswap
+UrlSuffix(gcc/eBPF-Options.html#index-mbswap)
+
+msdiv
+UrlSuffix(gcc/eBPF-Options.html#index-msdiv)
+
+msmov
+UrlSuffix(gcc/eBPF-Options.html#index-msmov)
+
+mcpu=
+UrlSuffix(gcc/eBPF-Options.html#index-mcpu-5)
+
diff --git a/gcc/config/c6x/c6x-tables.opt.urls b/gcc/config/c6x/c6x-tables.opt.urls
new file mode 100644
index 000000000000..35d14c753e2c
--- /dev/null
+++ b/gcc/config/c6x/c6x-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x-tables.opt and generated HTML
+
diff --git a/gcc/config/c6x/c6x.opt.urls b/gcc/config/c6x/c6x.opt.urls
new file mode 100644
index 000000000000..51a6a6068baa
--- /dev/null
+++ b/gcc/config/c6x/c6x.opt.urls
@@ -0,0 +1,18 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/C6X-Options.html#index-mbig-endian-3)
+
+mlittle-endian
+UrlSuffix(gcc/C6X-Options.html#index-mlittle-endian-3)
+
+msim
+UrlSuffix(gcc/C6X-Options.html#index-msim-1)
+
+; skipping 'msdata=' due to finding no URLs
+
+; skipping 'mlong-calls' due to finding no URLs
+
+march=
+UrlSuffix(gcc/C6X-Options.html#index-march-3)
+
diff --git a/gcc/config/cris/cris.opt.urls b/gcc/config/cris/cris.opt.urls
new file mode 100644
index 000000000000..56eeaa25da1c
--- /dev/null
+++ b/gcc/config/cris/cris.opt.urls
@@ -0,0 +1,65 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/cris.opt and generated HTML
+
+mmul-bug-workaround
+UrlSuffix(gcc/CRIS-Options.html#index-mmul-bug-workaround)
+
+metrax4
+UrlSuffix(gcc/CRIS-Options.html#index-metrax4)
+
+metrax100
+UrlSuffix(gcc/CRIS-Options.html#index-metrax100)
+
+mpdebug
+UrlSuffix(gcc/CRIS-Options.html#index-mpdebug)
+
+mcc-init
+UrlSuffix(gcc/CRIS-Options.html#index-mcc-init)
+
+mside-effects
+UrlSuffix(gcc/CRIS-Options.html#index-mside-effects)
+
+mno-side-effects
+UrlSuffix(gcc/CRIS-Options.html#index-mno-side-effects)
+
+mstack-align
+UrlSuffix(gcc/CRIS-Options.html#index-mstack-align)
+
+mno-stack-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-stack-align)
+
+mdata-align
+UrlSuffix(gcc/CRIS-Options.html#index-mdata-align)
+
+mno-data-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-data-align)
+
+mconst-align
+UrlSuffix(gcc/CRIS-Options.html#index-mconst-align)
+
+mno-const-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-const-align)
+
+m32-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m32-bit)
+
+m16-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m16-bit)
+
+m8-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m8-bit)
+
+mprologue-epilogue
+UrlSuffix(gcc/CRIS-Options.html#index-mprologue-epilogue)
+
+mno-prologue-epilogue
+UrlSuffix(gcc/CRIS-Options.html#index-mno-prologue-epilogue)
+
+mcpu=
+UrlSuffix(gcc/CRIS-Options.html#index-mcpu-3)
+
+march=
+UrlSuffix(gcc/CRIS-Options.html#index-march-4)
+
+mtune=
+UrlSuffix(gcc/CRIS-Options.html#index-mtune-5)
+
diff --git a/gcc/config/cris/elf.opt.urls b/gcc/config/cris/elf.opt.urls
new file mode 100644
index 000000000000..bdfa01e97a49
--- /dev/null
+++ b/gcc/config/cris/elf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/elf.opt and generated HTML
+
+melf
+UrlSuffix(gcc/CRIS-Options.html#index-melf)
+
+sim
+UrlSuffix(gcc/CRIS-Options.html#index-sim)
+
diff --git a/gcc/config/csky/csky.opt.urls b/gcc/config/csky/csky.opt.urls
new file mode 100644
index 000000000000..96b0b174f7c9
--- /dev/null
+++ b/gcc/config/csky/csky.opt.urls
@@ -0,0 +1,104 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky.opt and generated HTML
+
+march=
+UrlSuffix(gcc/C-SKY-Options.html#index-march_003d)
+
+mcpu=
+UrlSuffix(gcc/C-SKY-Options.html#index-mcpu_003d-1)
+
+mbig-endian
+UrlSuffix(gcc/C-SKY-Options.html#index-mbig-endian-4)
+
+EB
+UrlSuffix(gcc/C-SKY-Options.html#index-EB-1)
+
+mlittle-endian
+UrlSuffix(gcc/C-SKY-Options.html#index-mlittle-endian-4)
+
+EL
+UrlSuffix(gcc/C-SKY-Options.html#index-EL-1)
+
+mhard-float
+UrlSuffix(gcc/C-SKY-Options.html#index-mhard-float)
+
+msoft-float
+UrlSuffix(gcc/C-SKY-Options.html#index-msoft-float-1)
+
+mfloat-abi=
+UrlSuffix(gcc/C-SKY-Options.html#index-mfloat-abi-1)
+
+mfpu=
+UrlSuffix(gcc/C-SKY-Options.html#index-mfpu_003d)
+
+mdouble-float
+UrlSuffix(gcc/C-SKY-Options.html#index-mdouble-float)
+
+mfdivdu
+UrlSuffix(gcc/C-SKY-Options.html#index-mfdivdu)
+
+melrw
+UrlSuffix(gcc/C-SKY-Options.html#index-melrw)
+
+mistack
+UrlSuffix(gcc/C-SKY-Options.html#index-mistack)
+
+mmp
+UrlSuffix(gcc/C-SKY-Options.html#index-mmp)
+
+mcp
+UrlSuffix(gcc/C-SKY-Options.html#index-mcp)
+
+mcache
+UrlSuffix(gcc/C-SKY-Options.html#index-mcache)
+
+msecurity
+UrlSuffix(gcc/C-SKY-Options.html#index-msecurity)
+
+mtrust
+UrlSuffix(gcc/C-SKY-Options.html#index-mtrust)
+
+mdsp
+UrlSuffix(gcc/C-SKY-Options.html#index-mdsp)
+
+medsp
+UrlSuffix(gcc/C-SKY-Options.html#index-medsp)
+
+mvdsp
+UrlSuffix(gcc/C-SKY-Options.html#index-mvdsp)
+
+mdiv
+UrlSuffix(gcc/C-SKY-Options.html#index-mdiv)
+
+msmart
+UrlSuffix(gcc/C-SKY-Options.html#index-msmart)
+
+mhigh-registers
+UrlSuffix(gcc/C-SKY-Options.html#index-mhigh-registers)
+
+manchor
+UrlSuffix(gcc/C-SKY-Options.html#index-manchor)
+
+mpushpop
+UrlSuffix(gcc/C-SKY-Options.html#index-mpushpop)
+
+mmultiple-stld
+UrlSuffix(gcc/C-SKY-Options.html#index-mmultiple-stld)
+
+mconstpool
+UrlSuffix(gcc/C-SKY-Options.html#index-mconstpool)
+
+mstack-size
+UrlSuffix(gcc/C-SKY-Options.html#index-mstack-size-1)
+
+mccrt
+UrlSuffix(gcc/C-SKY-Options.html#index-mccrt)
+
+mbranch-cost=
+UrlSuffix(gcc/C-SKY-Options.html#index-mbranch-cost_003d)
+
+msched-prolog
+UrlSuffix(gcc/C-SKY-Options.html#index-msched-prolog-1)
+
+msim
+UrlSuffix(gcc/C-SKY-Options.html#index-msim-2)
+
diff --git a/gcc/config/csky/csky_tables.opt.urls b/gcc/config/csky/csky_tables.opt.urls
new file mode 100644
index 000000000000..eaa247bc897c
--- /dev/null
+++ b/gcc/config/csky/csky_tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky_tables.opt and generated HTML
+
diff --git a/gcc/config/darwin.opt.urls b/gcc/config/darwin.opt.urls
new file mode 100644
index 000000000000..74b61767d684
--- /dev/null
+++ b/gcc/config/darwin.opt.urls
@@ -0,0 +1,221 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/darwin.opt and generated HTML
+
+dependency-file
+UrlSuffix(gcc/Darwin-Options.html#index-dependency-file)
+
+fconstant-cfstrings
+UrlSuffix(gcc/Darwin-Options.html#index-fconstant-cfstrings)
+
+iframework
+UrlSuffix(gcc/Darwin-Options.html#index-iframework)
+
+mconstant-cfstrings
+UrlSuffix(gcc/Darwin-Options.html#index-mconstant-cfstrings)
+
+; skipping 'mdynamic-no-pic' due to finding no URLs
+
+mfix-and-continue
+UrlSuffix(gcc/Darwin-Options.html#index-mfix-and-continue)
+
+mkernel
+UrlSuffix(gcc/Darwin-Options.html#index-mkernel)
+
+mmacosx-version-min=
+UrlSuffix(gcc/Darwin-Options.html#index-mmacosx-version-min)
+
+mone-byte-bool
+UrlSuffix(gcc/Darwin-Options.html#index-mone-byte-bool)
+
+all_load
+UrlSuffix(gcc/Darwin-Options.html#index-all_005fload)
+
+allowable_client
+UrlSuffix(gcc/Darwin-Options.html#index-allowable_005fclient)
+
+arch_errors_fatal
+UrlSuffix(gcc/Darwin-Options.html#index-arch_005ferrors_005ffatal)
+
+bind_at_load
+UrlSuffix(gcc/Darwin-Options.html#index-bind_005fat_005fload)
+
+bundle
+UrlSuffix(gcc/Darwin-Options.html#index-bundle)
+
+bundle_loader
+UrlSuffix(gcc/Darwin-Options.html#index-bundle_005floader)
+
+client_name
+UrlSuffix(gcc/Darwin-Options.html#index-client_005fname)
+
+compatibility_version
+UrlSuffix(gcc/Darwin-Options.html#index-compatibility_005fversion)
+
+current_version
+UrlSuffix(gcc/Darwin-Options.html#index-current_005fversion)
+
+dead_strip
+UrlSuffix(gcc/Darwin-Options.html#index-dead_005fstrip)
+
+dylib_file
+UrlSuffix(gcc/Darwin-Options.html#index-dylib_005ffile)
+
+dylinker_install_name
+UrlSuffix(gcc/Darwin-Options.html#index-dylinker_005finstall_005fname)
+
+dynamic
+UrlSuffix(gcc/Darwin-Options.html#index-dynamic)
+
+dynamiclib
+UrlSuffix(gcc/Darwin-Options.html#index-dynamiclib)
+
+exported_symbols_list
+UrlSuffix(gcc/Darwin-Options.html#index-exported_005fsymbols_005flist)
+
+filelist
+UrlSuffix(gcc/Darwin-Options.html#index-filelist)
+
+flat_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-flat_005fnamespace)
+
+force_cpusubtype_ALL
+UrlSuffix(gcc/Darwin-Options.html#index-force_005fcpusubtype_005fALL)
+
+force_flat_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-force_005fflat_005fnamespace)
+
+gfull
+UrlSuffix(gcc/Darwin-Options.html#index-gfull)
+
+gused
+UrlSuffix(gcc/Darwin-Options.html#index-gused)
+
+headerpad_max_install_names
+UrlSuffix(gcc/Darwin-Options.html#index-headerpad_005fmax_005finstall_005fnames)
+
+image_base
+UrlSuffix(gcc/Darwin-Options.html#index-image_005fbase)
+
+init
+UrlSuffix(gcc/Darwin-Options.html#index-init)
+
+install_name
+UrlSuffix(gcc/Darwin-Options.html#index-install_005fname)
+
+keep_private_externs
+UrlSuffix(gcc/Darwin-Options.html#index-keep_005fprivate_005fexterns)
+
+multi_module
+UrlSuffix(gcc/Darwin-Options.html#index-multi_005fmodule)
+
+multiply_defined
+UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined)
+
+multiply_defined_unused
+UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined_005funused)
+
+no_dead_strip_inits_and_terms
+UrlSuffix(gcc/Darwin-Options.html#index-no_005fdead_005fstrip_005finits_005fand_005fterms)
+
+nodefaultrpaths
+UrlSuffix(gcc/Darwin-Options.html#index-nodefaultrpaths)
+
+nofixprebinding
+UrlSuffix(gcc/Darwin-Options.html#index-nofixprebinding)
+
+nomultidefs
+UrlSuffix(gcc/Darwin-Options.html#index-nomultidefs)
+
+noprebind
+UrlSuffix(gcc/Darwin-Options.html#index-noprebind)
+
+noseglinkedit
+UrlSuffix(gcc/Darwin-Options.html#index-noseglinkedit)
+
+pagezero_size
+UrlSuffix(gcc/Darwin-Options.html#index-pagezero_005fsize)
+
+prebind
+UrlSuffix(gcc/Darwin-Options.html#index-prebind)
+
+prebind_all_twolevel_modules
+UrlSuffix(gcc/Darwin-Options.html#index-prebind_005fall_005ftwolevel_005fmodules)
+
+private_bundle
+UrlSuffix(gcc/Darwin-Options.html#index-private_005fbundle)
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
+read_only_relocs
+UrlSuffix(gcc/Darwin-Options.html#index-read_005fonly_005frelocs)
+
+sectalign
+UrlSuffix(gcc/Darwin-Options.html#index-sectalign)
+
+sectcreate
+UrlSuffix(gcc/Darwin-Options.html#index-sectcreate)
+
+sectobjectsymbols
+UrlSuffix(gcc/Darwin-Options.html#index-sectobjectsymbols)
+
+sectorder
+UrlSuffix(gcc/Darwin-Options.html#index-sectorder)
+
+seg_addr_table
+UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable)
+
+seg_addr_table_filename
+UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable_005ffilename)
+
+seg1addr
+UrlSuffix(gcc/Darwin-Options.html#index-seg1addr)
+
+segaddr
+UrlSuffix(gcc/Darwin-Options.html#index-segaddr)
+
+seglinkedit
+UrlSuffix(gcc/Darwin-Options.html#index-seglinkedit)
+
+segprot
+UrlSuffix(gcc/Darwin-Options.html#index-segprot)
+
+segs_read_only_addr
+UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fonly_005faddr)
+
+segs_read_write_addr
+UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fwrite_005faddr)
+
+single_module
+UrlSuffix(gcc/Darwin-Options.html#index-single_005fmodule)
+
+sub_library
+UrlSuffix(gcc/Darwin-Options.html#index-sub_005flibrary)
+
+sub_umbrella
+UrlSuffix(gcc/Darwin-Options.html#index-sub_005fumbrella)
+
+twolevel_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-twolevel_005fnamespace)
+
+umbrella
+UrlSuffix(gcc/Darwin-Options.html#index-umbrella)
+
+undefined
+UrlSuffix(gcc/Darwin-Options.html#index-undefined)
+
+unexported_symbols_list
+UrlSuffix(gcc/Darwin-Options.html#index-unexported_005fsymbols_005flist)
+
+weak_reference_mismatches
+UrlSuffix(gcc/Darwin-Options.html#index-weak_005freference_005fmismatches)
+
+whatsloaded
+UrlSuffix(gcc/Darwin-Options.html#index-whatsloaded)
+
+whyload
+UrlSuffix(gcc/Darwin-Options.html#index-whyload)
+
diff --git a/gcc/config/dragonfly.opt.urls b/gcc/config/dragonfly.opt.urls
new file mode 100644
index 000000000000..4a4a228ec1e7
--- /dev/null
+++ b/gcc/config/dragonfly.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/dragonfly.opt and generated HTML
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/epiphany/epiphany.opt.urls b/gcc/config/epiphany/epiphany.opt.urls
new file mode 100644
index 000000000000..54b100633861
--- /dev/null
+++ b/gcc/config/epiphany/epiphany.opt.urls
@@ -0,0 +1,52 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/epiphany/epiphany.opt and generated HTML
+
+mhalf-reg-file
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mhalf-reg-file)
+
+mprefer-short-insn-regs
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mprefer-short-insn-regs)
+
+mbranch-cost=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mbranch-cost)
+
+mcmove
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mcmove)
+
+mnops=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mnops)
+
+msoft-cmpsf
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msoft-cmpsf)
+
+msplit-lohi
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-lohi)
+
+mstack-offset=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mstack-offset)
+
+mround-nearest
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mround-nearest)
+
+mlong-calls
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mlong-calls)
+
+; skipping 'mshort-calls' due to finding no URLs
+
+msmall16
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msmall16)
+
+mfp-mode=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mfp-mode)
+
+mvect-double
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mvect-double)
+
+max-vect-align=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-max-vect-align)
+
+msplit-vecmove-early
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-vecmove-early)
+
+m1reg-
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-m1reg-)
+
diff --git a/gcc/config/fr30/fr30.opt.urls b/gcc/config/fr30/fr30.opt.urls
new file mode 100644
index 000000000000..eabbfbfd9dd3
--- /dev/null
+++ b/gcc/config/fr30/fr30.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/fr30/fr30.opt and generated HTML
+
+msmall-model
+UrlSuffix(gcc/FR30-Options.html#index-msmall-model)
+
+mno-lsim
+UrlSuffix(gcc/FR30-Options.html#index-mno-lsim)
+
diff --git a/gcc/config/freebsd.opt.urls b/gcc/config/freebsd.opt.urls
new file mode 100644
index 000000000000..0b6605837048
--- /dev/null
+++ b/gcc/config/freebsd.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/freebsd.opt and generated HTML
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/frv/frv.opt.urls b/gcc/config/frv/frv.opt.urls
new file mode 100644
index 000000000000..db9e9c59030a
--- /dev/null
+++ b/gcc/config/frv/frv.opt.urls
@@ -0,0 +1,111 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/frv/frv.opt and generated HTML
+
+macc-4
+UrlSuffix(gcc/FRV-Options.html#index-macc-4)
+
+macc-8
+UrlSuffix(gcc/FRV-Options.html#index-macc-8)
+
+malign-labels
+UrlSuffix(gcc/FRV-Options.html#index-malign-labels)
+
+malloc-cc
+UrlSuffix(gcc/FRV-Options.html#index-malloc-cc)
+
+; skipping 'mbranch-cost=' due to finding no URLs
+
+mcond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mcond-exec)
+
+mcond-move
+UrlSuffix(gcc/FRV-Options.html#index-mcond-move)
+
+mcpu=
+UrlSuffix(gcc/FRV-Options.html#index-mcpu-6)
+
+; skipping 'mdebug' due to finding no URLs
+
+mdouble
+UrlSuffix(gcc/FRV-Options.html#index-mdouble-1)
+
+mdword
+UrlSuffix(gcc/FRV-Options.html#index-mdword)
+
+mfdpic
+UrlSuffix(gcc/FRV-Options.html#index-mfdpic-1)
+
+mfixed-cc
+UrlSuffix(gcc/FRV-Options.html#index-mfixed-cc)
+
+mfpr-32
+UrlSuffix(gcc/FRV-Options.html#index-mfpr-32)
+
+mfpr-64
+UrlSuffix(gcc/FRV-Options.html#index-mfpr-64)
+
+mgpr-32
+UrlSuffix(gcc/FRV-Options.html#index-mgpr-32)
+
+mgpr-64
+UrlSuffix(gcc/FRV-Options.html#index-mgpr-64)
+
+mgprel-ro
+UrlSuffix(gcc/FRV-Options.html#index-mgprel-ro)
+
+mhard-float
+UrlSuffix(gcc/FRV-Options.html#index-mhard-float-1)
+
+minline-plt
+UrlSuffix(gcc/FRV-Options.html#index-minline-plt-1)
+
+mlibrary-pic
+UrlSuffix(gcc/FRV-Options.html#index-mlibrary-pic)
+
+mlinked-fp
+UrlSuffix(gcc/FRV-Options.html#index-mlinked-fp)
+
+mlong-calls
+UrlSuffix(gcc/FRV-Options.html#index-mlong-calls-4)
+
+mmedia
+UrlSuffix(gcc/FRV-Options.html#index-mmedia)
+
+mmuladd
+UrlSuffix(gcc/FRV-Options.html#index-mmuladd)
+
+mmulti-cond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mmulti-cond-exec)
+
+mnested-cond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mnested-cond-exec)
+
+mno-eflags
+UrlSuffix(gcc/FRV-Options.html#index-mno-eflags)
+
+moptimize-membar
+UrlSuffix(gcc/FRV-Options.html#index-moptimize-membar)
+
+mpack
+UrlSuffix(gcc/FRV-Options.html#index-mpack)
+
+mscc
+UrlSuffix(gcc/FRV-Options.html#index-mscc)
+
+msoft-float
+UrlSuffix(gcc/FRV-Options.html#index-msoft-float-3)
+
+mTLS
+UrlSuffix(gcc/FRV-Options.html#index-mTLS)
+
+mtls
+UrlSuffix(gcc/FRV-Options.html#index-mtls)
+
+mtomcat-stats
+UrlSuffix(gcc/FRV-Options.html#index-mtomcat-stats)
+
+multilib-library-pic
+UrlSuffix(gcc/FRV-Options.html#index-multilib-library-pic)
+
+mvliw-branch
+UrlSuffix(gcc/FRV-Options.html#index-mvliw-branch)
+
diff --git a/gcc/config/ft32/ft32.opt.urls b/gcc/config/ft32/ft32.opt.urls
new file mode 100644
index 000000000000..707cb83010f0
--- /dev/null
+++ b/gcc/config/ft32/ft32.opt.urls
@@ -0,0 +1,20 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ft32/ft32.opt and generated HTML
+
+msim
+UrlSuffix(gcc/FT32-Options.html#index-msim-3)
+
+mlra
+UrlSuffix(gcc/FT32-Options.html#index-mlra-1)
+
+mnodiv
+UrlSuffix(gcc/FT32-Options.html#index-mnodiv)
+
+mft32b
+UrlSuffix(gcc/FT32-Options.html#index-mft32b)
+
+mcompress
+UrlSuffix(gcc/FT32-Options.html#index-mcompress)
+
+mnopm
+UrlSuffix(gcc/FT32-Options.html#index-mnopm)
+
diff --git a/gcc/config/fused-madd.opt.urls b/gcc/config/fused-madd.opt.urls
new file mode 100644
index 000000000000..0641ac9ca185
--- /dev/null
+++ b/gcc/config/fused-madd.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/fused-madd.opt and generated HTML
+
+; skipping 'mfused-madd' due to finding no URLs
+
diff --git a/gcc/config/g.opt.urls b/gcc/config/g.opt.urls
new file mode 100644
index 000000000000..4ffd5cbd2cf5
--- /dev/null
+++ b/gcc/config/g.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/g.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
diff --git a/gcc/config/gcn/gcn.opt.urls b/gcc/config/gcn/gcn.opt.urls
new file mode 100644
index 000000000000..2183dafd8c26
--- /dev/null
+++ b/gcc/config/gcn/gcn.opt.urls
@@ -0,0 +1,23 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/gcn/gcn.opt and generated HTML
+
+march=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-march-1)
+
+mtune=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mtune-1)
+
+; skipping 'm32' due to finding no URLs
+
+; skipping 'm64' due to finding no URLs
+
+; skipping 'mgomp' due to finding no URLs
+
+mstack-size=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mstack-size)
+
+mxnack=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mxnack)
+
+msram-ecc=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-msram-ecc)
+
diff --git a/gcc/config/gnu-user.opt.urls b/gcc/config/gnu-user.opt.urls
new file mode 100644
index 000000000000..0fcdd3096831
--- /dev/null
+++ b/gcc/config/gnu-user.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/gnu-user.opt and generated HTML
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/h8300/h8300.opt.urls b/gcc/config/h8300/h8300.opt.urls
new file mode 100644
index 000000000000..8cbd7c313b7f
--- /dev/null
+++ b/gcc/config/h8300/h8300.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/h8300/h8300.opt and generated HTML
+
+ms
+UrlSuffix(gcc/H8_002f300-Options.html#index-ms)
+
+ms2600
+UrlSuffix(gcc/H8_002f300-Options.html#index-ms2600)
+
+mint32
+UrlSuffix(gcc/H8_002f300-Options.html#index-mint32)
+
+mrelax
+UrlSuffix(gcc/H8_002f300-Options.html#index-mrelax-1)
+
+mh
+UrlSuffix(gcc/H8_002f300-Options.html#index-mh)
+
+mn
+UrlSuffix(gcc/H8_002f300-Options.html#index-mn)
+
+malign-300
+UrlSuffix(gcc/H8_002f300-Options.html#index-malign-300)
+
+mexr
+UrlSuffix(gcc/H8_002f300-Options.html#index-mexr)
+
+mno-exr
+UrlSuffix(gcc/H8_002f300-Options.html#index-mno-exr)
+
diff --git a/gcc/config/hpux11.opt.urls b/gcc/config/hpux11.opt.urls
new file mode 100644
index 000000000000..f3847d8ec224
--- /dev/null
+++ b/gcc/config/hpux11.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/hpux11.opt and generated HTML
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/i386/cygming.opt.urls b/gcc/config/i386/cygming.opt.urls
new file mode 100644
index 000000000000..3bf6f4ae1acc
--- /dev/null
+++ b/gcc/config/i386/cygming.opt.urls
@@ -0,0 +1,30 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygming.opt and generated HTML
+
+mconsole
+UrlSuffix(gcc/x86-Windows-Options.html#index-mconsole)
+
+mdll
+UrlSuffix(gcc/x86-Windows-Options.html#index-mdll)
+
+mnop-fun-dllimport
+UrlSuffix(gcc/x86-Windows-Options.html#index-mnop-fun-dllimport)
+
+; skipping 'mthreads' due to multiple URLs:
+;   duplicate: 'gcc/x86-Options.html#index-mthreads'
+;   duplicate: 'gcc/x86-Windows-Options.html#index-mthreads-1'
+
+mwin32
+UrlSuffix(gcc/x86-Windows-Options.html#index-mwin32)
+
+mwindows
+UrlSuffix(gcc/x86-Windows-Options.html#index-mwindows)
+
+mpe-aligned-commons
+UrlSuffix(gcc/x86-Windows-Options.html#index-mpe-aligned-commons)
+
+fset-stack-executable
+UrlSuffix(gcc/x86-Windows-Options.html#index-fno-set-stack-executable)
+
+fwritable-relocated-rdata
+UrlSuffix(gcc/x86-Windows-Options.html#index-fno-writable-relocated-rdata)
+
diff --git a/gcc/config/i386/cygwin.opt.urls b/gcc/config/i386/cygwin.opt.urls
new file mode 100644
index 000000000000..cbadd6c9dba3
--- /dev/null
+++ b/gcc/config/i386/cygwin.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygwin.opt and generated HTML
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/i386/djgpp.opt.urls b/gcc/config/i386/djgpp.opt.urls
new file mode 100644
index 000000000000..8a723ab0a6dc
--- /dev/null
+++ b/gcc/config/i386/djgpp.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/djgpp.opt and generated HTML
+
diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls
new file mode 100644
index 000000000000..278a58d4cd6e
--- /dev/null
+++ b/gcc/config/i386/i386.opt.urls
@@ -0,0 +1,602 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/i386.opt and generated HTML
+
+m128bit-long-double
+UrlSuffix(gcc/x86-Options.html#index-m128bit-long-double)
+
+m80387
+UrlSuffix(gcc/x86-Options.html#index-m80387)
+
+m96bit-long-double
+UrlSuffix(gcc/x86-Options.html#index-m96bit-long-double)
+
+mlong-double-80
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-80)
+
+mlong-double-64
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-64-1)
+
+mlong-double-128
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-128-1)
+
+maccumulate-outgoing-args
+UrlSuffix(gcc/x86-Options.html#index-maccumulate-outgoing-args-1)
+
+malign-double
+UrlSuffix(gcc/x86-Options.html#index-malign-double)
+
+; skipping 'malign-loops=' due to finding no URLs
+
+malign-stringops
+UrlSuffix(gcc/x86-Options.html#index-malign-stringops)
+
+malign-data=
+UrlSuffix(gcc/x86-Options.html#index-malign-data-1)
+
+march=
+UrlSuffix(gcc/x86-Options.html#index-march-16)
+
+; skipping 'mbranch-cost=' due to finding no URLs
+
+mlarge-data-threshold=
+UrlSuffix(gcc/x86-Options.html#index-mlarge-data-threshold)
+
+; skipping 'mcmodel=' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/x86-Options.html#index-mcpu-14)
+
+mfancy-math-387
+UrlSuffix(gcc/x86-Options.html#index-mfancy-math-387)
+
+mfp-ret-in-387
+UrlSuffix(gcc/x86-Options.html#index-mfp-ret-in-387)
+
+; skipping 'mfpmath=' due to multiple URLs:
+;   duplicate: 'gcc/Optimize-Options.html#index-mfpmath'
+;   duplicate: 'gcc/x86-Options.html#index-mfpmath-1'
+
+mhard-float
+UrlSuffix(gcc/x86-Options.html#index-mhard-float-11)
+
+mieee-fp
+UrlSuffix(gcc/x86-Options.html#index-mieee-fp)
+
+minline-all-stringops
+UrlSuffix(gcc/x86-Options.html#index-minline-all-stringops)
+
+minline-stringops-dynamically
+UrlSuffix(gcc/x86-Options.html#index-minline-stringops-dynamically)
+
+mms-bitfields
+UrlSuffix(gcc/x86-Options.html#index-mms-bitfields)
+
+mno-align-stringops
+UrlSuffix(gcc/x86-Options.html#index-mno-align-stringops)
+
+mno-fancy-math-387
+UrlSuffix(gcc/x86-Options.html#index-mno-fancy-math-387)
+
+mno-push-args
+UrlSuffix(gcc/x86-Options.html#index-mno-push-args)
+
+mno-red-zone
+UrlSuffix(gcc/x86-Options.html#index-mno-red-zone)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/x86-Options.html#index-momit-leaf-frame-pointer-2)
+
+mrelax-cmpxchg-loop
+UrlSuffix(gcc/x86-Options.html#index-mrelax-cmpxchg-loop)
+
+mpc32
+UrlSuffix(gcc/x86-Options.html#index-mpc32)
+
+mpc64
+UrlSuffix(gcc/x86-Options.html#index-mpc64)
+
+mpc80
+UrlSuffix(gcc/x86-Options.html#index-mpc80)
+
+mdaz-ftz
+UrlSuffix(gcc/x86-Options.html#index-mdaz-ftz)
+
+mpreferred-stack-boundary=
+UrlSuffix(gcc/x86-Options.html#index-mpreferred-stack-boundary-1)
+
+mincoming-stack-boundary=
+UrlSuffix(gcc/x86-Options.html#index-mincoming-stack-boundary)
+
+mpush-args
+UrlSuffix(gcc/x86-Options.html#index-mpush-args)
+
+mred-zone
+UrlSuffix(gcc/x86-Options.html#index-mred-zone)
+
+mregparm=
+UrlSuffix(gcc/x86-Options.html#index-mregparm)
+
+mrtd
+UrlSuffix(gcc/x86-Options.html#index-mrtd-1)
+
+msoft-float
+UrlSuffix(gcc/x86-Options.html#index-msoft-float-16)
+
+msseregparm
+UrlSuffix(gcc/x86-Options.html#index-msseregparm)
+
+mstackrealign
+UrlSuffix(gcc/x86-Options.html#index-mstackrealign)
+
+mtls-dialect=
+UrlSuffix(gcc/x86-Options.html#index-mtls-dialect-1)
+
+mtls-direct-seg-refs
+UrlSuffix(gcc/x86-Options.html#index-mtls-direct-seg-refs)
+
+mtune=
+UrlSuffix(gcc/x86-Options.html#index-mtune-17)
+
+mno-default
+UrlSuffix(gcc/x86-Options.html#index-mno-default)
+
+mdump-tune-features
+UrlSuffix(gcc/x86-Options.html#index-mdump-tune-features)
+
+miamcu
+UrlSuffix(gcc/x86-Options.html#index-miamcu)
+
+mabi=
+UrlSuffix(gcc/x86-Options.html#index-mabi-6)
+
+mcall-ms2sysv-xlogues
+UrlSuffix(gcc/x86-Options.html#index-mcall-ms2sysv-xlogues)
+
+mveclibabi=
+UrlSuffix(gcc/x86-Options.html#index-mveclibabi-1)
+
+mvect8-ret-in-mem
+UrlSuffix(gcc/x86-Options.html#index-mvect8-ret-in-mem)
+
+mrecip
+UrlSuffix(gcc/x86-Options.html#index-mrecip-1)
+
+mrecip=
+UrlSuffix(gcc/x86-Options.html#index-mrecip-1)
+
+mcld
+UrlSuffix(gcc/x86-Options.html#index-mcld)
+
+mvzeroupper
+UrlSuffix(gcc/x86-Options.html#index-mvzeroupper)
+
+mprefer-avx128
+UrlSuffix(gcc/x86-Options.html#index-mprefer-avx128)
+
+mprefer-vector-width=
+UrlSuffix(gcc/x86-Options.html#index-mprefer-vector-width)
+
+mpartial-vector-fp-math
+UrlSuffix(gcc/x86-Options.html#index-mpartial-vector-fp-math)
+
+mmove-max=
+UrlSuffix(gcc/x86-Options.html#index-mmove-max)
+
+mstore-max=
+UrlSuffix(gcc/x86-Options.html#index-mstore-max)
+
+m32
+UrlSuffix(gcc/x86-Options.html#index-m32-2)
+
+m64
+UrlSuffix(gcc/x86-Options.html#index-m64-4)
+
+mx32
+UrlSuffix(gcc/x86-Options.html#index-mx32)
+
+m16
+UrlSuffix(gcc/x86-Options.html#index-m16)
+
+mmmx
+UrlSuffix(gcc/x86-Options.html#index-mmmx)
+
+m3dnow
+UrlSuffix(gcc/x86-Options.html#index-m3dnow)
+
+m3dnowa
+UrlSuffix(gcc/x86-Options.html#index-m3dnowa)
+
+msse
+UrlSuffix(gcc/x86-Options.html#index-msse)
+
+msse2
+UrlSuffix(gcc/x86-Options.html#index-msse2)
+
+msse3
+UrlSuffix(gcc/x86-Options.html#index-msse3)
+
+mssse3
+UrlSuffix(gcc/x86-Options.html#index-mssse3)
+
+msse4.1
+UrlSuffix(gcc/x86-Options.html#index-msse4_002e1)
+
+msse4.2
+UrlSuffix(gcc/x86-Options.html#index-msse4_002e2)
+
+msse4
+UrlSuffix(gcc/x86-Options.html#index-msse4)
+
+mavx
+UrlSuffix(gcc/x86-Options.html#index-mavx)
+
+mavx2
+UrlSuffix(gcc/x86-Options.html#index-mavx2)
+
+mavx512f
+UrlSuffix(gcc/x86-Options.html#index-mavx512f)
+
+mavx512pf
+UrlSuffix(gcc/x86-Options.html#index-mavx512pf)
+
+mavx512er
+UrlSuffix(gcc/x86-Options.html#index-mavx512er)
+
+mavx512cd
+UrlSuffix(gcc/x86-Options.html#index-mavx512cd)
+
+mavx512dq
+UrlSuffix(gcc/x86-Options.html#index-mavx512dq)
+
+mavx512bw
+UrlSuffix(gcc/x86-Options.html#index-mavx512bw)
+
+mavx512vl
+UrlSuffix(gcc/x86-Options.html#index-mavx512vl)
+
+mavx512ifma
+UrlSuffix(gcc/x86-Options.html#index-mavx512ifma)
+
+mavx512vbmi
+UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi)
+
+mavx5124fmaps
+UrlSuffix(gcc/x86-Options.html#index-mavx5124fmaps)
+
+mavx5124vnniw
+UrlSuffix(gcc/x86-Options.html#index-mavx5124vnniw)
+
+mavx512vpopcntdq
+UrlSuffix(gcc/x86-Options.html#index-mavx512vpopcntdq)
+
+mavx512vbmi2
+UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi2)
+
+mavx512vnni
+UrlSuffix(gcc/x86-Options.html#index-mavx512vnni)
+
+mavx512bitalg
+UrlSuffix(gcc/x86-Options.html#index-mavx512bitalg)
+
+mavx512vp2intersect
+UrlSuffix(gcc/x86-Options.html#index-mavx512vp2intersect)
+
+mfma
+UrlSuffix(gcc/x86-Options.html#index-mfma)
+
+msse4a
+UrlSuffix(gcc/x86-Options.html#index-msse4a)
+
+mfma4
+UrlSuffix(gcc/x86-Options.html#index-mfma4)
+
+mxop
+UrlSuffix(gcc/x86-Options.html#index-mxop)
+
+mlwp
+UrlSuffix(gcc/x86-Options.html#index-mlwp)
+
+mabm
+UrlSuffix(gcc/x86-Options.html#index-mabm)
+
+mpopcnt
+UrlSuffix(gcc/x86-Options.html#index-mpopcnt)
+
+mpconfig
+UrlSuffix(gcc/x86-Options.html#index-mpconfig)
+
+mwbnoinvd
+UrlSuffix(gcc/x86-Options.html#index-mwbnoinvd)
+
+mptwrite
+UrlSuffix(gcc/x86-Options.html#index-mptwrite)
+
+muintr
+UrlSuffix(gcc/x86-Options.html#index-muintr)
+
+msgx
+UrlSuffix(gcc/x86-Options.html#index-msgx)
+
+mrdpid
+UrlSuffix(gcc/x86-Options.html#index-mrdpid)
+
+mgfni
+UrlSuffix(gcc/x86-Options.html#index-mgfni)
+
+mvaes
+UrlSuffix(gcc/x86-Options.html#index-mvaes)
+
+mvpclmulqdq
+UrlSuffix(gcc/x86-Options.html#index-mvpclmulqdq)
+
+mbmi
+UrlSuffix(gcc/x86-Options.html#index-mbmi)
+
+mbmi2
+UrlSuffix(gcc/x86-Options.html#index-mbmi2)
+
+mlzcnt
+UrlSuffix(gcc/x86-Options.html#index-mlzcnt)
+
+mhle
+UrlSuffix(gcc/x86-Options.html#index-mhle)
+
+mrdseed
+UrlSuffix(gcc/x86-Options.html#index-mrdseed)
+
+mprfchw
+UrlSuffix(gcc/x86-Options.html#index-mprfchw)
+
+madx
+UrlSuffix(gcc/x86-Options.html#index-madx)
+
+mclflushopt
+UrlSuffix(gcc/x86-Options.html#index-mclflushopt)
+
+mclwb
+UrlSuffix(gcc/x86-Options.html#index-mclwb)
+
+mfxsr
+UrlSuffix(gcc/x86-Options.html#index-mfxsr)
+
+mxsave
+UrlSuffix(gcc/x86-Options.html#index-mxsave)
+
+mxsaveopt
+UrlSuffix(gcc/x86-Options.html#index-mxsaveopt)
+
+mxsavec
+UrlSuffix(gcc/x86-Options.html#index-mxsavec)
+
+mxsaves
+UrlSuffix(gcc/x86-Options.html#index-mxsaves)
+
+mtbm
+UrlSuffix(gcc/x86-Options.html#index-mtbm)
+
+mcx16
+UrlSuffix(gcc/x86-Options.html#index-mcx16)
+
+msahf
+UrlSuffix(gcc/x86-Options.html#index-msahf)
+
+mmovbe
+UrlSuffix(gcc/x86-Options.html#index-mmovbe)
+
+mcrc32
+UrlSuffix(gcc/x86-Options.html#index-mcrc32)
+
+maes
+UrlSuffix(gcc/x86-Options.html#index-maes)
+
+msha
+UrlSuffix(gcc/x86-Options.html#index-msha)
+
+mpclmul
+UrlSuffix(gcc/x86-Options.html#index-mpclmul)
+
+msse2avx
+UrlSuffix(gcc/x86-Options.html#index-msse2avx)
+
+mfsgsbase
+UrlSuffix(gcc/x86-Options.html#index-mfsgsbase)
+
+mrdrnd
+UrlSuffix(gcc/x86-Options.html#index-mrdrnd)
+
+mf16c
+UrlSuffix(gcc/x86-Options.html#index-mf16c)
+
+mprefetchwt1
+UrlSuffix(gcc/x86-Options.html#index-mprefetchwt1)
+
+mfentry
+UrlSuffix(gcc/x86-Options.html#index-mfentry)
+
+mrecord-mcount
+UrlSuffix(gcc/x86-Options.html#index-mrecord-mcount)
+
+mnop-mcount
+UrlSuffix(gcc/x86-Options.html#index-mnop-mcount)
+
+mfentry-name=
+UrlSuffix(gcc/x86-Options.html#index-mfentry-name)
+
+mfentry-section=
+UrlSuffix(gcc/x86-Options.html#index-mfentry-section)
+
+mskip-rax-setup
+UrlSuffix(gcc/x86-Options.html#index-mskip-rax-setup)
+
+m8bit-idiv
+UrlSuffix(gcc/x86-Options.html#index-m8bit-idiv)
+
+mavx256-split-unaligned-load
+UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-load)
+
+mavx256-split-unaligned-store
+UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-store)
+
+mrtm
+UrlSuffix(gcc/x86-Options.html#index-mrtm)
+
+mmwaitx
+UrlSuffix(gcc/x86-Options.html#index-mmwaitx)
+
+mclzero
+UrlSuffix(gcc/x86-Options.html#index-mclzero)
+
+mpku
+UrlSuffix(gcc/x86-Options.html#index-mpku)
+
+mstack-protector-guard=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-4)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-reg-3)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-offset-4)
+
+; skipping 'mstack-protector-guard-symbol=' due to finding no URLs
+
+mgeneral-regs-only
+UrlSuffix(gcc/x86-Options.html#index-mgeneral-regs-only-2)
+
+mshstk
+UrlSuffix(gcc/x86-Options.html#index-mshstk)
+
+mcet-switch
+UrlSuffix(gcc/x86-Options.html#index-mcet-switch)
+
+mmanual-endbr
+UrlSuffix(gcc/x86-Options.html#index-mmanual-endbr)
+
+mforce-indirect-call
+UrlSuffix(gcc/x86-Options.html#index-mforce-indirect-call)
+
+mindirect-branch=
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch)
+
+mfunction-return=
+UrlSuffix(gcc/x86-Options.html#index-mfunction-return)
+
+mindirect-branch-cs-prefix
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-cs-prefix)
+
+mindirect-branch-register
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-register)
+
+mmovdiri
+UrlSuffix(gcc/x86-Options.html#index-mmovdiri)
+
+mmovdir64b
+UrlSuffix(gcc/x86-Options.html#index-mmovdir64b)
+
+mwaitpkg
+UrlSuffix(gcc/x86-Options.html#index-mwaitpkg)
+
+mcldemote
+UrlSuffix(gcc/x86-Options.html#index-mcldemote)
+
+minstrument-return=
+UrlSuffix(gcc/x86-Options.html#index-minstrument-return)
+
+mrecord-return
+UrlSuffix(gcc/x86-Options.html#index-mrecord-return)
+
+mharden-sls=
+UrlSuffix(gcc/x86-Options.html#index-mharden-sls-1)
+
+mavx512bf16
+UrlSuffix(gcc/x86-Options.html#index-mavx512bf16)
+
+menqcmd
+UrlSuffix(gcc/x86-Options.html#index-menqcmd)
+
+mserialize
+UrlSuffix(gcc/x86-Options.html#index-mserialize)
+
+mtsxldtrk
+UrlSuffix(gcc/x86-Options.html#index-mtsxldtrk)
+
+mamx-tile
+UrlSuffix(gcc/x86-Options.html#index-mamx-tile)
+
+mamx-int8
+UrlSuffix(gcc/x86-Options.html#index-mamx-int8)
+
+mamx-bf16
+UrlSuffix(gcc/x86-Options.html#index-mamx-bf16)
+
+mhreset
+UrlSuffix(gcc/x86-Options.html#index-mhreset)
+
+mkl
+UrlSuffix(gcc/x86-Options.html#index-mkl)
+
+mwidekl
+UrlSuffix(gcc/x86-Options.html#index-mwidekl)
+
+mavxvnni
+UrlSuffix(gcc/x86-Options.html#index-mavxvnni)
+
+mneeded
+UrlSuffix(gcc/x86-Options.html#index-mneeded)
+
+mmwait
+UrlSuffix(gcc/x86-Options.html#index-mmwait)
+
+mavx512fp16
+UrlSuffix(gcc/x86-Options.html#index-mavx512fp16)
+
+mdirect-extern-access
+UrlSuffix(gcc/x86-Options.html#index-mdirect-extern-access-1)
+
+mavxifma
+UrlSuffix(gcc/x86-Options.html#index-mavxifma)
+
+mavxvnniint8
+UrlSuffix(gcc/x86-Options.html#index-mavxvnniint8)
+
+mavxneconvert
+UrlSuffix(gcc/x86-Options.html#index-mavxneconvert)
+
+mcmpccxadd
+UrlSuffix(gcc/x86-Options.html#index-mcmpccxadd)
+
+mamx-fp16
+UrlSuffix(gcc/x86-Options.html#index-mamx-fp16)
+
+mprefetchi
+UrlSuffix(gcc/x86-Options.html#index-mprefetchi)
+
+mraoint
+UrlSuffix(gcc/x86-Options.html#index-mraoint)
+
+munroll-only-small-loops
+UrlSuffix(gcc/x86-Options.html#index-munroll-only-small-loops)
+
+mlam=
+UrlSuffix(gcc/x86-Options.html#index-mlam)
+
+mamx-complex
+UrlSuffix(gcc/x86-Options.html#index-mamx-complex)
+
+mavxvnniint16
+UrlSuffix(gcc/x86-Options.html#index-mavxvnniint16)
+
+msm3
+UrlSuffix(gcc/x86-Options.html#index-msm3)
+
+msha512
+UrlSuffix(gcc/x86-Options.html#index-msha512)
+
+msm4
+UrlSuffix(gcc/x86-Options.html#index-msm4)
+
+mapxf
+UrlSuffix(gcc/x86-Options.html#index-mapxf)
+
+musermsr
+UrlSuffix(gcc/x86-Options.html#index-musermsr)
+
diff --git a/gcc/config/i386/mingw-w64.opt.urls b/gcc/config/i386/mingw-w64.opt.urls
new file mode 100644
index 000000000000..6bb53ef29b2b
--- /dev/null
+++ b/gcc/config/i386/mingw-w64.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw-w64.opt and generated HTML
+
+municode
+UrlSuffix(gcc/x86-Windows-Options.html#index-municode)
+
diff --git a/gcc/config/i386/mingw.opt.urls b/gcc/config/i386/mingw.opt.urls
new file mode 100644
index 000000000000..ce87e5ae848d
--- /dev/null
+++ b/gcc/config/i386/mingw.opt.urls
@@ -0,0 +1,12 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw.opt and generated HTML
+
+mcrtdll=
+UrlSuffix(gcc/x86-Windows-Options.html#index-mcrtdll)
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+Wpedantic-ms-format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic-ms-format)
+
diff --git a/gcc/config/i386/nto.opt.urls b/gcc/config/i386/nto.opt.urls
new file mode 100644
index 000000000000..37c07a5b88be
--- /dev/null
+++ b/gcc/config/i386/nto.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/nto.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
diff --git a/gcc/config/ia64/ia64.opt.urls b/gcc/config/ia64/ia64.opt.urls
new file mode 100644
index 000000000000..1e1d0631550a
--- /dev/null
+++ b/gcc/config/ia64/ia64.opt.urls
@@ -0,0 +1,122 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ia64.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/IA-64-Options.html#index-mbig-endian-6)
+
+mlittle-endian
+UrlSuffix(gcc/IA-64-Options.html#index-mlittle-endian-6)
+
+mgnu-as
+UrlSuffix(gcc/IA-64-Options.html#index-mgnu-as)
+
+mgnu-ld
+UrlSuffix(gcc/IA-64-Options.html#index-mgnu-ld-1)
+
+mvolatile-asm-stop
+UrlSuffix(gcc/IA-64-Options.html#index-mvolatile-asm-stop)
+
+mregister-names
+UrlSuffix(gcc/IA-64-Options.html#index-mregister-names)
+
+mno-sdata
+UrlSuffix(gcc/IA-64-Options.html#index-mno-sdata-1)
+
+msdata
+UrlSuffix(gcc/IA-64-Options.html#index-msdata-1)
+
+mno-pic
+UrlSuffix(gcc/IA-64-Options.html#index-mno-pic)
+
+mconstant-gp
+UrlSuffix(gcc/IA-64-Options.html#index-mconstant-gp)
+
+mauto-pic
+UrlSuffix(gcc/IA-64-Options.html#index-mauto-pic)
+
+minline-float-divide-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-min-latency)
+
+minline-float-divide-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-max-throughput)
+
+mno-inline-float-divide
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-float-divide)
+
+minline-int-divide-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-min-latency)
+
+minline-int-divide-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-max-throughput)
+
+mno-inline-int-divide
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-int-divide)
+
+minline-sqrt-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-min-latency)
+
+minline-sqrt-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-max-throughput)
+
+mno-inline-sqrt
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-sqrt)
+
+mdwarf2-asm
+UrlSuffix(gcc/IA-64-Options.html#index-mdwarf2-asm)
+
+mearly-stop-bits
+UrlSuffix(gcc/IA-64-Options.html#index-mearly-stop-bits)
+
+mfixed-range=
+UrlSuffix(gcc/IA-64-Options.html#index-mfixed-range-1)
+
+mtls-size=
+UrlSuffix(gcc/IA-64-Options.html#index-mtls-size-1)
+
+mtune=
+UrlSuffix(gcc/IA-64-Options.html#index-mtune-7)
+
+msched-br-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-br-data-spec)
+
+msched-ar-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-data-spec)
+
+msched-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-control-spec)
+
+msched-br-in-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-br-in-data-spec)
+
+msched-ar-in-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-in-data-spec)
+
+msched-in-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-in-control-spec)
+
+msched-spec-ldc
+UrlSuffix(gcc/IA-64-Options.html#index-msched-spec-ldc)
+
+msched-prefer-non-data-spec-insns
+UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-data-spec-insns)
+
+msched-prefer-non-control-spec-insns
+UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-control-spec-insns)
+
+msched-count-spec-in-critical-path
+UrlSuffix(gcc/IA-64-Options.html#index-msched-count-spec-in-critical-path)
+
+msched-stop-bits-after-every-cycle
+UrlSuffix(gcc/IA-64-Options.html#index-msched-stop-bits-after-every-cycle)
+
+msched-fp-mem-deps-zero-cost
+UrlSuffix(gcc/IA-64-Options.html#index-msched-fp-mem-deps-zero-cost)
+
+msched-max-memory-insns=
+UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns)
+
+msched-max-memory-insns-hard-limit
+UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns-hard-limit)
+
+msel-sched-dont-check-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msel-sched-dont-check-control-spec)
+
diff --git a/gcc/config/ia64/ilp32.opt.urls b/gcc/config/ia64/ilp32.opt.urls
new file mode 100644
index 000000000000..07bd47d6d13f
--- /dev/null
+++ b/gcc/config/ia64/ilp32.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ilp32.opt and generated HTML
+
+milp32
+UrlSuffix(gcc/IA-64-Options.html#index-milp32)
+
+mlp64
+UrlSuffix(gcc/IA-64-Options.html#index-mlp64)
+
diff --git a/gcc/config/ia64/vms.opt.urls b/gcc/config/ia64/vms.opt.urls
new file mode 100644
index 000000000000..e7797d9325e7
--- /dev/null
+++ b/gcc/config/ia64/vms.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/vms.opt and generated HTML
+
diff --git a/gcc/config/iq2000/iq2000.opt.urls b/gcc/config/iq2000/iq2000.opt.urls
new file mode 100644
index 000000000000..54e1aea5857f
--- /dev/null
+++ b/gcc/config/iq2000/iq2000.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/iq2000/iq2000.opt and generated HTML
+
+; skipping 'march=' due to finding no URLs
+
+; skipping 'mcpu=' due to finding no URLs
+
+; skipping 'membedded-data' due to finding no URLs
+
+; skipping 'mgpopt' due to finding no URLs
+
+; skipping 'mno-crt0' due to finding no URLs
+
+; skipping 'muninit-const-in-rodata' due to finding no URLs
+
diff --git a/gcc/config/linux-android.opt.urls b/gcc/config/linux-android.opt.urls
new file mode 100644
index 000000000000..48d38e925aa1
--- /dev/null
+++ b/gcc/config/linux-android.opt.urls
@@ -0,0 +1,11 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/linux-android.opt and generated HTML
+
+mandroid
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mandroid)
+
+tno-android-cc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-cc)
+
+tno-android-ld
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-ld)
+
diff --git a/gcc/config/linux.opt.urls b/gcc/config/linux.opt.urls
new file mode 100644
index 000000000000..792a73fb0a69
--- /dev/null
+++ b/gcc/config/linux.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/linux.opt and generated HTML
+
+mbionic
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mbionic)
+
+mglibc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mglibc)
+
+muclibc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-muclibc)
+
+mmusl
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mmusl)
+
diff --git a/gcc/config/lm32/lm32.opt.urls b/gcc/config/lm32/lm32.opt.urls
new file mode 100644
index 000000000000..89c8c47d3f44
--- /dev/null
+++ b/gcc/config/lm32/lm32.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/lm32/lm32.opt and generated HTML
+
+mdivide-enabled
+UrlSuffix(gcc/LM32-Options.html#index-mdivide-enabled)
+
+mbarrel-shift-enabled
+UrlSuffix(gcc/LM32-Options.html#index-mbarrel-shift-enabled)
+
+msign-extend-enabled
+UrlSuffix(gcc/LM32-Options.html#index-msign-extend-enabled)
+
+muser-enabled
+UrlSuffix(gcc/LM32-Options.html#index-muser-enabled)
+
diff --git a/gcc/config/loongarch/loongarch.opt.urls b/gcc/config/loongarch/loongarch.opt.urls
new file mode 100644
index 000000000000..8e5c47a6fa87
--- /dev/null
+++ b/gcc/config/loongarch/loongarch.opt.urls
@@ -0,0 +1,60 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/loongarch/loongarch.opt and generated HTML
+
+mfpu=
+UrlSuffix(gcc/LoongArch-Options.html#index-mfpu-2)
+
+msoft-float
+UrlSuffix(gcc/LoongArch-Options.html#index-msoft-float-5)
+
+msingle-float
+UrlSuffix(gcc/LoongArch-Options.html#index-msingle-float)
+
+mdouble-float
+UrlSuffix(gcc/LoongArch-Options.html#index-mdouble-float-1)
+
+msimd=
+UrlSuffix(gcc/LoongArch-Options.html#index-msimd-1)
+
+march=
+UrlSuffix(gcc/LoongArch-Options.html#index-march-7)
+
+mtune=
+UrlSuffix(gcc/LoongArch-Options.html#index-mtune-8)
+
+mabi=
+UrlSuffix(gcc/LoongArch-Options.html#index-mabi-2)
+
+mbranch-cost=
+UrlSuffix(gcc/LoongArch-Options.html#index-mbranch-cost-2)
+
+mcheck-zero-division
+UrlSuffix(gcc/LoongArch-Options.html#index-mcheck-zero-division)
+
+mcond-move-int
+UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-int)
+
+mcond-move-float
+UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-float)
+
+mmemcpy
+UrlSuffix(gcc/LoongArch-Options.html#index-mmemcpy)
+
+mstrict-align
+UrlSuffix(gcc/LoongArch-Options.html#index-mstrict-align-1)
+
+mmax-inline-memcpy-size=
+UrlSuffix(gcc/LoongArch-Options.html#index-mmax-inline-memcpy-size)
+
+mexplicit-relocs=
+UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
+
+mexplicit-relocs
+UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
+
+; skipping 'mcmodel=' due to finding no URLs
+
+mdirect-extern-access
+UrlSuffix(gcc/LoongArch-Options.html#index-mdirect-extern-access)
+
+; skipping 'mrelax' due to finding no URLs
+
diff --git a/gcc/config/lynx.opt.urls b/gcc/config/lynx.opt.urls
new file mode 100644
index 000000000000..63e7b9c4b33f
--- /dev/null
+++ b/gcc/config/lynx.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/lynx.opt and generated HTML
+
+mthreads
+UrlSuffix(gcc/x86-Windows-Options.html#index-mthreads-1)
+
diff --git a/gcc/config/m32c/m32c.opt.urls b/gcc/config/m32c/m32c.opt.urls
new file mode 100644
index 000000000000..da1bc024f74a
--- /dev/null
+++ b/gcc/config/m32c/m32c.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m32c/m32c.opt and generated HTML
+
+msim
+UrlSuffix(gcc/M32C-Options.html#index-msim-4)
+
+memregs=
+UrlSuffix(gcc/M32C-Options.html#index-memregs_003d)
+
diff --git a/gcc/config/m32r/m32r.opt.urls b/gcc/config/m32r/m32r.opt.urls
new file mode 100644
index 000000000000..3f5a8183554b
--- /dev/null
+++ b/gcc/config/m32r/m32r.opt.urls
@@ -0,0 +1,27 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m32r/m32r.opt and generated HTML
+
+m32rx
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32rx)
+
+m32r2
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r2)
+
+m32r
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r)
+
+malign-loops
+UrlSuffix(gcc/M32R_002fD-Options.html#index-malign-loops)
+
+mdebug
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mdebug)
+
+; skipping 'mflush-func=' due to finding no URLs
+
+mno-flush-func
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-func)
+
+mno-flush-trap
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-trap)
+
+; skipping 'msdata=' due to finding no URLs
+
diff --git a/gcc/config/m68k/ieee.opt.urls b/gcc/config/m68k/ieee.opt.urls
new file mode 100644
index 000000000000..771998b7d217
--- /dev/null
+++ b/gcc/config/m68k/ieee.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/ieee.opt and generated HTML
+
+; skipping 'mieee-fp' due to finding no URLs
+
diff --git a/gcc/config/m68k/m68k-tables.opt.urls b/gcc/config/m68k/m68k-tables.opt.urls
new file mode 100644
index 000000000000..380dc4370846
--- /dev/null
+++ b/gcc/config/m68k/m68k-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k-tables.opt and generated HTML
+
diff --git a/gcc/config/m68k/m68k.opt.urls b/gcc/config/m68k/m68k.opt.urls
new file mode 100644
index 000000000000..6301aa99f669
--- /dev/null
+++ b/gcc/config/m68k/m68k.opt.urls
@@ -0,0 +1,107 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k.opt and generated HTML
+
+m5200
+UrlSuffix(gcc/M680x0-Options.html#index-m5200)
+
+m5206e
+UrlSuffix(gcc/M680x0-Options.html#index-m5206e)
+
+m528x
+UrlSuffix(gcc/M680x0-Options.html#index-m528x)
+
+m5307
+UrlSuffix(gcc/M680x0-Options.html#index-m5307)
+
+m5407
+UrlSuffix(gcc/M680x0-Options.html#index-m5407)
+
+m68000
+UrlSuffix(gcc/M680x0-Options.html#index-m68000)
+
+m68010
+UrlSuffix(gcc/M680x0-Options.html#index-m68010)
+
+m68020
+UrlSuffix(gcc/M680x0-Options.html#index-m68020)
+
+m68020-40
+UrlSuffix(gcc/M680x0-Options.html#index-m68020-40)
+
+m68020-60
+UrlSuffix(gcc/M680x0-Options.html#index-m68020-60)
+
+m68030
+UrlSuffix(gcc/M680x0-Options.html#index-m68030)
+
+m68040
+UrlSuffix(gcc/M680x0-Options.html#index-m68040)
+
+m68060
+UrlSuffix(gcc/M680x0-Options.html#index-m68060)
+
+m68881
+UrlSuffix(gcc/M680x0-Options.html#index-m68881)
+
+malign-int
+UrlSuffix(gcc/M680x0-Options.html#index-malign-int)
+
+march=
+UrlSuffix(gcc/M680x0-Options.html#index-march-8)
+
+mbitfield
+UrlSuffix(gcc/M680x0-Options.html#index-mbitfield)
+
+mc68000
+UrlSuffix(gcc/M680x0-Options.html#index-mc68000)
+
+mc68020
+UrlSuffix(gcc/M680x0-Options.html#index-mc68020)
+
+mcfv4e
+UrlSuffix(gcc/M680x0-Options.html#index-mcfv4e)
+
+mcpu=
+UrlSuffix(gcc/M680x0-Options.html#index-mcpu-7)
+
+mcpu32
+UrlSuffix(gcc/M680x0-Options.html#index-mcpu32)
+
+mdiv
+UrlSuffix(gcc/M680x0-Options.html#index-mdiv-1)
+
+mhard-float
+UrlSuffix(gcc/M680x0-Options.html#index-mhard-float-2)
+
+; skipping 'mid-shared-library' due to finding no URLs
+
+mlong-jump-table-offsets
+UrlSuffix(gcc/M680x0-Options.html#index-mlong-jump-table-offsets)
+
+mnobitfield
+UrlSuffix(gcc/M680x0-Options.html#index-mnobitfield)
+
+mpcrel
+UrlSuffix(gcc/M680x0-Options.html#index-mpcrel)
+
+mrtd
+UrlSuffix(gcc/M680x0-Options.html#index-mrtd)
+
+; skipping 'msep-data' due to finding no URLs
+
+; skipping 'mshared-library-id=' due to finding no URLs
+
+mshort
+UrlSuffix(gcc/M680x0-Options.html#index-mshort)
+
+msoft-float
+UrlSuffix(gcc/M680x0-Options.html#index-msoft-float-6)
+
+mstrict-align
+UrlSuffix(gcc/M680x0-Options.html#index-mstrict-align-2)
+
+mtune=
+UrlSuffix(gcc/M680x0-Options.html#index-mtune-9)
+
+mxgot
+UrlSuffix(gcc/M680x0-Options.html#index-mxgot)
+
diff --git a/gcc/config/m68k/uclinux.opt.urls b/gcc/config/m68k/uclinux.opt.urls
new file mode 100644
index 000000000000..3fd1392f88a6
--- /dev/null
+++ b/gcc/config/m68k/uclinux.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/uclinux.opt and generated HTML
+
diff --git a/gcc/config/mcore/mcore.opt.urls b/gcc/config/mcore/mcore.opt.urls
new file mode 100644
index 000000000000..a876c8c13eff
--- /dev/null
+++ b/gcc/config/mcore/mcore.opt.urls
@@ -0,0 +1,38 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mcore/mcore.opt and generated HTML
+
+m210
+UrlSuffix(gcc/MCore-Options.html#index-m210)
+
+m340
+UrlSuffix(gcc/MCore-Options.html#index-m340)
+
+m4byte-functions
+UrlSuffix(gcc/MCore-Options.html#index-m4byte-functions)
+
+mbig-endian
+UrlSuffix(gcc/MCore-Options.html#index-mbig-endian-7)
+
+mcallgraph-data
+UrlSuffix(gcc/MCore-Options.html#index-mcallgraph-data)
+
+mdiv
+UrlSuffix(gcc/MCore-Options.html#index-mdiv-2)
+
+mhardlit
+UrlSuffix(gcc/MCore-Options.html#index-mhardlit)
+
+mlittle-endian
+UrlSuffix(gcc/MCore-Options.html#index-mlittle-endian-7)
+
+mno-lsim
+UrlSuffix(gcc/MCore-Options.html#index-mno-lsim-1)
+
+mslow-bytes
+UrlSuffix(gcc/MCore-Options.html#index-mslow-bytes)
+
+mstack-increment=
+UrlSuffix(gcc/MCore-Options.html#index-mstack-increment)
+
+mwide-bitfields
+UrlSuffix(gcc/MCore-Options.html#index-mwide-bitfields)
+
diff --git a/gcc/config/microblaze/microblaze.opt.urls b/gcc/config/microblaze/microblaze.opt.urls
new file mode 100644
index 000000000000..33b13b84e2c2
--- /dev/null
+++ b/gcc/config/microblaze/microblaze.opt.urls
@@ -0,0 +1,59 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/microblaze/microblaze.opt and generated HTML
+
+msoft-float
+UrlSuffix(gcc/MicroBlaze-Options.html#index-msoft-float-7)
+
+mhard-float
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mhard-float-3)
+
+msmall-divides
+UrlSuffix(gcc/MicroBlaze-Options.html#index-msmall-divides)
+
+mcpu=
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mcpu_003d-3)
+
+mmemcpy
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mmemcpy-1)
+
+mbig-endian
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mbig-endian-8)
+
+mlittle-endian
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mlittle-endian-8)
+
+mxl-soft-mul
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-mul)
+
+mxl-reorder
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-reorder)
+
+mxl-soft-div
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-div)
+
+mxl-barrel-shift
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-barrel-shift)
+
+mxl-pattern-compare
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-pattern-compare)
+
+mxl-stack-check
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-stack-check)
+
+mxl-gp-opt
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-gp-opt)
+
+mno-clearbss
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mno-clearbss)
+
+mxl-multiply-high
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-multiply-high)
+
+mxl-float-convert
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-convert)
+
+mxl-float-sqrt
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-sqrt)
+
+mpic-data-is-text-relative
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mpic-data-is-text-relative-1)
+
diff --git a/gcc/config/mips/mips-tables.opt.urls b/gcc/config/mips/mips-tables.opt.urls
new file mode 100644
index 000000000000..3b2a77f2ea9c
--- /dev/null
+++ b/gcc/config/mips/mips-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips-tables.opt and generated HTML
+
diff --git a/gcc/config/mips/mips.opt.urls b/gcc/config/mips/mips.opt.urls
new file mode 100644
index 000000000000..2e826a2be382
--- /dev/null
+++ b/gcc/config/mips/mips.opt.urls
@@ -0,0 +1,269 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips.opt and generated HTML
+
+EB
+UrlSuffix(gcc/MIPS-Options.html#index-EB-2)
+
+EL
+UrlSuffix(gcc/MIPS-Options.html#index-EL-2)
+
+; skipping 'mabi=' due to finding no URLs
+
+mabicalls
+UrlSuffix(gcc/MIPS-Options.html#index-mabicalls)
+
+mmad
+UrlSuffix(gcc/MIPS-Options.html#index-mmad)
+
+mimadd
+UrlSuffix(gcc/MIPS-Options.html#index-mimadd)
+
+march=
+UrlSuffix(gcc/MIPS-Options.html#index-march-9)
+
+mbranch-cost=
+UrlSuffix(gcc/MIPS-Options.html#index-mbranch-cost-3)
+
+mbranch-likely
+UrlSuffix(gcc/MIPS-Options.html#index-mbranch-likely)
+
+mflip-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mflip-mips16)
+
+mcheck-zero-division
+UrlSuffix(gcc/MIPS-Options.html#index-mcheck-zero-division-1)
+
+mcode-readable=
+UrlSuffix(gcc/MIPS-Options.html#index-mcode-readable)
+
+mdivide-breaks
+UrlSuffix(gcc/MIPS-Options.html#index-mdivide-breaks)
+
+mdivide-traps
+UrlSuffix(gcc/MIPS-Options.html#index-mdivide-traps)
+
+mdmx
+UrlSuffix(gcc/MIPS-Options.html#index-mdmx)
+
+mdouble-float
+UrlSuffix(gcc/MIPS-Options.html#index-mdouble-float-2)
+
+mdsp
+UrlSuffix(gcc/MIPS-Options.html#index-mdsp-1)
+
+mdspr2
+UrlSuffix(gcc/MIPS-Options.html#index-mdspr2)
+
+; skipping 'mdebug' due to finding no URLs
+
+; skipping 'meb' due to finding no URLs
+
+; skipping 'mel' due to finding no URLs
+
+membedded-data
+UrlSuffix(gcc/MIPS-Options.html#index-membedded-data)
+
+meva
+UrlSuffix(gcc/MIPS-Options.html#index-meva)
+
+mexplicit-relocs
+UrlSuffix(gcc/MIPS-Options.html#index-mexplicit-relocs-2)
+
+mextern-sdata
+UrlSuffix(gcc/MIPS-Options.html#index-mextern-sdata)
+
+mfix-24k
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-24k)
+
+mfix-r4000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4000)
+
+mfix-r4400
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4400)
+
+mfix-r5900
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r5900)
+
+mfix-rm7000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-rm7000)
+
+mfix-r10000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r10000)
+
+mfix-sb1
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-sb1)
+
+mfix-vr4120
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4120)
+
+mfix-vr4130
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4130)
+
+mfp-exceptions
+UrlSuffix(gcc/MIPS-Options.html#index-mfp-exceptions)
+
+mfp32
+UrlSuffix(gcc/MIPS-Options.html#index-mfp32)
+
+mfpxx
+UrlSuffix(gcc/MIPS-Options.html#index-mfpxx)
+
+mfp64
+UrlSuffix(gcc/MIPS-Options.html#index-mfp64)
+
+mflush-func=
+UrlSuffix(gcc/MIPS-Options.html#index-mflush-func)
+
+mgp32
+UrlSuffix(gcc/MIPS-Options.html#index-mgp32)
+
+mgp64
+UrlSuffix(gcc/MIPS-Options.html#index-mgp64)
+
+mgpopt
+UrlSuffix(gcc/MIPS-Options.html#index-mgpopt)
+
+mplt
+UrlSuffix(gcc/MIPS-Options.html#index-mplt)
+
+mhard-float
+UrlSuffix(gcc/MIPS-Options.html#index-mhard-float-4)
+
+minterlink-compressed
+UrlSuffix(gcc/MIPS-Options.html#index-minterlink-compressed)
+
+minterlink-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-minterlink-mips16)
+
+mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mips16)
+
+mips3d
+UrlSuffix(gcc/MIPS-Options.html#index-mips3d)
+
+mllsc
+UrlSuffix(gcc/MIPS-Options.html#index-mllsc)
+
+mlocal-sdata
+UrlSuffix(gcc/MIPS-Options.html#index-mlocal-sdata)
+
+mlong-calls
+UrlSuffix(gcc/MIPS-Options.html#index-mlong-calls-6)
+
+mlong32
+UrlSuffix(gcc/MIPS-Options.html#index-mlong32)
+
+mlong64
+UrlSuffix(gcc/MIPS-Options.html#index-mlong64)
+
+mmcount-ra-address
+UrlSuffix(gcc/MIPS-Options.html#index-mmcount-ra-address)
+
+mmemcpy
+UrlSuffix(gcc/MIPS-Options.html#index-mmemcpy-2)
+
+mmicromips
+UrlSuffix(gcc/MIPS-Options.html#index-mmicromips)
+
+mmt
+UrlSuffix(gcc/MIPS-Options.html#index-mmt)
+
+mno-float
+UrlSuffix(gcc/MIPS-Options.html#index-mno-float)
+
+mmcu
+UrlSuffix(gcc/MIPS-Options.html#index-mmcu-1)
+
+; skipping 'mno-flush-func' due to finding no URLs
+
+mno-mdmx
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mdmx)
+
+mno-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mips16)
+
+mno-mips3d
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mips3d)
+
+mpaired-single
+UrlSuffix(gcc/MIPS-Options.html#index-mpaired-single)
+
+mr10k-cache-barrier=
+UrlSuffix(gcc/MIPS-Options.html#index-mr10k-cache-barrier)
+
+mrelax-pic-calls
+UrlSuffix(gcc/MIPS-Options.html#index-mrelax-pic-calls)
+
+msingle-float
+UrlSuffix(gcc/MIPS-Options.html#index-msingle-float-1)
+
+msmartmips
+UrlSuffix(gcc/MIPS-Options.html#index-msmartmips)
+
+msoft-float
+UrlSuffix(gcc/MIPS-Options.html#index-msoft-float-8)
+
+msplit-addresses
+UrlSuffix(gcc/MIPS-Options.html#index-msplit-addresses)
+
+mmips16e2
+UrlSuffix(gcc/MIPS-Options.html#index-mmips16e2)
+
+msym32
+UrlSuffix(gcc/MIPS-Options.html#index-msym32)
+
+msynci
+UrlSuffix(gcc/MIPS-Options.html#index-msynci)
+
+; skipping 'mlra' due to finding no URLs
+
+mlxc1-sxc1
+UrlSuffix(gcc/MIPS-Options.html#index-mlxc1-sxc1)
+
+mmadd4
+UrlSuffix(gcc/MIPS-Options.html#index-mmadd4)
+
+mtune=
+UrlSuffix(gcc/MIPS-Options.html#index-mtune-10)
+
+munaligned-access
+UrlSuffix(gcc/MIPS-Options.html#index-munaligned-access-1)
+
+muninit-const-in-rodata
+UrlSuffix(gcc/MIPS-Options.html#index-muninit-const-in-rodata)
+
+mvirt
+UrlSuffix(gcc/MIPS-Options.html#index-mvirt)
+
+mxpa
+UrlSuffix(gcc/MIPS-Options.html#index-mxpa)
+
+mcrc
+UrlSuffix(gcc/MIPS-Options.html#index-mcrc)
+
+mginv
+UrlSuffix(gcc/MIPS-Options.html#index-mginv)
+
+mvr4130-align
+UrlSuffix(gcc/MIPS-Options.html#index-mvr4130-align)
+
+mxgot
+UrlSuffix(gcc/MIPS-Options.html#index-mxgot-1)
+
+modd-spreg
+UrlSuffix(gcc/MIPS-Options.html#index-modd-spreg)
+
+mframe-header-opt
+UrlSuffix(gcc/MIPS-Options.html#index-mframe-header-opt)
+
+mload-store-pairs
+UrlSuffix(gcc/MIPS-Options.html#index-mload-store-pairs)
+
+mloongson-mmi
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-mmi)
+
+mloongson-ext
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext)
+
+mloongson-ext2
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext2)
+
diff --git a/gcc/config/mips/sde.opt.urls b/gcc/config/mips/sde.opt.urls
new file mode 100644
index 000000000000..2a3d290545f0
--- /dev/null
+++ b/gcc/config/mips/sde.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/sde.opt and generated HTML
+
diff --git a/gcc/config/mmix/mmix.opt.urls b/gcc/config/mmix/mmix.opt.urls
new file mode 100644
index 000000000000..6722f9e4e01d
--- /dev/null
+++ b/gcc/config/mmix/mmix.opt.urls
@@ -0,0 +1,44 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mmix/mmix.opt and generated HTML
+
+mlibfuncs
+UrlSuffix(gcc/MMIX-Options.html#index-mlibfuncs)
+
+mabi=mmixware
+UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dmmixware)
+
+mabi=gnu
+UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dgnu)
+
+mepsilon
+UrlSuffix(gcc/MMIX-Options.html#index-mepsilon)
+
+mzero-extend
+UrlSuffix(gcc/MMIX-Options.html#index-mzero-extend)
+
+mknuthdiv
+UrlSuffix(gcc/MMIX-Options.html#index-mknuthdiv)
+
+mtoplevel-symbols
+UrlSuffix(gcc/MMIX-Options.html#index-mtoplevel-symbols)
+
+melf
+UrlSuffix(gcc/MMIX-Options.html#index-melf-1)
+
+mbranch-predict
+UrlSuffix(gcc/MMIX-Options.html#index-mbranch-predict)
+
+mno-branch-predict
+UrlSuffix(gcc/MMIX-Options.html#index-mno-branch-predict)
+
+mbase-addresses
+UrlSuffix(gcc/MMIX-Options.html#index-mbase-addresses)
+
+mno-base-addresses
+UrlSuffix(gcc/MMIX-Options.html#index-mno-base-addresses)
+
+msingle-exit
+UrlSuffix(gcc/MMIX-Options.html#index-msingle-exit)
+
+mno-single-exit
+UrlSuffix(gcc/MMIX-Options.html#index-mno-single-exit)
+
diff --git a/gcc/config/mn10300/mn10300.opt.urls b/gcc/config/mn10300/mn10300.opt.urls
new file mode 100644
index 000000000000..396ca4aa2e60
--- /dev/null
+++ b/gcc/config/mn10300/mn10300.opt.urls
@@ -0,0 +1,32 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mn10300/mn10300.opt and generated HTML
+
+mam33
+UrlSuffix(gcc/MN10300-Options.html#index-mam33)
+
+mam33-2
+UrlSuffix(gcc/MN10300-Options.html#index-mam33-2)
+
+mam34
+UrlSuffix(gcc/MN10300-Options.html#index-mam34)
+
+mtune=
+UrlSuffix(gcc/MN10300-Options.html#index-mtune-11)
+
+mmult-bug
+UrlSuffix(gcc/MN10300-Options.html#index-mmult-bug)
+
+mno-crt0
+UrlSuffix(gcc/MN10300-Options.html#index-mno-crt0)
+
+mrelax
+UrlSuffix(gcc/MN10300-Options.html#index-mrelax-2)
+
+mreturn-pointer-on-d0
+UrlSuffix(gcc/MN10300-Options.html#index-mreturn-pointer-on-d0)
+
+mliw
+UrlSuffix(gcc/MN10300-Options.html#index-mliw)
+
+msetlb
+UrlSuffix(gcc/MN10300-Options.html#index-msetlb)
+
diff --git a/gcc/config/moxie/moxie.opt.urls b/gcc/config/moxie/moxie.opt.urls
new file mode 100644
index 000000000000..a1b8b8a7a767
--- /dev/null
+++ b/gcc/config/moxie/moxie.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/moxie/moxie.opt and generated HTML
+
+meb
+UrlSuffix(gcc/Moxie-Options.html#index-meb)
+
+mel
+UrlSuffix(gcc/Moxie-Options.html#index-mel)
+
+mmul.x
+UrlSuffix(gcc/Moxie-Options.html#index-mmul_002ex)
+
+mno-crt0
+UrlSuffix(gcc/Moxie-Options.html#index-mno-crt0-1)
+
diff --git a/gcc/config/msp430/msp430.opt.urls b/gcc/config/msp430/msp430.opt.urls
new file mode 100644
index 000000000000..420c1c50f13e
--- /dev/null
+++ b/gcc/config/msp430/msp430.opt.urls
@@ -0,0 +1,53 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/msp430/msp430.opt and generated HTML
+
+msim
+UrlSuffix(gcc/MSP430-Options.html#index-msim-5)
+
+mtiny-printf
+UrlSuffix(gcc/MSP430-Options.html#index-mtiny-printf)
+
+masm-hex
+UrlSuffix(gcc/MSP430-Options.html#index-masm-hex)
+
+mmcu=
+UrlSuffix(gcc/MSP430-Options.html#index-mmcu_003d)
+
+mwarn-mcu
+UrlSuffix(gcc/MSP430-Options.html#index-mwarn-mcu)
+
+mwarn-devices-csv
+UrlSuffix(gcc/MSP430-Options.html#index-mwarn-devices-csv)
+
+mcpu=
+UrlSuffix(gcc/MSP430-Options.html#index-mcpu_003d-4)
+
+mlarge
+UrlSuffix(gcc/MSP430-Options.html#index-mlarge)
+
+msmall
+UrlSuffix(gcc/MSP430-Options.html#index-msmall)
+
+mrelax
+UrlSuffix(gcc/MSP430-Options.html#index-mrelax-3)
+
+minrt
+UrlSuffix(gcc/MSP430-Options.html#index-minrt)
+
+mhwmult=
+UrlSuffix(gcc/MSP430-Options.html#index-mhwmult_003d)
+
+mcode-region=
+UrlSuffix(gcc/MSP430-Options.html#index-mcode-region)
+
+mdata-region=
+UrlSuffix(gcc/MSP430-Options.html#index-mdata-region)
+
+msilicon-errata=
+UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata)
+
+msilicon-errata-warn=
+UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata-warn)
+
+mmax-inline-shift=
+UrlSuffix(gcc/MSP430-Options.html#index-mmax-inline-shift_003d)
+
diff --git a/gcc/config/nds32/nds32-elf.opt.urls b/gcc/config/nds32/nds32-elf.opt.urls
new file mode 100644
index 000000000000..5399afba7d3d
--- /dev/null
+++ b/gcc/config/nds32/nds32-elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-elf.opt and generated HTML
+
+mcmodel=
+UrlSuffix(gcc/NDS32-Options.html#index-mcmodel)
+
diff --git a/gcc/config/nds32/nds32-linux.opt.urls b/gcc/config/nds32/nds32-linux.opt.urls
new file mode 100644
index 000000000000..27d39f04ad95
--- /dev/null
+++ b/gcc/config/nds32/nds32-linux.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-linux.opt and generated HTML
+
+mcmodel=
+UrlSuffix(gcc/NDS32-Options.html#index-mcmodel)
+
diff --git a/gcc/config/nds32/nds32.opt.urls b/gcc/config/nds32/nds32.opt.urls
new file mode 100644
index 000000000000..661a266a76cd
--- /dev/null
+++ b/gcc/config/nds32/nds32.opt.urls
@@ -0,0 +1,57 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32.opt and generated HTML
+
+; skipping 'EB' due to finding no URLs
+
+; skipping 'EL' due to finding no URLs
+
+; skipping 'mabi=' due to finding no URLs
+
+mreduced-regs
+UrlSuffix(gcc/NDS32-Options.html#index-mreduced-regs)
+
+mfull-regs
+UrlSuffix(gcc/NDS32-Options.html#index-mfull-regs)
+
+mbig-endian
+UrlSuffix(gcc/NDS32-Options.html#index-mbig-endian-9)
+
+mlittle-endian
+UrlSuffix(gcc/NDS32-Options.html#index-mlittle-endian-9)
+
+mcmov
+UrlSuffix(gcc/NDS32-Options.html#index-mcmov)
+
+mext-perf
+UrlSuffix(gcc/NDS32-Options.html#index-mext-perf)
+
+mext-perf2
+UrlSuffix(gcc/NDS32-Options.html#index-mext-perf2)
+
+mext-string
+UrlSuffix(gcc/NDS32-Options.html#index-mext-string)
+
+mv3push
+UrlSuffix(gcc/NDS32-Options.html#index-mv3push)
+
+m16-bit
+UrlSuffix(gcc/NDS32-Options.html#index-m16-bit-1)
+
+misr-vector-size=
+UrlSuffix(gcc/NDS32-Options.html#index-misr-vector-size)
+
+mcache-block-size=
+UrlSuffix(gcc/NDS32-Options.html#index-mcache-block-size)
+
+march=
+UrlSuffix(gcc/NDS32-Options.html#index-march-10)
+
+; skipping 'mcpu=' due to finding no URLs
+
+mctor-dtor
+UrlSuffix(gcc/NDS32-Options.html#index-mctor-dtor)
+
+mrelax
+UrlSuffix(gcc/NDS32-Options.html#index-mrelax-4)
+
+; skipping 'munaligned-access' due to finding no URLs
+
diff --git a/gcc/config/netbsd-elf.opt.urls b/gcc/config/netbsd-elf.opt.urls
new file mode 100644
index 000000000000..c0e791c3a35f
--- /dev/null
+++ b/gcc/config/netbsd-elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd-elf.opt and generated HTML
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/netbsd.opt.urls b/gcc/config/netbsd.opt.urls
new file mode 100644
index 000000000000..cd48e6881f07
--- /dev/null
+++ b/gcc/config/netbsd.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd.opt and generated HTML
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/nios2/elf.opt.urls b/gcc/config/nios2/elf.opt.urls
new file mode 100644
index 000000000000..1367c6ba50cf
--- /dev/null
+++ b/gcc/config/nios2/elf.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/elf.opt and generated HTML
+
+msmallc
+UrlSuffix(gcc/Nios-II-Options.html#index-msmallc)
+
+msys-lib=
+UrlSuffix(gcc/Nios-II-Options.html#index-msys-lib)
+
+msys-crt0=
+UrlSuffix(gcc/Nios-II-Options.html#index-msys-crt0)
+
+mhal
+UrlSuffix(gcc/Nios-II-Options.html#index-mhal)
+
diff --git a/gcc/config/nios2/nios2.opt.urls b/gcc/config/nios2/nios2.opt.urls
new file mode 100644
index 000000000000..a38ea285a6e2
--- /dev/null
+++ b/gcc/config/nios2/nios2.opt.urls
@@ -0,0 +1,50 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/nios2.opt and generated HTML
+
+mhw-div
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-div)
+
+mhw-mul
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mul)
+
+mhw-mulx
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mulx)
+
+mfast-sw-div
+UrlSuffix(gcc/Nios-II-Options.html#index-mfast-sw-div)
+
+mbypass-cache
+UrlSuffix(gcc/Nios-II-Options.html#index-mbypass-cache)
+
+mno-cache-volatile
+UrlSuffix(gcc/Nios-II-Options.html#index-mno-cache-volatile)
+
+mcache-volatile
+UrlSuffix(gcc/Nios-II-Options.html#index-mcache-volatile)
+
+mgpopt=
+UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1)
+
+mgpopt
+UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1)
+
+mno-gpopt
+UrlSuffix(gcc/Nios-II-Options.html#index-mno-gpopt-1)
+
+meb
+UrlSuffix(gcc/Nios-II-Options.html#index-meb-1)
+
+mel
+UrlSuffix(gcc/Nios-II-Options.html#index-mel-1)
+
+mcustom-fpu-cfg=
+UrlSuffix(gcc/Nios-II-Options.html#index-mcustom-fpu-cfg)
+
+march=
+UrlSuffix(gcc/Nios-II-Options.html#index-march-11)
+
+mgprel-sec=
+UrlSuffix(gcc/Nios-II-Options.html#index-mgprel-sec)
+
+mr0rel-sec=
+UrlSuffix(gcc/Nios-II-Options.html#index-mr0rel-sec)
+
diff --git a/gcc/config/nvptx/nvptx-gen.opt.urls b/gcc/config/nvptx/nvptx-gen.opt.urls
new file mode 100644
index 000000000000..7ea132489aad
--- /dev/null
+++ b/gcc/config/nvptx/nvptx-gen.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx-gen.opt and generated HTML
+
diff --git a/gcc/config/nvptx/nvptx.opt.urls b/gcc/config/nvptx/nvptx.opt.urls
new file mode 100644
index 000000000000..5c8942ca7522
--- /dev/null
+++ b/gcc/config/nvptx/nvptx.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx.opt and generated HTML
+
+m64
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-m64)
+
+mmainkernel
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mmainkernel)
+
+moptimize
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-moptimize)
+
+msoft-stack
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-msoft-stack)
+
+muniform-simt
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-muniform-simt)
+
+mgomp
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mgomp)
+
+misa=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-misa)
+
+march=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-march-12)
+
+mptx=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mptx)
+
diff --git a/gcc/config/openbsd.opt.urls b/gcc/config/openbsd.opt.urls
new file mode 100644
index 000000000000..28d24583b0dc
--- /dev/null
+++ b/gcc/config/openbsd.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/openbsd.opt and generated HTML
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/or1k/elf.opt.urls b/gcc/config/or1k/elf.opt.urls
new file mode 100644
index 000000000000..ea3d5d76ac7d
--- /dev/null
+++ b/gcc/config/or1k/elf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/elf.opt and generated HTML
+
+mboard=
+UrlSuffix(gcc/OpenRISC-Options.html#index-mboard)
+
+mnewlib
+UrlSuffix(gcc/OpenRISC-Options.html#index-mnewlib)
+
diff --git a/gcc/config/or1k/or1k.opt.urls b/gcc/config/or1k/or1k.opt.urls
new file mode 100644
index 000000000000..d0409e51ba2f
--- /dev/null
+++ b/gcc/config/or1k/or1k.opt.urls
@@ -0,0 +1,46 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/or1k.opt and generated HTML
+
+mhard-div
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-div)
+
+msoft-div
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-div)
+
+mhard-mul
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-mul)
+
+msoft-mul
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-mul)
+
+msoft-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-float-9)
+
+mhard-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-float-5)
+
+mdouble-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-mdouble-float-3)
+
+munordered-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-munordered-float)
+
+; skipping 'mcmodel=' due to finding no URLs
+
+mcmov
+UrlSuffix(gcc/OpenRISC-Options.html#index-mcmov-1)
+
+mror
+UrlSuffix(gcc/OpenRISC-Options.html#index-mror)
+
+mrori
+UrlSuffix(gcc/OpenRISC-Options.html#index-mrori)
+
+msext
+UrlSuffix(gcc/OpenRISC-Options.html#index-msext)
+
+msfimm
+UrlSuffix(gcc/OpenRISC-Options.html#index-msfimm)
+
+mshftimm
+UrlSuffix(gcc/OpenRISC-Options.html#index-mshftimm)
+
diff --git a/gcc/config/pa/pa-hpux.opt.urls b/gcc/config/pa/pa-hpux.opt.urls
new file mode 100644
index 000000000000..6a52dd08e482
--- /dev/null
+++ b/gcc/config/pa/pa-hpux.opt.urls
@@ -0,0 +1,11 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux.opt and generated HTML
+
+msio
+UrlSuffix(gcc/HPPA-Options.html#index-msio)
+
+nolibdld
+UrlSuffix(gcc/HPPA-Options.html#index-nolibdld)
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/pa/pa-hpux1010.opt.urls b/gcc/config/pa/pa-hpux1010.opt.urls
new file mode 100644
index 000000000000..9b96cafbf065
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1010.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1010.opt and generated HTML
+
diff --git a/gcc/config/pa/pa-hpux1111.opt.urls b/gcc/config/pa/pa-hpux1111.opt.urls
new file mode 100644
index 000000000000..706e63c534bd
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1111.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1111.opt and generated HTML
+
diff --git a/gcc/config/pa/pa-hpux1131.opt.urls b/gcc/config/pa/pa-hpux1131.opt.urls
new file mode 100644
index 000000000000..497c49d186f3
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1131.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1131.opt and generated HTML
+
diff --git a/gcc/config/pa/pa.opt.urls b/gcc/config/pa/pa.opt.urls
new file mode 100644
index 000000000000..5b8bcebdd0da
--- /dev/null
+++ b/gcc/config/pa/pa.opt.urls
@@ -0,0 +1,71 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa.opt and generated HTML
+
+matomic-libcalls
+UrlSuffix(gcc/HPPA-Options.html#index-matomic-libcalls)
+
+mbig-switch
+UrlSuffix(gcc/HPPA-Options.html#index-mbig-switch)
+
+mcaller-copies
+UrlSuffix(gcc/HPPA-Options.html#index-mcaller-copies)
+
+mcoherent-ldcw
+UrlSuffix(gcc/HPPA-Options.html#index-mcoherent-ldcw)
+
+mdisable-fpregs
+UrlSuffix(gcc/HPPA-Options.html#index-mdisable-fpregs)
+
+mdisable-indexing
+UrlSuffix(gcc/HPPA-Options.html#index-mdisable-indexing)
+
+mfast-indirect-calls
+UrlSuffix(gcc/HPPA-Options.html#index-mfast-indirect-calls)
+
+mfixed-range=
+UrlSuffix(gcc/HPPA-Options.html#index-mfixed-range)
+
+mgas
+UrlSuffix(gcc/HPPA-Options.html#index-mgas)
+
+mjump-in-delay
+UrlSuffix(gcc/HPPA-Options.html#index-mjump-in-delay)
+
+mlinker-opt
+UrlSuffix(gcc/HPPA-Options.html#index-mlinker-opt)
+
+mlong-calls
+UrlSuffix(gcc/HPPA-Options.html#index-mlong-calls-5)
+
+mlong-load-store
+UrlSuffix(gcc/HPPA-Options.html#index-mlong-load-store)
+
+mno-space-regs
+UrlSuffix(gcc/HPPA-Options.html#index-mno-space-regs)
+
+mordered
+UrlSuffix(gcc/HPPA-Options.html#index-mordered)
+
+mpa-risc-1-0
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-0)
+
+mpa-risc-1-1
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-1)
+
+mpa-risc-2-0
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-2-0)
+
+mportable-runtime
+UrlSuffix(gcc/HPPA-Options.html#index-mportable-runtime)
+
+mschedule=
+UrlSuffix(gcc/HPPA-Options.html#index-mschedule)
+
+msoft-float
+UrlSuffix(gcc/HPPA-Options.html#index-msoft-float-4)
+
+msoft-mult
+UrlSuffix(gcc/HPPA-Options.html#index-msoft-mult)
+
+mspace-regs
+UrlSuffix(gcc/HPPA-Options.html#index-mspace-regs)
+
diff --git a/gcc/config/pa/pa64-hpux.opt.urls b/gcc/config/pa/pa64-hpux.opt.urls
new file mode 100644
index 000000000000..9ebf02759520
--- /dev/null
+++ b/gcc/config/pa/pa64-hpux.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa64-hpux.opt and generated HTML
+
+mgnu-ld
+UrlSuffix(gcc/HPPA-Options.html#index-mgnu-ld)
+
+mhp-ld
+UrlSuffix(gcc/HPPA-Options.html#index-mhp-ld)
+
diff --git a/gcc/config/pdp11/pdp11.opt.urls b/gcc/config/pdp11/pdp11.opt.urls
new file mode 100644
index 000000000000..f0544ca84f69
--- /dev/null
+++ b/gcc/config/pdp11/pdp11.opt.urls
@@ -0,0 +1,41 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pdp11/pdp11.opt and generated HTML
+
+m10
+UrlSuffix(gcc/PDP-11-Options.html#index-m10)
+
+m40
+UrlSuffix(gcc/PDP-11-Options.html#index-m40)
+
+m45
+UrlSuffix(gcc/PDP-11-Options.html#index-m45)
+
+mac0
+UrlSuffix(gcc/PDP-11-Options.html#index-mac0)
+
+mdec-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-mdec-asm)
+
+mgnu-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-mgnu-asm)
+
+mfpu
+UrlSuffix(gcc/PDP-11-Options.html#index-mfpu-3)
+
+mint16
+UrlSuffix(gcc/PDP-11-Options.html#index-mint16)
+
+mint32
+UrlSuffix(gcc/PDP-11-Options.html#index-mint32-1)
+
+msoft-float
+UrlSuffix(gcc/PDP-11-Options.html#index-msoft-float-10)
+
+msplit
+UrlSuffix(gcc/PDP-11-Options.html#index-msplit)
+
+munix-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-munix-asm)
+
+mlra
+UrlSuffix(gcc/PDP-11-Options.html#index-mlra-2)
+
diff --git a/gcc/config/pru/pru.opt.urls b/gcc/config/pru/pru.opt.urls
new file mode 100644
index 000000000000..373b02d5aedc
--- /dev/null
+++ b/gcc/config/pru/pru.opt.urls
@@ -0,0 +1,17 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pru/pru.opt and generated HTML
+
+minrt
+UrlSuffix(gcc/PRU-Options.html#index-minrt-1)
+
+mmcu=
+UrlSuffix(gcc/PRU-Options.html#index-mmcu-2)
+
+mno-relax
+UrlSuffix(gcc/PRU-Options.html#index-mno-relax)
+
+mloop
+UrlSuffix(gcc/PRU-Options.html#index-mloop)
+
+mabi=
+UrlSuffix(gcc/PRU-Options.html#index-mabi-3)
+
diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls
new file mode 100644
index 000000000000..d9bb8c594e01
--- /dev/null
+++ b/gcc/config/riscv/riscv.opt.urls
@@ -0,0 +1,88 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/riscv/riscv.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/RISC-V-Options.html#index-mbig-endian-10)
+
+mlittle-endian
+UrlSuffix(gcc/RISC-V-Options.html#index-mlittle-endian-10)
+
+mbranch-cost=
+UrlSuffix(gcc/RISC-V-Options.html#index-mbranch-cost-4)
+
+; skipping 'mplt' due to finding no URLs
+
+mabi=
+UrlSuffix(gcc/RISC-V-Options.html#index-mabi-4)
+
+mpreferred-stack-boundary=
+UrlSuffix(gcc/RISC-V-Options.html#index-mpreferred-stack-boundary)
+
+mfdiv
+UrlSuffix(gcc/RISC-V-Options.html#index-mfdiv)
+
+mdiv
+UrlSuffix(gcc/RISC-V-Options.html#index-mdiv-3)
+
+march=
+UrlSuffix(gcc/RISC-V-Options.html#index-march-14)
+
+mtune=
+UrlSuffix(gcc/RISC-V-Options.html#index-mtune-12)
+
+mcpu=
+UrlSuffix(gcc/RISC-V-Options.html#index-mcpu-8)
+
+msmall-data-limit=
+UrlSuffix(gcc/RISC-V-Options.html#index-msmall-data-limit-1)
+
+msave-restore
+UrlSuffix(gcc/RISC-V-Options.html#index-msave-restore)
+
+mshorten-memrefs
+UrlSuffix(gcc/RISC-V-Options.html#index-mshorten-memrefs)
+
+; skipping 'mcmodel=' due to finding no URLs
+
+mstrict-align
+UrlSuffix(gcc/RISC-V-Options.html#index-mstrict-align-3)
+
+; skipping 'mexplicit-relocs' due to finding no URLs
+
+mrelax
+UrlSuffix(gcc/RISC-V-Options.html#index-mrelax-5)
+
+mcsr-check
+UrlSuffix(gcc/RISC-V-Options.html#index-mcsr-check)
+
+; skipping 'momit-leaf-frame-pointer' due to finding no URLs
+
+mriscv-attribute
+UrlSuffix(gcc/RISC-V-Options.html#index-mriscv-attribute)
+
+malign-data=
+UrlSuffix(gcc/RISC-V-Options.html#index-malign-data)
+
+mstack-protector-guard=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-2)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-reg-1)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-offset-2)
+
+misa-spec=
+UrlSuffix(gcc/RISC-V-Options.html#index-misa-spec)
+
+minline-atomics
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-atomics)
+
+minline-strcmp
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strcmp)
+
+minline-strncmp
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strncmp)
+
+minline-strlen
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strlen)
+
diff --git a/gcc/config/rl78/rl78.opt.urls b/gcc/config/rl78/rl78.opt.urls
new file mode 100644
index 000000000000..08850dda12cf
--- /dev/null
+++ b/gcc/config/rl78/rl78.opt.urls
@@ -0,0 +1,31 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rl78/rl78.opt and generated HTML
+
+msim
+UrlSuffix(gcc/RL78-Options.html#index-msim-6)
+
+mmul=
+UrlSuffix(gcc/RL78-Options.html#index-mmul)
+
+mallregs
+UrlSuffix(gcc/RL78-Options.html#index-mallregs)
+
+; skipping 'mrelax' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/RL78-Options.html#index-mcpu-9)
+
+mg10
+UrlSuffix(gcc/RL78-Options.html#index-mg10)
+
+mg13
+UrlSuffix(gcc/RL78-Options.html#index-mg13)
+
+mg14
+UrlSuffix(gcc/RL78-Options.html#index-mg14)
+
+mrl78
+UrlSuffix(gcc/RL78-Options.html#index-mrl78)
+
+msave-mduc-in-interrupts
+UrlSuffix(gcc/RL78-Options.html#index-msave-mduc-in-interrupts)
+
diff --git a/gcc/config/rpath.opt.urls b/gcc/config/rpath.opt.urls
new file mode 100644
index 000000000000..249dfdfb762d
--- /dev/null
+++ b/gcc/config/rpath.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rpath.opt and generated HTML
+
diff --git a/gcc/config/rs6000/476.opt.urls b/gcc/config/rs6000/476.opt.urls
new file mode 100644
index 000000000000..cecf72200a51
--- /dev/null
+++ b/gcc/config/rs6000/476.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/476.opt and generated HTML
+
diff --git a/gcc/config/rs6000/aix64.opt.urls b/gcc/config/rs6000/aix64.opt.urls
new file mode 100644
index 000000000000..e6e890e5add6
--- /dev/null
+++ b/gcc/config/rs6000/aix64.opt.urls
@@ -0,0 +1,23 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/aix64.opt and generated HTML
+
+maix64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix64)
+
+maix32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix32)
+
+; skipping 'mcmodel=' due to finding no URLs
+
+mpe
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpe)
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
diff --git a/gcc/config/rs6000/darwin.opt.urls b/gcc/config/rs6000/darwin.opt.urls
new file mode 100644
index 000000000000..3b7fa1a80f80
--- /dev/null
+++ b/gcc/config/rs6000/darwin.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/darwin.opt and generated HTML
+
+ffix-and-continue
+UrlSuffix(gcc/Darwin-Options.html#index-ffix-and-continue)
+
+findirect-data
+UrlSuffix(gcc/Darwin-Options.html#index-findirect-data)
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
diff --git a/gcc/config/rs6000/linux64.opt.urls b/gcc/config/rs6000/linux64.opt.urls
new file mode 100644
index 000000000000..3ebc908d8bec
--- /dev/null
+++ b/gcc/config/rs6000/linux64.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/linux64.opt and generated HTML
+
+; skipping 'mcmodel=' due to finding no URLs
+
diff --git a/gcc/config/rs6000/rs6000-tables.opt.urls b/gcc/config/rs6000/rs6000-tables.opt.urls
new file mode 100644
index 000000000000..a44ce0d7aaa3
--- /dev/null
+++ b/gcc/config/rs6000/rs6000-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000-tables.opt and generated HTML
+
diff --git a/gcc/config/rs6000/rs6000.opt.urls b/gcc/config/rs6000/rs6000.opt.urls
new file mode 100644
index 000000000000..20b901a3a71d
--- /dev/null
+++ b/gcc/config/rs6000/rs6000.opt.urls
@@ -0,0 +1,214 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000.opt and generated HTML
+
+mpowerpc64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc64)
+
+mpowerpc-gpopt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gpopt)
+
+mpowerpc-gfxopt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gfxopt)
+
+mmfcrf
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmfcrf)
+
+mpopcntb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntb)
+
+mfprnd
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfprnd)
+
+mcmpb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcmpb)
+
+maltivec
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maltivec)
+
+mhard-dfp
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-dfp)
+
+mmulhw
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmulhw)
+
+mdlmzb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mdlmzb)
+
+mmultiple
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmultiple)
+
+msoft-float
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msoft-float-11)
+
+mhard-float
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-float-6)
+
+mpopcntd
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntd)
+
+mfriz
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfriz)
+
+mveclibabi=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mveclibabi)
+
+mvsx
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvsx)
+
+mno-update
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-update)
+
+mupdate
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mupdate)
+
+msingle-pic-base
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msingle-pic-base-1)
+
+mavoid-indexed-addresses
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mavoid-indexed-addresses)
+
+; skipping 'msched-prolog' due to finding no URLs
+
+maix-struct-return
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix-struct-return)
+
+msvr4-struct-return
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msvr4-struct-return)
+
+mxl-compat
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mxl-compat)
+
+mrecip
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip)
+
+mrecip=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip)
+
+mrecip-precision
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-precision)
+
+mno-fp-in-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-fp-in-toc)
+
+mno-sum-in-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-sum-in-toc)
+
+mminimal-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mminimal-toc)
+
+mfull-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfull-toc)
+
+mvrsave
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvrsave)
+
+mblock-move-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-move-inline-limit)
+
+mblock-compare-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-limit)
+
+mblock-compare-inline-loop-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-loop-limit)
+
+mstring-compare-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstring-compare-inline-limit)
+
+misel
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-misel)
+
+; skipping 'mdebug=' due to finding no URLs
+
+mabi=elfv1
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv1)
+
+mabi=elfv2
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv2)
+
+mabi=ieeelongdouble
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dieeelongdouble)
+
+mabi=ibmlongdouble
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dibmlongdouble)
+
+mcpu=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcpu-10)
+
+mtune=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtune-13)
+
+mtraceback=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtraceback)
+
+mlongcall
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlongcall)
+
+; skipping 'mlra' due to finding no URLs
+
+msched-costly-dep=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msched-costly-dep)
+
+minsert-sched-nops=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-minsert-sched-nops)
+
+mprioritize-restricted-insns=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprioritize-restricted-insns)
+
+mpointers-to-nested-functions
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpointers-to-nested-functions)
+
+msave-toc-indirect
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msave-toc-indirect)
+
+mpower8-fusion
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-fusion)
+
+mpower8-vector
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-vector)
+
+mcrypto
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcrypto)
+
+mhtm
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhtm)
+
+mquad-memory
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory)
+
+mquad-memory-atomic
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory-atomic)
+
+mcompat-align-parm
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcompat-align-parm)
+
+; skipping 'munroll-only-small-loops' due to finding no URLs
+
+mfloat128
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128)
+
+mfloat128-hardware
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128-hardware)
+
+mstack-protector-guard=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-3)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-reg-2)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-offset-3)
+
+mprefixed
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprefixed)
+
+mpcrel
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpcrel-1)
+
+mmma
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmma)
+
+mrop-protect
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrop-protect)
+
+mprivileged
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprivileged)
+
diff --git a/gcc/config/rs6000/sysv4.opt.urls b/gcc/config/rs6000/sysv4.opt.urls
new file mode 100644
index 000000000000..7a82b9af59a6
--- /dev/null
+++ b/gcc/config/rs6000/sysv4.opt.urls
@@ -0,0 +1,87 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/sysv4.opt and generated HTML
+
+msdata=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2)
+
+mreadonly-in-sdata
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mreadonly-in-sdata)
+
+; skipping 'mtls-size=' due to finding no URLs
+
+mbit-align
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbit-align)
+
+mstrict-align
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstrict-align-4)
+
+mrelocatable
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable)
+
+mrelocatable-lib
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable-lib)
+
+mlittle-endian
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle-endian-11)
+
+mlittle
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle)
+
+mbig-endian
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig-endian-11)
+
+mbig
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig)
+
+mno-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-toc)
+
+mtoc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtoc)
+
+mprototype
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprototype)
+
+meabi
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-meabi)
+
+mregnames
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mregnames)
+
+msdata
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2)
+
+msim
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msim-7)
+
+mads
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mads)
+
+myellowknife
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-myellowknife)
+
+mmvme
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmvme)
+
+memb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-memb)
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
+; skipping 'mnewlib' due to finding no URLs
+
+msecure-plt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msecure-plt)
+
+mbss-plt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbss-plt)
+
+mpltseq
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpltseq)
+
+mgnu-attribute
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mgnu-attribute)
+
diff --git a/gcc/config/rtems.opt.urls b/gcc/config/rtems.opt.urls
new file mode 100644
index 000000000000..9441021010fa
--- /dev/null
+++ b/gcc/config/rtems.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rtems.opt and generated HTML
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/rx/elf.opt.urls b/gcc/config/rx/elf.opt.urls
new file mode 100644
index 000000000000..c43973a9d490
--- /dev/null
+++ b/gcc/config/rx/elf.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/elf.opt and generated HTML
+
+msim
+UrlSuffix(gcc/RX-Options.html#index-msim-8)
+
+mas100-syntax
+UrlSuffix(gcc/RX-Options.html#index-mas100-syntax)
+
+mint-register=
+UrlSuffix(gcc/RX-Options.html#index-mint-register)
+
+msave-acc-in-interrupts
+UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts)
+
diff --git a/gcc/config/rx/rx.opt.urls b/gcc/config/rx/rx.opt.urls
new file mode 100644
index 000000000000..e0cbdec0582d
--- /dev/null
+++ b/gcc/config/rx/rx.opt.urls
@@ -0,0 +1,54 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/rx.opt and generated HTML
+
+m64bit-doubles
+UrlSuffix(gcc/RX-Options.html#index-m64bit-doubles-1)
+
+m32bit-doubles
+UrlSuffix(gcc/RX-Options.html#index-m32bit-doubles-1)
+
+nofpu
+UrlSuffix(gcc/RX-Options.html#index-nofpu)
+
+fpu
+UrlSuffix(gcc/RX-Options.html#index-fpu)
+
+mcpu=
+UrlSuffix(gcc/RX-Options.html#index-mcpu-11)
+
+mbig-endian-data
+UrlSuffix(gcc/RX-Options.html#index-mbig-endian-data)
+
+mlittle-endian-data
+UrlSuffix(gcc/RX-Options.html#index-mlittle-endian-data)
+
+msmall-data-limit=
+UrlSuffix(gcc/RX-Options.html#index-msmall-data-limit-2)
+
+mrelax
+UrlSuffix(gcc/RX-Options.html#index-mrelax-6)
+
+mmax-constant-size=
+UrlSuffix(gcc/RX-Options.html#index-mmax-constant-size)
+
+mint-register=
+UrlSuffix(gcc/RX-Options.html#index-mint-register)
+
+msave-acc-in-interrupts
+UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts)
+
+mpid
+UrlSuffix(gcc/RX-Options.html#index-mpid)
+
+mwarn-multiple-fast-interrupts
+UrlSuffix(gcc/RX-Options.html#index-mwarn-multiple-fast-interrupts)
+
+; skipping 'mgcc-abi' due to finding no URLs
+
+; skipping 'mlra' due to finding no URLs
+
+mallow-string-insns
+UrlSuffix(gcc/RX-Options.html#index-mallow-string-insns)
+
+mjsr
+UrlSuffix(gcc/RX-Options.html#index-mjsr)
+
diff --git a/gcc/config/s390/s390.opt.urls b/gcc/config/s390/s390.opt.urls
new file mode 100644
index 000000000000..88d3651b1c39
--- /dev/null
+++ b/gcc/config/s390/s390.opt.urls
@@ -0,0 +1,92 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/s390.opt and generated HTML
+
+m31
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m31)
+
+m64
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m64-2)
+
+march=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-march-15)
+
+mbackchain
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mbackchain)
+
+mdebug
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mdebug-1)
+
+mesa
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mesa)
+
+mhard-dfp
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-dfp-1)
+
+mhard-float
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-float-7)
+
+mhotpatch=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhotpatch)
+
+mlong-double-128
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-128)
+
+mlong-double-64
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-64)
+
+mhtm
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhtm-1)
+
+mvx
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mvx)
+
+mpacked-stack
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mpacked-stack)
+
+msmall-exec
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msmall-exec)
+
+msoft-float
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msoft-float-12)
+
+mstack-guard=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-guard)
+
+mstack-size=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-size-2)
+
+mtune=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtune-14)
+
+mmvcle
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mmvcle)
+
+mzvector
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzvector)
+
+mwarn-dynamicstack
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-dynamicstack)
+
+mwarn-framesize=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-framesize)
+
+mzarch
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzarch)
+
+; skipping 'mbranch-cost=' due to finding no URLs
+
+; skipping 'mlra' due to finding no URLs
+
+; skipping 'mpic-data-is-text-relative' due to finding no URLs
+
+; skipping 'mindirect-branch=' due to finding no URLs
+
+; skipping 'mfunction-return=' due to finding no URLs
+
+; skipping 'mfentry' due to finding no URLs
+
+; skipping 'mrecord-mcount' due to finding no URLs
+
+; skipping 'mnop-mcount' due to finding no URLs
+
+; skipping 'munroll-only-small-loops' due to finding no URLs
+
diff --git a/gcc/config/s390/tpf.opt.urls b/gcc/config/s390/tpf.opt.urls
new file mode 100644
index 000000000000..8322d7eaa001
--- /dev/null
+++ b/gcc/config/s390/tpf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/tpf.opt and generated HTML
+
+mtpf-trace
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace)
+
+mtpf-trace-skip
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace-skip)
+
diff --git a/gcc/config/sh/sh.opt.urls b/gcc/config/sh/sh.opt.urls
new file mode 100644
index 000000000000..218ddb488212
--- /dev/null
+++ b/gcc/config/sh/sh.opt.urls
@@ -0,0 +1,174 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/sh.opt and generated HTML
+
+m1
+UrlSuffix(gcc/SH-Options.html#index-m1)
+
+m2
+UrlSuffix(gcc/SH-Options.html#index-m2)
+
+m2a
+UrlSuffix(gcc/SH-Options.html#index-m2a)
+
+m2a-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m2a-nofpu)
+
+m2a-single
+UrlSuffix(gcc/SH-Options.html#index-m2a-single)
+
+m2a-single-only
+UrlSuffix(gcc/SH-Options.html#index-m2a-single-only)
+
+m3
+UrlSuffix(gcc/SH-Options.html#index-m3)
+
+m3e
+UrlSuffix(gcc/SH-Options.html#index-m3e)
+
+m4
+UrlSuffix(gcc/SH-Options.html#index-m4)
+
+m4-100
+UrlSuffix(gcc/SH-Options.html#index-m4-100)
+
+m4-200
+UrlSuffix(gcc/SH-Options.html#index-m4-200)
+
+m4-300
+UrlSuffix(gcc/SH-Options.html#index-m4-300)
+
+m4-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-nofpu)
+
+m4-100-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-100-nofpu)
+
+m4-200-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-200-nofpu)
+
+m4-300-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-300-nofpu)
+
+m4-340
+UrlSuffix(gcc/SH-Options.html#index-m4-340)
+
+m4-500
+UrlSuffix(gcc/SH-Options.html#index-m4-500)
+
+m4-single
+UrlSuffix(gcc/SH-Options.html#index-m4-single)
+
+m4-100-single
+UrlSuffix(gcc/SH-Options.html#index-m4-100-single)
+
+m4-200-single
+UrlSuffix(gcc/SH-Options.html#index-m4-200-single)
+
+m4-300-single
+UrlSuffix(gcc/SH-Options.html#index-m4-300-single)
+
+m4-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-single-only)
+
+m4-100-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-100-single-only)
+
+m4-200-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-200-single-only)
+
+m4-300-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-300-single-only)
+
+m4a
+UrlSuffix(gcc/SH-Options.html#index-m4a)
+
+m4a-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4a-nofpu)
+
+m4a-single
+UrlSuffix(gcc/SH-Options.html#index-m4a-single)
+
+m4a-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4a-single-only)
+
+m4al
+UrlSuffix(gcc/SH-Options.html#index-m4al)
+
+maccumulate-outgoing-args
+UrlSuffix(gcc/SH-Options.html#index-maccumulate-outgoing-args)
+
+mb
+UrlSuffix(gcc/SH-Options.html#index-mb)
+
+mbigtable
+UrlSuffix(gcc/SH-Options.html#index-mbigtable)
+
+mbitops
+UrlSuffix(gcc/SH-Options.html#index-mbitops)
+
+; skipping 'mbranch-cost=' due to finding no URLs
+
+mzdcbranch
+UrlSuffix(gcc/SH-Options.html#index-mzdcbranch)
+
+mcbranch-force-delay-slot
+UrlSuffix(gcc/SH-Options.html#index-mcbranch-force-delay-slot)
+
+mdalign
+UrlSuffix(gcc/SH-Options.html#index-mdalign)
+
+; skipping 'mdiv=' due to finding no URLs
+
+; skipping 'mfdpic' due to finding no URLs
+
+mfmovd
+UrlSuffix(gcc/SH-Options.html#index-mfmovd)
+
+mfixed-range=
+UrlSuffix(gcc/SH-Options.html#index-mfixed-range-2)
+
+mieee
+UrlSuffix(gcc/SH-Options.html#index-mieee-1)
+
+minline-ic_invalidate
+UrlSuffix(gcc/SH-Options.html#index-minline-ic_005finvalidate)
+
+misize
+UrlSuffix(gcc/SH-Options.html#index-misize-1)
+
+ml
+UrlSuffix(gcc/SH-Options.html#index-ml)
+
+mnomacsave
+UrlSuffix(gcc/SH-Options.html#index-mnomacsave)
+
+mpadstruct
+UrlSuffix(gcc/SH-Options.html#index-mpadstruct)
+
+mprefergot
+UrlSuffix(gcc/SH-Options.html#index-mprefergot)
+
+mrelax
+UrlSuffix(gcc/SH-Options.html#index-mrelax-7)
+
+mrenesas
+UrlSuffix(gcc/SH-Options.html#index-mrenesas)
+
+mtas
+UrlSuffix(gcc/SH-Options.html#index-mtas)
+
+; skipping 'multcost=' due to finding no URLs
+
+musermode
+UrlSuffix(gcc/SH-Options.html#index-musermode)
+
+mpretend-cmove
+UrlSuffix(gcc/SH-Options.html#index-mpretend-cmove)
+
+mfsca
+UrlSuffix(gcc/SH-Options.html#index-mfsca)
+
+mfsrra
+UrlSuffix(gcc/SH-Options.html#index-mfsrra)
+
+; skipping 'mlra' due to finding no URLs
+
diff --git a/gcc/config/sh/superh.opt.urls b/gcc/config/sh/superh.opt.urls
new file mode 100644
index 000000000000..66af349bffc6
--- /dev/null
+++ b/gcc/config/sh/superh.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/superh.opt and generated HTML
+
+; skipping 'mboard=' due to finding no URLs
+
diff --git a/gcc/config/sol2.opt.urls b/gcc/config/sol2.opt.urls
new file mode 100644
index 000000000000..1c40d1845c98
--- /dev/null
+++ b/gcc/config/sol2.opt.urls
@@ -0,0 +1,21 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sol2.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
+mclear-hwcap
+UrlSuffix(gcc/Solaris-2-Options.html#index-mclear-hwcap)
+
+mimpure-text
+UrlSuffix(gcc/Solaris-2-Options.html#index-mimpure-text)
+
+; skipping 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+pthreads
+UrlSuffix(gcc/Solaris-2-Options.html#index-pthreads)
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/sparc/long-double-switch.opt.urls b/gcc/config/sparc/long-double-switch.opt.urls
new file mode 100644
index 000000000000..1674d826382e
--- /dev/null
+++ b/gcc/config/sparc/long-double-switch.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/long-double-switch.opt and generated HTML
+
+; skipping 'mlong-double-128' due to finding no URLs
+
+; skipping 'mlong-double-64' due to finding no URLs
+
diff --git a/gcc/config/sparc/sparc.opt.urls b/gcc/config/sparc/sparc.opt.urls
new file mode 100644
index 000000000000..14fb52c06462
--- /dev/null
+++ b/gcc/config/sparc/sparc.opt.urls
@@ -0,0 +1,108 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/sparc.opt and generated HTML
+
+mfpu
+UrlSuffix(gcc/SPARC-Options.html#index-mfpu-4)
+
+mhard-float
+UrlSuffix(gcc/SPARC-Options.html#index-mhard-float-8)
+
+msoft-float
+UrlSuffix(gcc/SPARC-Options.html#index-msoft-float-13)
+
+mflat
+UrlSuffix(gcc/SPARC-Options.html#index-mflat)
+
+munaligned-doubles
+UrlSuffix(gcc/SPARC-Options.html#index-munaligned-doubles)
+
+mapp-regs
+UrlSuffix(gcc/SPARC-Options.html#index-mapp-regs)
+
+mhard-quad-float
+UrlSuffix(gcc/SPARC-Options.html#index-mhard-quad-float)
+
+msoft-quad-float
+UrlSuffix(gcc/SPARC-Options.html#index-msoft-quad-float)
+
+mlra
+UrlSuffix(gcc/SPARC-Options.html#index-mlra-3)
+
+mv8plus
+UrlSuffix(gcc/SPARC-Options.html#index-mv8plus)
+
+mvis
+UrlSuffix(gcc/SPARC-Options.html#index-mvis)
+
+mvis2
+UrlSuffix(gcc/SPARC-Options.html#index-mvis2)
+
+mvis3
+UrlSuffix(gcc/SPARC-Options.html#index-mvis3)
+
+mvis4
+UrlSuffix(gcc/SPARC-Options.html#index-mvis4)
+
+mvis4b
+UrlSuffix(gcc/SPARC-Options.html#index-mvis4b)
+
+mcbcond
+UrlSuffix(gcc/SPARC-Options.html#index-mcbcond)
+
+mfmaf
+UrlSuffix(gcc/SPARC-Options.html#index-mfmaf)
+
+mfsmuld
+UrlSuffix(gcc/SPARC-Options.html#index-mfsmuld)
+
+mpopc
+UrlSuffix(gcc/SPARC-Options.html#index-mpopc)
+
+msubxc
+UrlSuffix(gcc/SPARC-Options.html#index-msubxc)
+
+m64
+UrlSuffix(gcc/SPARC-Options.html#index-m64-3)
+
+m32
+UrlSuffix(gcc/SPARC-Options.html#index-m32-1)
+
+mstack-bias
+UrlSuffix(gcc/SPARC-Options.html#index-mstack-bias)
+
+mfaster-structs
+UrlSuffix(gcc/SPARC-Options.html#index-mfaster-structs)
+
+; skipping 'mrelax' due to finding no URLs
+
+muser-mode
+UrlSuffix(gcc/SPARC-Options.html#index-muser-mode)
+
+mcpu=
+UrlSuffix(gcc/SPARC-Options.html#index-mcpu-12)
+
+mtune=
+UrlSuffix(gcc/SPARC-Options.html#index-mtune-15)
+
+mcmodel=
+UrlSuffix(gcc/SPARC-Options.html#index-mcmodel-1)
+
+; skipping 'mdebug=' due to finding no URLs
+
+mstd-struct-return
+UrlSuffix(gcc/SPARC-Options.html#index-mstd-struct-return)
+
+mfix-at697f
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-at697f)
+
+mfix-ut699
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut699)
+
+mfix-ut700
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut700)
+
+mfix-gr712rc
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-gr712rc)
+
+mmemory-model=
+UrlSuffix(gcc/SPARC-Options.html#index-mmemory-model)
+
diff --git a/gcc/config/stormy16/stormy16.opt.urls b/gcc/config/stormy16/stormy16.opt.urls
new file mode 100644
index 000000000000..6f47d4c5c180
--- /dev/null
+++ b/gcc/config/stormy16/stormy16.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/stormy16/stormy16.opt and generated HTML
+
+msim
+UrlSuffix(gcc/Xstormy16-Options.html#index-msim-10)
+
diff --git a/gcc/config/v850/v850.opt.urls b/gcc/config/v850/v850.opt.urls
new file mode 100644
index 000000000000..1c367122b908
--- /dev/null
+++ b/gcc/config/v850/v850.opt.urls
@@ -0,0 +1,60 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/v850/v850.opt and generated HTML
+
+; skipping 'mapp-regs' due to finding no URLs
+
+; skipping 'mbig-switch' due to finding no URLs
+
+; skipping 'mdebug' due to finding no URLs
+
+; skipping 'mdisable-callt' due to finding no URLs
+
+; skipping 'mep' due to finding no URLs
+
+; skipping 'mghs' due to finding no URLs
+
+; skipping 'mlong-calls' due to finding no URLs
+
+; skipping 'mprolog-function' due to finding no URLs
+
+; skipping 'msda=' due to finding no URLs
+
+; skipping 'mspace' due to finding no URLs
+
+; skipping 'mtda=' due to finding no URLs
+
+; skipping 'mno-strict-align' due to finding no URLs
+
+; skipping 'mv850' due to finding no URLs
+
+; skipping 'mv850e' due to finding no URLs
+
+; skipping 'mv850e1' due to finding no URLs
+
+; skipping 'mv850es' due to finding no URLs
+
+; skipping 'mv850e2' due to finding no URLs
+
+; skipping 'mv850e2v3' due to finding no URLs
+
+; skipping 'mv850e3v5' due to finding no URLs
+
+; skipping 'mv850e2v4' due to finding no URLs
+
+; skipping 'mloop' due to finding no URLs
+
+; skipping 'mzda=' due to finding no URLs
+
+; skipping 'mrelax' due to finding no URLs
+
+; skipping 'mlong-jumps' due to finding no URLs
+
+; skipping 'msoft-float' due to finding no URLs
+
+; skipping 'mhard-float' due to finding no URLs
+
+; skipping 'mrh850-abi' due to finding no URLs
+
+; skipping 'mgcc-abi' due to finding no URLs
+
+; skipping 'm8byte-align' due to finding no URLs
+
diff --git a/gcc/config/vax/elf.opt.urls b/gcc/config/vax/elf.opt.urls
new file mode 100644
index 000000000000..0903513694b9
--- /dev/null
+++ b/gcc/config/vax/elf.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/elf.opt and generated HTML
+
diff --git a/gcc/config/vax/vax.opt.urls b/gcc/config/vax/vax.opt.urls
new file mode 100644
index 000000000000..7d306faf2fb1
--- /dev/null
+++ b/gcc/config/vax/vax.opt.urls
@@ -0,0 +1,10 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/vax.opt and generated HTML
+
+; skipping 'mg' due to finding no URLs
+
+; skipping 'mgnu' due to finding no URLs
+
+; skipping 'munix' due to finding no URLs
+
+; skipping 'mlra' due to finding no URLs
+
diff --git a/gcc/config/visium/visium.opt.urls b/gcc/config/visium/visium.opt.urls
new file mode 100644
index 000000000000..38ba88dfe612
--- /dev/null
+++ b/gcc/config/visium/visium.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/visium/visium.opt and generated HTML
+
+mdebug
+UrlSuffix(gcc/Visium-Options.html#index-mdebug-2)
+
+msim
+UrlSuffix(gcc/Visium-Options.html#index-msim-9)
+
+mfpu
+UrlSuffix(gcc/Visium-Options.html#index-mfpu-5)
+
+mhard-float
+UrlSuffix(gcc/Visium-Options.html#index-mhard-float-10)
+
+msoft-float
+UrlSuffix(gcc/Visium-Options.html#index-msoft-float-15)
+
+mcpu=
+UrlSuffix(gcc/Visium-Options.html#index-mcpu-13)
+
+mtune=
+UrlSuffix(gcc/Visium-Options.html#index-mtune-16)
+
+msv-mode
+UrlSuffix(gcc/Visium-Options.html#index-msv-mode)
+
+muser-mode
+UrlSuffix(gcc/Visium-Options.html#index-muser-mode-1)
+
diff --git a/gcc/config/vms/vms.opt.urls b/gcc/config/vms/vms.opt.urls
new file mode 100644
index 000000000000..177b281cc774
--- /dev/null
+++ b/gcc/config/vms/vms.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vms/vms.opt and generated HTML
+
+mmalloc64
+UrlSuffix(gcc/VMS-Options.html#index-mmalloc64)
+
+mvms-return-codes
+UrlSuffix(gcc/VMS-Options.html#index-mvms-return-codes)
+
diff --git a/gcc/config/vxworks-smp.opt.urls b/gcc/config/vxworks-smp.opt.urls
new file mode 100644
index 000000000000..0a91011000f8
--- /dev/null
+++ b/gcc/config/vxworks-smp.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks-smp.opt and generated HTML
+
+msmp
+UrlSuffix(gcc/VxWorks-Options.html#index-msmp)
+
diff --git a/gcc/config/vxworks.opt.urls b/gcc/config/vxworks.opt.urls
new file mode 100644
index 000000000000..52888d0d91de
--- /dev/null
+++ b/gcc/config/vxworks.opt.urls
@@ -0,0 +1,20 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks.opt and generated HTML
+
+Bdynamic
+UrlSuffix(gcc/VxWorks-Options.html#index-Bdynamic)
+
+Bstatic
+UrlSuffix(gcc/VxWorks-Options.html#index-Bstatic)
+
+Xbind-lazy
+UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-lazy)
+
+Xbind-now
+UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-now)
+
+mrtp
+UrlSuffix(gcc/VxWorks-Options.html#index-mrtp)
+
+non-static
+UrlSuffix(gcc/VxWorks-Options.html#index-non-static)
+
diff --git a/gcc/config/xtensa/elf.opt.urls b/gcc/config/xtensa/elf.opt.urls
new file mode 100644
index 000000000000..6774adadbf7a
--- /dev/null
+++ b/gcc/config/xtensa/elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/elf.opt and generated HTML
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/xtensa/uclinux.opt.urls b/gcc/config/xtensa/uclinux.opt.urls
new file mode 100644
index 000000000000..bd69ce56d4c6
--- /dev/null
+++ b/gcc/config/xtensa/uclinux.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/uclinux.opt and generated HTML
+
diff --git a/gcc/config/xtensa/xtensa.opt.urls b/gcc/config/xtensa/xtensa.opt.urls
new file mode 100644
index 000000000000..7b23098e77d4
--- /dev/null
+++ b/gcc/config/xtensa/xtensa.opt.urls
@@ -0,0 +1,37 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/xtensa.opt and generated HTML
+
+mconst16
+UrlSuffix(gcc/Xtensa-Options.html#index-mconst16)
+
+mforce-no-pic
+UrlSuffix(gcc/Xtensa-Options.html#index-mforce-no-pic)
+
+mlongcalls
+UrlSuffix(gcc/Xtensa-Options.html#index-mlongcalls)
+
+mextra-l32r-costs=
+UrlSuffix(gcc/Xtensa-Options.html#index-mextra-l32r-costs)
+
+; skipping 'mlra' due to finding no URLs
+
+mtarget-align
+UrlSuffix(gcc/Xtensa-Options.html#index-mtarget-align)
+
+mtext-section-literals
+UrlSuffix(gcc/Xtensa-Options.html#index-mtext-section-literals)
+
+mauto-litpools
+UrlSuffix(gcc/Xtensa-Options.html#index-mauto-litpools)
+
+mserialize-volatile
+UrlSuffix(gcc/Xtensa-Options.html#index-mserialize-volatile)
+
+mabi=call0
+UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dcall0)
+
+mabi=windowed
+UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dwindowed)
+
+mstrict-align
+UrlSuffix(gcc/Xtensa-Options.html#index-mstrict-align-5)
+
diff --git a/gcc/d/lang.opt.urls b/gcc/d/lang.opt.urls
new file mode 100644
index 000000000000..57c14ecc459a
--- /dev/null
+++ b/gcc/d/lang.opt.urls
@@ -0,0 +1,95 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/d/lang.opt and generated HTML
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ)
+
+Waddress
+UrlSuffix(gcc/Warning-Options.html#index-Waddress)
+
+; skipping 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+
+Walloca
+UrlSuffix(gcc/Warning-Options.html#index-Walloca)
+
+Walloca-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d)
+
+Wbuiltin-declaration-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra)
+
+Wunknown-pragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas)
+
+Wvarargs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs)
+
+; skipping 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
+;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
+;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+frtti
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v)
+
diff --git a/gcc/fortran/lang.opt.urls b/gcc/fortran/lang.opt.urls
new file mode 100644
index 000000000000..ef02437d1a34
--- /dev/null
+++ b/gcc/fortran/lang.opt.urls
@@ -0,0 +1,153 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/fortran/lang.opt and generated HTML
+
+A
+UrlSuffix(gcc/Preprocessor-Options.html#index-A)
+
+C
+UrlSuffix(gcc/Preprocessor-Options.html#index-C)
+
+CC
+UrlSuffix(gcc/Preprocessor-Options.html#index-CC)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+U
+UrlSuffix(gcc/Preprocessor-Options.html#index-U)
+
+; skipping 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+
+Wdate-time
+UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
+
+Wconversion
+UrlSuffix(gcc/Warning-Options.html#index-Wconversion)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wmissing-include-dirs
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
+
+Wopenacc-parallelism
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
+
+Wopenmp-simd
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+; skipping 'nocpp' due to finding no URLs
+
+; skipping 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+fopenacc
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc)
+
+fopenacc-dim=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
+
+fopenmp
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp)
+
+fopenmp-simd
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd)
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+; skipping 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v)
+
diff --git a/gcc/go/lang.opt.urls b/gcc/go/lang.opt.urls
new file mode 100644
index 000000000000..f09a169c2d36
--- /dev/null
+++ b/gcc/go/lang.opt.urls
@@ -0,0 +1,15 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/go/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L)
+
+; skipping 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
diff --git a/gcc/lto/lang.opt.urls b/gcc/lto/lang.opt.urls
new file mode 100644
index 000000000000..f7509c8211ec
--- /dev/null
+++ b/gcc/lto/lang.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/lto/lang.opt and generated HTML
+
+flinker-output=
+UrlSuffix(gcc/Link-Options.html#index-flinker-output)
+
+help
+UrlSuffix(gcc/Overall-Options.html#index-help)
+
diff --git a/gcc/m2/lang.opt.urls b/gcc/m2/lang.opt.urls
new file mode 100644
index 000000000000..080f40dd9069
--- /dev/null
+++ b/gcc/m2/lang.opt.urls
@@ -0,0 +1,110 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/m2/lang.opt and generated HTML
+
+; skipping 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter)
+
+B
+UrlSuffix(gcc/Directory-Options.html#index-B)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD)
+
+Mno-modules
+UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+; skipping 'ansi' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
+;   duplicate: 'gcc/Non-bugs.html#index-ansi-3'
+;   duplicate: 'gcc/Other-Builtins.html#index-ansi-2'
+;   duplicate: 'gcc/Standards.html#index-ansi'
+
+; skipping 'c' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-c-1'
+;   duplicate: 'gcc/Overall-Options.html#index-c'
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib)
+
+save-temps
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+save-temps=
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+traditional-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp)
+
diff --git a/gcc/params.opt.urls b/gcc/params.opt.urls
new file mode 100644
index 000000000000..e76310c6ac04
--- /dev/null
+++ b/gcc/params.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/params.opt and generated HTML
+
diff --git a/gcc/rust/lang.opt.urls b/gcc/rust/lang.opt.urls
new file mode 100644
index 000000000000..c670a8553b25
--- /dev/null
+++ b/gcc/rust/lang.opt.urls
@@ -0,0 +1,27 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/rust/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L)
+
+; skipping 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-result
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
-- 
2.26.3


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

* [PATCH 3/3] diagnostics: use the .opt.urls files to urlify quoted text
  2023-11-10 21:42 [PATCH 0/3] Option handling: add documentation URLs David Malcolm
  2023-11-10 21:42 ` [PATCH 1/3] options: add gcc/regenerate-opt-urls.py David Malcolm
  2023-11-10 21:42 ` [PATCH 2/3] Add generated .opt.urls files David Malcolm
@ 2023-11-10 21:42 ` David Malcolm
  2023-11-14 17:44   ` Arthur Cohen
  2023-11-14  0:12 ` [PATCH 0/3] Option handling: add documentation URLs Joseph Myers
  3 siblings, 1 reply; 47+ messages in thread
From: David Malcolm @ 2023-11-10 21:42 UTC (permalink / raw)
  To: gcc-patches, Joseph Myers; +Cc: David Malcolm

This patch adds machinery for using the .opt.urls files linking
to the documentation of our options in gcc_urlifier.

For every enabled .opt file, the corresponding .opt.urls file
will also be used when constructing the "optionslist" file.
The patch adds a new awk script to process the optionslist file,
options-urls-cc-gen.awk, which generates a options-urls.cc file,
containing a big array of const char * of the form:

const char * const opt_url_suffixes[] =
{
 [...snip...]

 /* [563] (OPT_Wclass_memaccess) = */
    "gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess",
 /* [564] (OPT_Wclobbered) = */
    "gcc/Warning-Options.html#index-Wclobbered",

[...snip...]
};

The patch wires up gcc_urlifier so that for quoted strings beginning
with '-' it will look up the option, and, if found, build a URL
using one of the above suffixes.

For example, given:

  ./xgcc -B. -S t.c -Wctad-maybe-unsupported
  cc1: warning: command-line option ‘-Wctad-maybe-unsupported’ is valid for C++/ObjC++ but not for C

the quoted string -Wctad-maybe-unsupported is automatically URLified in
my terminal to:
	https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported

This approach seems to allow us to get URLs automatically from the
documentation, whilst:
- integrating with the existing .opt mechanisms but keeping
autogenerated material (.opt.urls) separate from human-maintained
files (.opt)
- not adding any build-time requirements (by using awk at build time)
- only requiring Python 3 when regenerating the in-tree opt.urls files,
when the .texi or .opt files change enough to warrant it

gcc/ChangeLog:
	* Makefile.in (ALL_OPT_URL_FILES): New.
	(GCC_OBJS): Add options-urls.o.
	(OBJS): Likewise.
	(OBJS-libcommon): Likewise.
	(s-options): Depend on $(ALL_OPT_URL_FILES), and add this to
	inputs to opt-gather.awk.
	(options-urls.cc): New Makefile target.
	* gcc-urlifier.cc: Include "opts.h" and "options.h".
	(gcc_urlifier::gcc_urlifier): Add lang_mask param.
	(gcc_urlifier::m_lang_mask): New field.
	(doc_urls): Make static.
	(gcc_urlifier::get_url_for_quoted_text): Use label_text.
	(gcc_urlifier::get_url_suffix_for_quoted_text): Use label_text.
	Look for an option by name before trying a binary search in
	doc_urls.
	(gcc_urlifier::get_url_suffix_for_quoted_text): Use label_text.
	(gcc_urlifier::get_url_suffix_for_option): New.
	(make_gcc_urlifier): Add lang_mask param.
	(selftest::gcc_urlifier_cc_tests): Update for above changes.
	Verify that a URL is found for "-fpack-struct".
	* gcc-urlifier.def: Drop options "--version" and "-fpack-struct".
	* gcc-urlifier.h (make_gcc_urlifier): Add lang_mask param.
	* gcc.cc (driver::global_initializations): Pass 0 for lang_mask
	to make_gcc_urlifier.
	* opt-functions.awk (url_suffix): New function.
	* options-urls-cc-gen.awk: New file.
	* opts.cc (get_option_html_page): Remove special-casing for
	analyzer and LTO.
	(get_option_url_suffix): New.
	(get_option_url): Reimplement.
	(selftest::test_get_option_html_page): Rename to...
	(selftest::test_get_option_url_suffix): ...this and update for
	above changes.
	(selftest::opts_cc_tests): Update for renaming.
	* opts.h (opt_url_suffixes): New decl.
	(get_option_url_suffix): New decl.

gcc/testsuite/ChangeLog:
	* lib/gcc-dg.exp: Set TERM to xterm.

gcc/ChangeLog:
	* toplev.cc (general_init): Pass global_dc->m_lang_mask to
	make_gcc_urlifier.
---
 gcc/Makefile.in              |  18 ++++--
 gcc/gcc-urlifier.cc          | 106 ++++++++++++++++++++++++++++-------
 gcc/gcc-urlifier.def         |   2 -
 gcc/gcc-urlifier.h           |   2 +-
 gcc/gcc.cc                   |   2 +-
 gcc/opt-functions.awk        |   7 +++
 gcc/options-urls-cc-gen.awk  |  79 ++++++++++++++++++++++++++
 gcc/opts.cc                  |  75 ++++++++++++++-----------
 gcc/opts.h                   |   4 ++
 gcc/testsuite/lib/gcc-dg.exp |   6 ++
 gcc/toplev.cc                |   2 +-
 11 files changed, 242 insertions(+), 61 deletions(-)
 create mode 100644 gcc/options-urls-cc-gen.awk

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 29cec21c8258..ebb59680d69b 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1270,6 +1270,8 @@ FLAGS_TO_PASS = \
 # All option source files
 ALL_OPT_FILES=$(lang_opt_files) $(extra_opt_files)
 
+ALL_OPT_URL_FILES=$(patsubst %, %.urls, $(ALL_OPT_FILES))
+
 # Target specific, C specific object file
 C_TARGET_OBJS=@c_target_objs@
 
@@ -1286,7 +1288,7 @@ FORTRAN_TARGET_OBJS=@fortran_target_objs@
 RUST_TARGET_OBJS=@rust_target_objs@
 
 # Object files for gcc many-languages driver.
-GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o
+GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o options-urls.o
 
 c-family-warn = $(STRICT_WARN)
 
@@ -1606,6 +1608,7 @@ OBJS = \
 	optinfo.o \
 	optinfo-emit-json.o \
 	options-save.o \
+	options-urls.o \
 	opts-global.o \
 	ordered-hash-map-tests.o \
 	passes.o \
@@ -1832,7 +1835,8 @@ OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
 # compiler and containing target-dependent code.
 OBJS-libcommon-target = $(common_out_object_file) prefix.o \
 	opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \
-	hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o
+	hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o \
+	options-urls.o
 
 # This lists all host objects for the front ends.
 ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS))
@@ -2435,9 +2439,9 @@ s-specs : Makefile
 	$(STAMP) s-specs
 
 optionlist: s-options ; @true
-s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
+s-options: $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) Makefile $(srcdir)/opt-gather.awk
 	LC_ALL=C ; export LC_ALL ; \
-	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) > tmp-optionlist
+	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) > tmp-optionlist
 	$(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist
 	$(STAMP) s-options
 
@@ -2453,6 +2457,12 @@ options-save.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
 	       -f $(srcdir)/optc-save-gen.awk \
 	       -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
 
+options-urls.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
+    $(srcdir)/options-urls-cc-gen.awk
+	$(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/opt-read.awk \
+	       -f $(srcdir)/options-urls-cc-gen.awk \
+	       -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
+
 options.h: s-options-h ; @true
 s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
     $(srcdir)/opth-gen.awk
diff --git a/gcc/gcc-urlifier.cc b/gcc/gcc-urlifier.cc
index 0dbff9853132..da704bf814ad 100644
--- a/gcc/gcc-urlifier.cc
+++ b/gcc/gcc-urlifier.cc
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "pretty-print.h"
 #include "pretty-print-urlifier.h"
 #include "gcc-urlifier.h"
+#include "opts.h"
+#include "options.h"
 #include "selftest.h"
 
 namespace {
@@ -34,23 +36,34 @@ namespace {
 class gcc_urlifier : public urlifier
 {
 public:
+  gcc_urlifier (unsigned int lang_mask)
+  : m_lang_mask (lang_mask)
+  {}
+
   char *get_url_for_quoted_text (const char *p, size_t sz) const final override;
 
-  const char *get_url_suffix_for_quoted_text (const char *p, size_t sz) const;
+  label_text get_url_suffix_for_quoted_text (const char *p, size_t sz) const;
   /* We use ATTRIBUTE_UNUSED as this helper is called only from ASSERTs.  */
-  const char *get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED;
+  label_text get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED;
 
 private:
+  label_text get_url_suffix_for_option (const char *p, size_t sz) const;
+
   static char *
   make_doc_url (const char *doc_url_suffix);
+
+  unsigned int m_lang_mask;
 };
 
 /* class gcc_urlifier : public urlifier.  */
 
+/* Manage a hard-coded mapping from quoted string to URL suffixes
+   in gcc-urlifier.def  */
+
 #define DOC_URL(QUOTED_TEXT, URL_SUFFIX) \
   { (QUOTED_TEXT), (URL_SUFFIX) }
 
-const struct
+static const struct
 {
   const char *quoted_text;
   const char *url_suffix;
@@ -60,32 +73,53 @@ const struct
 
 };
 
+/* Implementation of urlifier::get_url_for_quoted_text vfunc for GCC
+   diagnostics.  */
+
 char *
 gcc_urlifier::get_url_for_quoted_text (const char *p, size_t sz) const
 {
-  if (const char *url_suffix = get_url_suffix_for_quoted_text (p, sz))
-    return make_doc_url (url_suffix);
+  label_text url_suffix = get_url_suffix_for_quoted_text (p, sz);
+  if (url_suffix.get ())
+    return make_doc_url (url_suffix.get ());
   return nullptr;
 }
 
-const char *
+/* Look for a URL for the quoted string (P, SZ).
+   Return the url suffix if found, or nullptr otherwise.  */
+
+label_text
 gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const
 {
-  /* Binary search.  This assumes that the quoted_text fields of doc_urls
+  if (sz == 0)
+    return label_text ();
+
+  /* If this is an option, look up the option and see if we have
+     a URL for it.  */
+  if (p[0] == '-')
+    {
+      label_text suffix = get_url_suffix_for_option (p, sz);
+      if (suffix.get ())
+	return suffix;
+    }
+
+  /* Otherwise, look within the hard-coded data table in gcc-urlifier.def.
+
+     Binary search.  This assumes that the quoted_text fields of doc_urls
      are in sorted order.  */
   int min = 0;
   int max = ARRAY_SIZE (doc_urls) - 1;
   while (true)
     {
       if (min > max)
-	return nullptr;
+	return label_text ();
       int midpoint = (min + max) / 2;
       gcc_assert ((size_t)midpoint < ARRAY_SIZE (doc_urls));
       int cmp = strncmp (p, doc_urls[midpoint].quoted_text, sz);
       if (cmp == 0)
 	{
 	  if (doc_urls[midpoint].quoted_text[sz] == '\0')
-	    return doc_urls[midpoint].url_suffix;
+	    return label_text::borrow (doc_urls[midpoint].url_suffix);
 	  else
 	    max = midpoint - 1;
 	}
@@ -94,15 +128,45 @@ gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const
       else
 	min = midpoint + 1;
     }
-  return nullptr;
+
+  /* Not found.  */
+  return label_text ();
 }
 
-const char *
+/* For use in selftests.  */
+
+label_text
 gcc_urlifier::get_url_suffix_for_quoted_text (const char *p) const
 {
   return get_url_suffix_for_quoted_text (p, strlen (p));
 }
 
+/* Look for a URL for the quoted string (P, SZ) that appears to be
+   an option.
+   Return the url suffix if found, or nullptr otherwise.  */
+
+label_text
+gcc_urlifier::get_url_suffix_for_option (const char *p, size_t sz) const
+{
+  /* Look up this option
+
+     find_opt does a binary search, taking a 0-terminated string,
+     and skipping the leading '-'.
+
+     We have a (pointer,size) pair that doesn't necessarily have a
+     terminator, so create a 0-terminated clone of the string.  */
+  gcc_assert (sz > 0);
+  char *tmp = xstrndup (p + 1, sz - 1); // skip the leading '-'
+  size_t opt = find_opt (tmp, m_lang_mask);
+  free (tmp);
+
+  if (opt >= N_OPTS)
+    /* Option not recognized.  */
+    return label_text ();
+
+  return get_option_url_suffix (opt);
+}
+
 char *
 gcc_urlifier::make_doc_url (const char *doc_url_suffix)
 {
@@ -115,9 +179,9 @@ gcc_urlifier::make_doc_url (const char *doc_url_suffix)
 } // anonymous namespace
 
 urlifier *
-make_gcc_urlifier ()
+make_gcc_urlifier (unsigned int lang_mask)
 {
-  return new gcc_urlifier ();
+  return new gcc_urlifier (lang_mask);
 }
 
 #if CHECKING_P
@@ -137,22 +201,26 @@ gcc_urlifier_cc_tests ()
 			doc_urls[idx].quoted_text)
 		< 0);
 
-  gcc_urlifier u;
+  gcc_urlifier u (0);
 
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text (""), nullptr);
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text (")"), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("").get (), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text (")").get (), nullptr);
 
-  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message"),
+  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message").get (),
 		"gcc/Diagnostic-Pragmas.html");
 
   // Incomplete prefix of a quoted_text
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess"), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess").get (), nullptr);
 
   /* Check that every element is findable.  */
   for (size_t idx = 0; idx < ARRAY_SIZE (doc_urls); idx++)
     ASSERT_STREQ
-      (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text),
+      (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text).get (),
        doc_urls[idx].url_suffix);
+
+  /* Check an option.  */
+  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("-fpack-struct").get (),
+		"gcc/Code-Gen-Options.html#index-fpack-struct");
 }
 
 } // namespace selftest
diff --git a/gcc/gcc-urlifier.def b/gcc/gcc-urlifier.def
index 360de930e9ec..de6d9a3eb962 100644
--- a/gcc/gcc-urlifier.def
+++ b/gcc/gcc-urlifier.def
@@ -16,5 +16,3 @@ DOC_URL ("#pragma pack", "gcc/Structure-Layout-Pragmas.html"),
 DOC_URL ("#pragma redefine_extname", "gcc/Symbol-Renaming-Pragmas.html"),
 DOC_URL ("#pragma scalar_storage_order", "gcc/Structure-Layout-Pragmas.html"),
 DOC_URL ("#pragma weak", "gcc/Weak-Pragmas.html"),
-DOC_URL ("--version", "gcc/Overall-Options.html#index-version"),
-DOC_URL ("-fpack-struct", "gcc/Code-Gen-Options.html#index-fpack-struct"),
diff --git a/gcc/gcc-urlifier.h b/gcc/gcc-urlifier.h
index 614e1c64b94d..77eb13463928 100644
--- a/gcc/gcc-urlifier.h
+++ b/gcc/gcc-urlifier.h
@@ -21,6 +21,6 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_GCC_URLIFIER_H
 #define GCC_GCC_URLIFIER_H
 
-extern urlifier *make_gcc_urlifier ();
+extern urlifier *make_gcc_urlifier (unsigned int lang_mask);
 
 #endif /* GCC_GCC_URLIFIER_H */
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 51120c1489e3..781cb343f18b 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -8292,7 +8292,7 @@ driver::global_initializations ()
   diagnostic_initialize (global_dc, 0);
   diagnostic_color_init (global_dc);
   diagnostic_urls_init (global_dc);
-  global_dc->set_urlifier (make_gcc_urlifier ());
+  global_dc->set_urlifier (make_gcc_urlifier (0));
 
 #ifdef GCC_DRIVER_HOST_INITIALIZATION
   /* Perform host dependent initialization when needed.  */
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
index a58e93815e30..794aee74af8e 100644
--- a/gcc/opt-functions.awk
+++ b/gcc/opt-functions.awk
@@ -193,6 +193,13 @@ function var_name(flags)
 	return nth_arg(0, opt_args("Var", flags))
 }
 
+# If FLAGS includes a UrlSuffix flag, return the value it specifies.
+# Return the empty string otherwise.
+function url_suffix(flags)
+{
+	return nth_arg(0, opt_args("UrlSuffix", flags))
+}
+
 # Return the name of the variable if FLAGS has a HOST_WIDE_INT variable. 
 # Return the empty string otherwise.
 function host_wide_int_var_name(flags)
diff --git a/gcc/options-urls-cc-gen.awk b/gcc/options-urls-cc-gen.awk
new file mode 100644
index 000000000000..3c23a646a76d
--- /dev/null
+++ b/gcc/options-urls-cc-gen.awk
@@ -0,0 +1,79 @@
+#  Copyright (C) 2023 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3, or (at your option) any
+# later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# This Awk script reads in the option records generated from 
+# opt-gather.awk, and generates a C++ file containing an array
+# of URL suffixes (possibly NULL), one per option.
+
+# This program uses functions from opt-functions.awk and code from
+# opt-read.awk.
+#
+# Usage: awk -f opt-functions.awk -f opt-read.awk -f options-urls-cc-gen.awk \
+#            [-v header_name=header.h] < inputfile > options-urls.cc
+
+END {
+
+
+print "/* This file is auto-generated by options-urls-cc-gen.awk.  */"
+print ""
+n_headers = split(header_name, headers, " ")
+for (i = 1; i <= n_headers; i++)
+	print "#include " quote headers[i] quote
+print "#include " quote "opts.h" quote
+print "#include " quote "intl.h" quote
+print "#include " quote "insn-attr-common.h" quote
+print ""
+
+if (n_extra_c_includes > 0) {
+	for (i = 0; i < n_extra_c_includes; i++) {
+		print "#include " quote extra_c_includes[i] quote
+	}
+	print ""
+}
+
+print "const char * const opt_url_suffixes[] =\n{"
+
+optindex = 0
+for (i = 0; i < n_opts; i++) {
+	# With identical flags, pick only the last one.  The
+	# earlier loop ensured that it has all flags merged,
+	# and a nonempty help text if one of the texts was nonempty.
+	while( i + 1 != n_opts && opts[i] == opts[i + 1] ) {
+		i++;
+	}
+
+	len = length (opts[i]);
+	enum = opt_enum(opts[i])
+
+	s = substr("                                  ", length (opts[i]))
+	if (i + 1 == n_opts)
+		comma = ""
+
+	u = url_suffix(flags[i])
+	if (u == "")
+		c_str = "NULL"
+	else
+		c_str = quote u quote;
+
+	printf(" /* [%i] (%s) = */\n", optindex, opt_enum(opts[i]))
+	printf("    %s%s\n", c_str, comma)
+
+	# Bump up the informational option index.
+	++optindex
+ }
+
+print "};"
+}
diff --git a/gcc/opts.cc b/gcc/opts.cc
index 32fdfc3e3ce1..87f041386264 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -3647,14 +3647,6 @@ get_option_html_page (int option_index)
 {
   const cl_option *cl_opt = &cl_options[option_index];
 
-  /* Analyzer options are on their own page.  */
-  if (strstr (cl_opt->opt_text, "analyzer-"))
-    return "gcc/Static-Analyzer-Options.html";
-
-  /* Handle -flto= option.  */
-  if (strstr (cl_opt->opt_text, "flto"))
-    return "gcc/Optimize-Options.html";
-
 #ifdef CL_Fortran
   if ((cl_opt->flags & CL_Fortran) != 0
       /* If it is option common to both C/C++ and Fortran, it is documented
@@ -3667,7 +3659,30 @@ get_option_html_page (int option_index)
     return "gfortran/Error-and-Warning-Options.html";
 #endif
 
-  return "gcc/Warning-Options.html";
+  return nullptr;
+}
+
+/* Get the url within the documentation for this option, or NULL.  */
+
+label_text
+get_option_url_suffix (int option_index)
+{
+  if (const char *url = opt_url_suffixes[option_index])
+    return label_text::borrow (url);
+
+  /* Fallback code for some options that aren't handled byt opt_url_suffixes
+     e.g. links below "gfortran/".  */
+  if (const char *html_page = get_option_html_page (option_index))
+    return label_text::take
+      (concat (html_page,
+	       /* Expect an anchor of the form "index-Wfoo" e.g.
+		  <a name="index-Wformat"></a>, and thus an id within
+		  the page of "#index-Wformat".  */
+	       "#index",
+	       cl_options[option_index].opt_text,
+	       NULL));
+
+  return label_text ();
 }
 
 /* Return malloced memory for a URL describing the option OPTION_INDEX
@@ -3677,22 +3692,13 @@ char *
 get_option_url (diagnostic_context *, int option_index)
 {
   if (option_index)
-    return concat (/* DOCUMENTATION_ROOT_URL should be supplied via
-		      #include "config.h" (see --with-documentation-root-url),
-		      and should have a trailing slash.  */
-		   DOCUMENTATION_ROOT_URL,
-
-		   /* get_option_html_page will return something like
-		      "gcc/Warning-Options.html".  */
-		   get_option_html_page (option_index),
-
-		   /* Expect an anchor of the form "index-Wfoo" e.g.
-		      <a name="index-Wformat"></a>, and thus an id within
-		      the URL of "#index-Wformat".  */
-		   "#index", cl_options[option_index].opt_text,
-		   NULL);
-  else
-    return NULL;
+    {
+      label_text url_suffix = get_option_url_suffix (option_index);
+      if (url_suffix.get ())
+	return concat (DOCUMENTATION_ROOT_URL, url_suffix.get (), nullptr);
+    }
+
+  return nullptr;
 }
 
 /* Return a heap allocated producer with command line options.  */
@@ -3823,17 +3829,20 @@ gen_producer_string (const char *language_string, cl_decoded_option *options,
 
 namespace selftest {
 
-/* Verify that get_option_html_page works as expected.  */
+/* Verify that get_option_url_suffix works as expected.  */
 
 static void
-test_get_option_html_page ()
+test_get_option_url_suffix ()
 {
-  ASSERT_STREQ (get_option_html_page (OPT_Wcpp), "gcc/Warning-Options.html");
-  ASSERT_STREQ (get_option_html_page (OPT_Wanalyzer_double_free),
-	     "gcc/Static-Analyzer-Options.html");
+  ASSERT_STREQ (get_option_url_suffix (OPT_Wcpp).get (),
+		"gcc/Warning-Options.html#index-Wcpp");
+  ASSERT_STREQ (get_option_url_suffix (OPT_Wanalyzer_double_free).get (),
+	     "gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free");
+
 #ifdef CL_Fortran
-  ASSERT_STREQ (get_option_html_page (OPT_Wline_truncation),
-		"gfortran/Error-and-Warning-Options.html");
+  ASSERT_STREQ
+    (get_option_url_suffix (OPT_Wline_truncation).get (),
+     "gfortran/Error-and-Warning-Options.html#index-Wline-truncation");
 #endif
 }
 
@@ -3896,7 +3905,7 @@ test_enum_sets ()
 void
 opts_cc_tests ()
 {
-  test_get_option_html_page ();
+  test_get_option_url_suffix ();
   test_enum_sets ();
 }
 
diff --git a/gcc/opts.h b/gcc/opts.h
index 00f377f9ca7e..97668e7d9206 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -152,6 +152,7 @@ struct cl_option_state {
 
 extern const struct cl_option cl_options[];
 extern const unsigned int cl_options_count;
+extern const char *const opt_url_suffixes[];
 #ifdef ENABLE_PLUGIN
 extern const struct cl_var cl_vars[];
 #endif
@@ -564,4 +565,7 @@ struct switchstr
   bool ordering;
 };
 
+extern label_text
+get_option_url_suffix (int option_index);
+
 #endif
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 28529f57ef60..30642a72b756 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -46,6 +46,12 @@ if { [ishost "*-*-cygwin*"] } {
   setenv LANG C.ASCII
 }
 
+# Set TERM to xterm to ensure that URL escapes are disabled.
+# This avoids issues where a diagnostic which could embed a URL
+# is emitted before -fdiagnostics-plain-output is handled, where
+# otherwise the output could be affected by the environment.
+setenv TERM xterm
+
 # Avoid sporadic data-losses with expect
 match_max -d 10000
 
diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index d8e8978dd555..7a0d808b8c83 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -1049,7 +1049,7 @@ general_init (const char *argv0, bool init_signals)
   global_dc->m_option_state = &global_options;
   global_dc->m_option_name = option_name;
   global_dc->m_get_option_url = get_option_url;
-  global_dc->set_urlifier (make_gcc_urlifier ());
+  global_dc->set_urlifier (make_gcc_urlifier (global_dc->m_lang_mask));
 
   if (init_signals)
     {
-- 
2.26.3


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

* Re: [PATCH 2/3] Add generated .opt.urls files
  2023-11-10 21:42 ` [PATCH 2/3] Add generated .opt.urls files David Malcolm
@ 2023-11-12 10:56   ` Iain Buclaw
  2023-11-13 14:07     ` David Malcolm
  2023-11-13 13:11   ` Marc Poulhiès
  1 sibling, 1 reply; 47+ messages in thread
From: Iain Buclaw @ 2023-11-12 10:56 UTC (permalink / raw)
  To: David Malcolm, gcc-patches, Joseph Myers

Excerpts from David Malcolm's message of November 10, 2023 10:42 pm:
> gcc/d/ChangeLog:
> 	* lang.opt.urls: New file, autogenerated by
> 	regenerate-opt-urls.py.
> ---
>  gcc/d/lang.opt.urls                          |   95 +
>  create mode 100644 gcc/d/lang.opt.urls
> 

[abridged view of patch]

> diff --git a/gcc/d/lang.opt.urls b/gcc/d/lang.opt.urls
> new file mode 100644
> index 000000000000..57c14ecc459a
> --- /dev/null
> +++ b/gcc/d/lang.opt.urls
> @@ -0,0 +1,95 @@
> +; Autogenerated by regenerate-opt-urls.py from gcc/d/lang.opt and generated HTML
> +
> +H
> +UrlSuffix(gcc/Preprocessor-Options.html#index-H)
> +
> +I
> +UrlSuffix(gcc/Directory-Options.html#index-I)
> +
> +M
> +UrlSuffix(gcc/Preprocessor-Options.html#index-M)
> +
> +MD
> +UrlSuffix(gcc/Preprocessor-Options.html#index-MD)
> +
> +MF
> +UrlSuffix(gcc/Preprocessor-Options.html#index-MF)
> +
> +MG
> +UrlSuffix(gcc/Preprocessor-Options.html#index-MG)
> +
> +MM
> +UrlSuffix(gcc/Preprocessor-Options.html#index-MM)
> +
> +MMD
> +UrlSuffix(gcc/Preprocessor-Options.html#index-MMD)
> +
> +MP
> +UrlSuffix(gcc/Preprocessor-Options.html#index-MP)
> +
> +MT
> +UrlSuffix(gcc/Preprocessor-Options.html#index-MT)
> +
> +MQ
> +UrlSuffix(gcc/Preprocessor-Options.html#index-MQ)
> +
> +Waddress
> +UrlSuffix(gcc/Warning-Options.html#index-Waddress)
> +
> +; skipping 'Wall' due to multiple URLs:
> +;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
> +;   duplicate: 'gcc/Warning-Options.html#index-Wall'
> +
> +Walloca
> +UrlSuffix(gcc/Warning-Options.html#index-Walloca)
> +
> +Walloca-larger-than=
> +UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d)
> +
> +Wbuiltin-declaration-mismatch
> +UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch)
> +
> +Wdeprecated
> +UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated)
> +
> +Werror
> +UrlSuffix(gcc/Warning-Options.html#index-Werror)
> +
> +Wextra
> +UrlSuffix(gcc/Warning-Options.html#index-Wextra)
> +
> +Wunknown-pragmas
> +UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas)
> +
> +Wvarargs
> +UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs)
> +
> +; skipping 'fbuiltin' due to multiple URLs:
> +;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
> +;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
> +;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
> +
> +fexceptions
> +UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
> +
> +frtti
> +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti)
> +
> +imultilib
> +UrlSuffix(gcc/Directory-Options.html#index-imultilib)
> +
> +iprefix
> +UrlSuffix(gcc/Directory-Options.html#index-iprefix)
> +
> +isysroot
> +UrlSuffix(gcc/Directory-Options.html#index-isysroot)
> +
> +isystem
> +UrlSuffix(gcc/Directory-Options.html#index-isystem)
> +
> +nostdinc
> +UrlSuffix(gcc/Directory-Options.html#index-nostdinc)
> +
> +v
> +UrlSuffix(gcc/Overall-Options.html#index-v)
> +
> -- 
> 2.26.3
> 
> 

So I see this focuses on only adding URLs for common options, or options
that relate to C/C++ family, but may be handled by other front-ends too?

To pick out one, you have:

    frtti
    UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti)

It looks like it could could alternatively be

    frtti
    UrlSuffix(gdc/Runtime-Options.html#index-frtti)

Or are other front-ends having URLs to their language-specific
documentation pages not supported for the same reason as why they can't
add self-documentation to their own options if another front-end
(typically C/C++) also makes claim to the option?

    frtti
    D 
    ; Documented in C


I'm OK with the D parts regardless of this observation.

Thanks,
Iain.

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

* Re: [PATCH 2/3] Add generated .opt.urls files
  2023-11-10 21:42 ` [PATCH 2/3] Add generated .opt.urls files David Malcolm
  2023-11-12 10:56   ` Iain Buclaw
@ 2023-11-13 13:11   ` Marc Poulhiès
  2023-11-13 14:07     ` David Malcolm
  1 sibling, 1 reply; 47+ messages in thread
From: Marc Poulhiès @ 2023-11-13 13:11 UTC (permalink / raw)
  To: David Malcolm; +Cc: Joseph Myers, gcc-patches


David Malcolm <dmalcolm@redhat.com> writes:

> gcc/ada/ChangeLog:
> 	* gcc-interface/lang.opt.urls: New file, autogenerated by
> 	regenerate-opt-urls.py.


> diff --git a/gcc/ada/gcc-interface/lang.opt.urls b/gcc/ada/gcc-interface/lang.opt.urls
> new file mode 100644
> index 000000000000..e24210bcb12a
> --- /dev/null
> +++ b/gcc/ada/gcc-interface/lang.opt.urls
> @@ -0,0 +1,28 @@
> +; Autogenerated by regenerate-opt-urls.py from gcc/ada/gcc-interface/lang.opt and generated HTML
> +
> +I
> +UrlSuffix(gcc/Directory-Options.html#index-I)
> +
> +; skipping 'Wall' due to multiple URLs:
> +;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
> +;   duplicate: 'gcc/Warning-Options.html#index-Wall'
> +
> +nostdinc
> +UrlSuffix(gcc/Directory-Options.html#index-nostdinc)
> +
> +nostdlib
> +UrlSuffix(gcc/Link-Options.html#index-nostdlib)
> +
> +; skipping 'fshort-enums' due to multiple URLs:
> +;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
> +;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
> +;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
> +
> +; skipping 'fsigned-char' due to multiple URLs:
> +;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
> +;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
> +
> +; skipping 'funsigned-char' due to multiple URLs:
> +;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
> +;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'

Hello David,

This looks very nice, thanks!

I wonder why the Ada frontend only gets I, nostdinc and nostdlib
URLified to the common gcc doc.

Is it possible that your doc scrapper doesn't match the option in the
Ada doc? We are documenting nostdlib, nostdinc and I, so I would also
expect a "multiple URLs" for these. We are generating the texinfo files
from sphinx, so maybe we could adjust the script to also match what the
sphinx generator produces?

Thanks,
Marc

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

* Re: [PATCH 2/3] Add generated .opt.urls files
  2023-11-12 10:56   ` Iain Buclaw
@ 2023-11-13 14:07     ` David Malcolm
  0 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-13 14:07 UTC (permalink / raw)
  To: Iain Buclaw, gcc-patches, Joseph Myers

On Sun, 2023-11-12 at 11:56 +0100, Iain Buclaw wrote:
> Excerpts from David Malcolm's message of November 10, 2023 10:42 pm:
> > gcc/d/ChangeLog:
> >         * lang.opt.urls: New file, autogenerated by
> >         regenerate-opt-urls.py.
> > ---
> >  gcc/d/lang.opt.urls                          |   95 +
> >  create mode 100644 gcc/d/lang.opt.urls
> > 
> 
> [abridged view of patch]
> 
> > diff --git a/gcc/d/lang.opt.urls b/gcc/d/lang.opt.urls
> > new file mode 100644
> > index 000000000000..57c14ecc459a
> > --- /dev/null
> > +++ b/gcc/d/lang.opt.urls
> > @@ -0,0 +1,95 @@
> > +; Autogenerated by regenerate-opt-urls.py from gcc/d/lang.opt and
> > generated HTML
> > +
> > +H
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-H)
> > +
> > +I
> > +UrlSuffix(gcc/Directory-Options.html#index-I)
> > +
> > +M
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-M)
> > +
> > +MD
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-MD)
> > +
> > +MF
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-MF)
> > +
> > +MG
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-MG)
> > +
> > +MM
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-MM)
> > +
> > +MMD
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-MMD)
> > +
> > +MP
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-MP)
> > +
> > +MT
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-MT)
> > +
> > +MQ
> > +UrlSuffix(gcc/Preprocessor-Options.html#index-MQ)
> > +
> > +Waddress
> > +UrlSuffix(gcc/Warning-Options.html#index-Waddress)
> > +
> > +; skipping 'Wall' due to multiple URLs:
> > +;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
> > +;   duplicate: 'gcc/Warning-Options.html#index-Wall'
> > +
> > +Walloca
> > +UrlSuffix(gcc/Warning-Options.html#index-Walloca)
> > +
> > +Walloca-larger-than=
> > +UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d)
> > +
> > +Wbuiltin-declaration-mismatch
> > +UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-
> > mismatch)
> > +
> > +Wdeprecated
> > +UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated)
> > +
> > +Werror
> > +UrlSuffix(gcc/Warning-Options.html#index-Werror)
> > +
> > +Wextra
> > +UrlSuffix(gcc/Warning-Options.html#index-Wextra)
> > +
> > +Wunknown-pragmas
> > +UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas)
> > +
> > +Wvarargs
> > +UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs)
> > +
> > +; skipping 'fbuiltin' due to multiple URLs:
> > +;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
> > +;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
> > +;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
> > +
> > +fexceptions
> > +UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
> > +
> > +frtti
> > +UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti)
> > +
> > +imultilib
> > +UrlSuffix(gcc/Directory-Options.html#index-imultilib)
> > +
> > +iprefix
> > +UrlSuffix(gcc/Directory-Options.html#index-iprefix)
> > +
> > +isysroot
> > +UrlSuffix(gcc/Directory-Options.html#index-isysroot)
> > +
> > +isystem
> > +UrlSuffix(gcc/Directory-Options.html#index-isystem)
> > +
> > +nostdinc
> > +UrlSuffix(gcc/Directory-Options.html#index-nostdinc)
> > +
> > +v
> > +UrlSuffix(gcc/Overall-Options.html#index-v)
> > +
> > -- 
> > 2.26.3
> > 
> > 
> 
> So I see this focuses on only adding URLs for common options, or
> options
> that relate to C/C++ family, but may be handled by other front-ends
> too?

The regenerate-opt-urls.py script only parsed
  buildir/gcc/HTML/gcc-14.0.0/gcc/Option-Index.html
looking for anchors for options via a regex.

Looking at the docs I now see that various frontends have their own
Option-Index.html, e.g.:

  gdc/Option-Index.html

so probably regenerate-opt-urls.py ought to be parsing those also, and
marking the generated .opt.urls as being lang-specific.

That way we could (somehow) generate a options-urls.cc that has logic
(perhaps with langmasks) for giving out different URLs for different
frontends.


> 
> To pick out one, you have:
> 
>     frtti
>     UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti)
> 
> It looks like it could could alternatively be
> 
>     frtti
>     UrlSuffix(gdc/Runtime-Options.html#index-frtti)
> 
> Or are other front-ends having URLs to their language-specific
> documentation pages not supported for the same reason as why they
> can't
> add self-documentation to their own options if another front-end
> (typically C/C++) also makes claim to the option?

Implementation-wise that would need fixing in the way I'm handling the
UrlSuffix directives; perhaps with a LangUrlSuffix directive.

> 
>     frtti
>     D 
>     ; Documented in C
> 
> 
> I'm OK with the D parts regardless of this observation.

Thanks
Dave


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

* Re: [PATCH 2/3] Add generated .opt.urls files
  2023-11-13 13:11   ` Marc Poulhiès
@ 2023-11-13 14:07     ` David Malcolm
  2023-11-13 16:02       ` Marc Poulhiès
  0 siblings, 1 reply; 47+ messages in thread
From: David Malcolm @ 2023-11-13 14:07 UTC (permalink / raw)
  To: Marc Poulhiès; +Cc: Joseph Myers, gcc-patches

On Mon, 2023-11-13 at 14:11 +0100, Marc Poulhiès wrote:
> 
> David Malcolm <dmalcolm@redhat.com> writes:
> 
> > gcc/ada/ChangeLog:
> >         * gcc-interface/lang.opt.urls: New file, autogenerated by
> >         regenerate-opt-urls.py.
> 
> 
> > diff --git a/gcc/ada/gcc-interface/lang.opt.urls b/gcc/ada/gcc-
> > interface/lang.opt.urls
> > new file mode 100644
> > index 000000000000..e24210bcb12a
> > --- /dev/null
> > +++ b/gcc/ada/gcc-interface/lang.opt.urls
> > @@ -0,0 +1,28 @@
> > +; Autogenerated by regenerate-opt-urls.py from gcc/ada/gcc-
> > interface/lang.opt and generated HTML
> > +
> > +I
> > +UrlSuffix(gcc/Directory-Options.html#index-I)
> > +
> > +; skipping 'Wall' due to multiple URLs:
> > +;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
> > +;   duplicate: 'gcc/Warning-Options.html#index-Wall'
> > +
> > +nostdinc
> > +UrlSuffix(gcc/Directory-Options.html#index-nostdinc)
> > +
> > +nostdlib
> > +UrlSuffix(gcc/Link-Options.html#index-nostdlib)
> > +
> > +; skipping 'fshort-enums' due to multiple URLs:
> > +;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
> > +;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
> > +;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-
> > implementation.html#index-fshort-enums-1'
> > +
> > +; skipping 'fsigned-char' due to multiple URLs:
> > +;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
> > +;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-
> > char-1'
> > +
> > +; skipping 'funsigned-char' due to multiple URLs:
> > +;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
> > +;   duplicate: 'gcc/Characters-implementation.html#index-
> > funsigned-char-1'
> 
> Hello David,
> 
> This looks very nice, thanks!
> 
> I wonder why the Ada frontend only gets I, nostdinc and nostdlib
> URLified to the common gcc doc.
> 
> Is it possible that your doc scrapper doesn't match the option in the
> Ada doc? We are documenting nostdlib, nostdinc and I, so I would also
> expect a "multiple URLs" for these.

The new regenerate-opt-urls.py script only parsed
  buildir/gcc/HTML/gcc-14.0.0/gcc/Option-Index.html
looking for anchors for options via a regex.

Looking at my build, I don't see any generated Ada HTML docs, so maybe
I messed this up?  Does the generated HTML from the generated Ada
texinfo go somewhere else?  (and, in particular, does it have its own
index?)

Perhaps this script could also deal directly with Sphinx-generated
HTML?

>  We are generating the texinfo files
> from sphinx, so maybe we could adjust the script to also match what
> the
> sphinx generator produces?

It *might* be as simple as pointing it at the option index for the
generated HTML for Ada.

Though as Iain's email points out, there may be some issues with per-
language URLs for options that my approach doesn't quite handle yet.

Dave


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

* Re: [PATCH 2/3] Add generated .opt.urls files
  2023-11-13 14:07     ` David Malcolm
@ 2023-11-13 16:02       ` Marc Poulhiès
  2023-12-19 14:47         ` Marc Poulhiès
  0 siblings, 1 reply; 47+ messages in thread
From: Marc Poulhiès @ 2023-11-13 16:02 UTC (permalink / raw)
  To: David Malcolm; +Cc: Joseph Myers, gcc-patches


David Malcolm <dmalcolm@redhat.com> writes:
>
> The new regenerate-opt-urls.py script only parsed
>   buildir/gcc/HTML/gcc-14.0.0/gcc/Option-Index.html
> looking for anchors for options via a regex.
>
> Looking at my build, I don't see any generated Ada HTML docs, so maybe
> I messed this up?  Does the generated HTML from the generated Ada
> texinfo go somewhere else?  (and, in particular, does it have its own
> index?)
>
> Perhaps this script could also deal directly with Sphinx-generated
> HTML?

I investigated a bit... The Ada part doesn't handle the html target, so
it's expected you don't have anything to parse. The online docs are
generated using a different script, not using these makefiles.

I'll see if I can fix the html target for ada, so that your script
doesn't need to be changed :)

>>  We are generating the texinfo files
>> from sphinx, so maybe we could adjust the script to also match what
>> the
>> sphinx generator produces?
>
> It *might* be as simple as pointing it at the option index for the
> generated HTML for Ada.

That's worth a try, when/if I can fix the HTML target.

Marc

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

* Re: [PATCH 0/3] Option handling: add documentation URLs
  2023-11-10 21:42 [PATCH 0/3] Option handling: add documentation URLs David Malcolm
                   ` (2 preceding siblings ...)
  2023-11-10 21:42 ` [PATCH 3/3] diagnostics: use the .opt.urls files to urlify quoted text David Malcolm
@ 2023-11-14  0:12 ` Joseph Myers
  2023-11-15 22:50   ` David Malcolm
  3 siblings, 1 reply; 47+ messages in thread
From: Joseph Myers @ 2023-11-14  0:12 UTC (permalink / raw)
  To: David Malcolm; +Cc: gcc-patches

On Fri, 10 Nov 2023, David Malcolm wrote:

> The .opt.urls files it generates become part of the source tree, and
> would be regenerated by maintainers whenever new options are added.
> Forgetting to update the files (or not having Python 3 handy) merely
> means that URLs might be missing or out of date until someone else
> regenerates them.

Do I understand correctly that there are no makefile targets to regenerate 
these files; it's up to maintainers to regenerate them manually?

Advantages:

* No need to update contrib/gcc_update to handle timestamps for the files.

* No modifications unexpectedly appearing in source trees, if the checked 
in files are out of date and you run a build with the timestamps such that 
the file gets regenerated.

Disadvantages:

* You need to know how to do the regeneration manually; "make" is the 
uniform way for generating any file the build system can generate, without 
needing more specific knowledge about that file.

Given the recent discussion starting at 
<https://gcc.gnu.org/pipermail/gcc/2023-November/242835.html> of 
post-commit CI to detect auto*-generated files that aren't fully up to 
date, maybe it would be appropriate to add a check for .opt.urls files 
being up to date (including making sure that each .opt file does have a 
corresponding .opt.urls file checked in) to that CI?

Since the Python script has hardcoded information about .opt files and 
corresponding URLs for target options documentation, the patch series 
should update sourcebuild.texi, section "Back End", to identify that 
script as one of the places to update when adding a new target back end.

-- 
Joseph S. Myers
joseph@codesourcery.com

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

* Re: [PATCH 3/3] diagnostics: use the .opt.urls files to urlify quoted text
  2023-11-10 21:42 ` [PATCH 3/3] diagnostics: use the .opt.urls files to urlify quoted text David Malcolm
@ 2023-11-14 17:44   ` Arthur Cohen
  0 siblings, 0 replies; 47+ messages in thread
From: Arthur Cohen @ 2023-11-14 17:44 UTC (permalink / raw)
  To: David Malcolm, gcc-patches, Joseph Myers

Hi David,

ACK for the Rust patches. Thanks a lot for working on this :)

Kindly,

Arthur

On 11/10/23 22:42, David Malcolm wrote:
> This patch adds machinery for using the .opt.urls files linking
> to the documentation of our options in gcc_urlifier.
> 
> For every enabled .opt file, the corresponding .opt.urls file
> will also be used when constructing the "optionslist" file.
> The patch adds a new awk script to process the optionslist file,
> options-urls-cc-gen.awk, which generates a options-urls.cc file,
> containing a big array of const char * of the form:
> 
> const char * const opt_url_suffixes[] =
> {
>   [...snip...]
> 
>   /* [563] (OPT_Wclass_memaccess) = */
>      "gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess",
>   /* [564] (OPT_Wclobbered) = */
>      "gcc/Warning-Options.html#index-Wclobbered",
> 
> [...snip...]
> };
> 
> The patch wires up gcc_urlifier so that for quoted strings beginning
> with '-' it will look up the option, and, if found, build a URL
> using one of the above suffixes.
> 
> For example, given:
> 
>    ./xgcc -B. -S t.c -Wctad-maybe-unsupported
>    cc1: warning: command-line option ‘-Wctad-maybe-unsupported’ is valid for C++/ObjC++ but not for C
> 
> the quoted string -Wctad-maybe-unsupported is automatically URLified in
> my terminal to:
> 	https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported
> 
> This approach seems to allow us to get URLs automatically from the
> documentation, whilst:
> - integrating with the existing .opt mechanisms but keeping
> autogenerated material (.opt.urls) separate from human-maintained
> files (.opt)
> - not adding any build-time requirements (by using awk at build time)
> - only requiring Python 3 when regenerating the in-tree opt.urls files,
> when the .texi or .opt files change enough to warrant it
> 
> gcc/ChangeLog:
> 	* Makefile.in (ALL_OPT_URL_FILES): New.
> 	(GCC_OBJS): Add options-urls.o.
> 	(OBJS): Likewise.
> 	(OBJS-libcommon): Likewise.
> 	(s-options): Depend on $(ALL_OPT_URL_FILES), and add this to
> 	inputs to opt-gather.awk.
> 	(options-urls.cc): New Makefile target.
> 	* gcc-urlifier.cc: Include "opts.h" and "options.h".
> 	(gcc_urlifier::gcc_urlifier): Add lang_mask param.
> 	(gcc_urlifier::m_lang_mask): New field.
> 	(doc_urls): Make static.
> 	(gcc_urlifier::get_url_for_quoted_text): Use label_text.
> 	(gcc_urlifier::get_url_suffix_for_quoted_text): Use label_text.
> 	Look for an option by name before trying a binary search in
> 	doc_urls.
> 	(gcc_urlifier::get_url_suffix_for_quoted_text): Use label_text.
> 	(gcc_urlifier::get_url_suffix_for_option): New.
> 	(make_gcc_urlifier): Add lang_mask param.
> 	(selftest::gcc_urlifier_cc_tests): Update for above changes.
> 	Verify that a URL is found for "-fpack-struct".
> 	* gcc-urlifier.def: Drop options "--version" and "-fpack-struct".
> 	* gcc-urlifier.h (make_gcc_urlifier): Add lang_mask param.
> 	* gcc.cc (driver::global_initializations): Pass 0 for lang_mask
> 	to make_gcc_urlifier.
> 	* opt-functions.awk (url_suffix): New function.
> 	* options-urls-cc-gen.awk: New file.
> 	* opts.cc (get_option_html_page): Remove special-casing for
> 	analyzer and LTO.
> 	(get_option_url_suffix): New.
> 	(get_option_url): Reimplement.
> 	(selftest::test_get_option_html_page): Rename to...
> 	(selftest::test_get_option_url_suffix): ...this and update for
> 	above changes.
> 	(selftest::opts_cc_tests): Update for renaming.
> 	* opts.h (opt_url_suffixes): New decl.
> 	(get_option_url_suffix): New decl.
> 
> gcc/testsuite/ChangeLog:
> 	* lib/gcc-dg.exp: Set TERM to xterm.
> 
> gcc/ChangeLog:
> 	* toplev.cc (general_init): Pass global_dc->m_lang_mask to
> 	make_gcc_urlifier.
> ---
>   gcc/Makefile.in              |  18 ++++--
>   gcc/gcc-urlifier.cc          | 106 ++++++++++++++++++++++++++++-------
>   gcc/gcc-urlifier.def         |   2 -
>   gcc/gcc-urlifier.h           |   2 +-
>   gcc/gcc.cc                   |   2 +-
>   gcc/opt-functions.awk        |   7 +++
>   gcc/options-urls-cc-gen.awk  |  79 ++++++++++++++++++++++++++
>   gcc/opts.cc                  |  75 ++++++++++++++-----------
>   gcc/opts.h                   |   4 ++
>   gcc/testsuite/lib/gcc-dg.exp |   6 ++
>   gcc/toplev.cc                |   2 +-
>   11 files changed, 242 insertions(+), 61 deletions(-)
>   create mode 100644 gcc/options-urls-cc-gen.awk
> 
> diff --git a/gcc/Makefile.in b/gcc/Makefile.in
> index 29cec21c8258..ebb59680d69b 100644
> --- a/gcc/Makefile.in
> +++ b/gcc/Makefile.in
> @@ -1270,6 +1270,8 @@ FLAGS_TO_PASS = \
>   # All option source files
>   ALL_OPT_FILES=$(lang_opt_files) $(extra_opt_files)
>   
> +ALL_OPT_URL_FILES=$(patsubst %, %.urls, $(ALL_OPT_FILES))
> +
>   # Target specific, C specific object file
>   C_TARGET_OBJS=@c_target_objs@
>   
> @@ -1286,7 +1288,7 @@ FORTRAN_TARGET_OBJS=@fortran_target_objs@
>   RUST_TARGET_OBJS=@rust_target_objs@
>   
>   # Object files for gcc many-languages driver.
> -GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o
> +GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o options-urls.o
>   
>   c-family-warn = $(STRICT_WARN)
>   
> @@ -1606,6 +1608,7 @@ OBJS = \
>   	optinfo.o \
>   	optinfo-emit-json.o \
>   	options-save.o \
> +	options-urls.o \
>   	opts-global.o \
>   	ordered-hash-map-tests.o \
>   	passes.o \
> @@ -1832,7 +1835,8 @@ OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
>   # compiler and containing target-dependent code.
>   OBJS-libcommon-target = $(common_out_object_file) prefix.o \
>   	opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \
> -	hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o
> +	hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o \
> +	options-urls.o
>   
>   # This lists all host objects for the front ends.
>   ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS))
> @@ -2435,9 +2439,9 @@ s-specs : Makefile
>   	$(STAMP) s-specs
>   
>   optionlist: s-options ; @true
> -s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
> +s-options: $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) Makefile $(srcdir)/opt-gather.awk
>   	LC_ALL=C ; export LC_ALL ; \
> -	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) > tmp-optionlist
> +	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) > tmp-optionlist
>   	$(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist
>   	$(STAMP) s-options
>   
> @@ -2453,6 +2457,12 @@ options-save.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
>   	       -f $(srcdir)/optc-save-gen.awk \
>   	       -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
>   
> +options-urls.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
> +    $(srcdir)/options-urls-cc-gen.awk
> +	$(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/opt-read.awk \
> +	       -f $(srcdir)/options-urls-cc-gen.awk \
> +	       -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
> +
>   options.h: s-options-h ; @true
>   s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
>       $(srcdir)/opth-gen.awk
> diff --git a/gcc/gcc-urlifier.cc b/gcc/gcc-urlifier.cc
> index 0dbff9853132..da704bf814ad 100644
> --- a/gcc/gcc-urlifier.cc
> +++ b/gcc/gcc-urlifier.cc
> @@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
>   #include "pretty-print.h"
>   #include "pretty-print-urlifier.h"
>   #include "gcc-urlifier.h"
> +#include "opts.h"
> +#include "options.h"
>   #include "selftest.h"
>   
>   namespace {
> @@ -34,23 +36,34 @@ namespace {
>   class gcc_urlifier : public urlifier
>   {
>   public:
> +  gcc_urlifier (unsigned int lang_mask)
> +  : m_lang_mask (lang_mask)
> +  {}
> +
>     char *get_url_for_quoted_text (const char *p, size_t sz) const final override;
>   
> -  const char *get_url_suffix_for_quoted_text (const char *p, size_t sz) const;
> +  label_text get_url_suffix_for_quoted_text (const char *p, size_t sz) const;
>     /* We use ATTRIBUTE_UNUSED as this helper is called only from ASSERTs.  */
> -  const char *get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED;
> +  label_text get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED;
>   
>   private:
> +  label_text get_url_suffix_for_option (const char *p, size_t sz) const;
> +
>     static char *
>     make_doc_url (const char *doc_url_suffix);
> +
> +  unsigned int m_lang_mask;
>   };
>   
>   /* class gcc_urlifier : public urlifier.  */
>   
> +/* Manage a hard-coded mapping from quoted string to URL suffixes
> +   in gcc-urlifier.def  */
> +
>   #define DOC_URL(QUOTED_TEXT, URL_SUFFIX) \
>     { (QUOTED_TEXT), (URL_SUFFIX) }
>   
> -const struct
> +static const struct
>   {
>     const char *quoted_text;
>     const char *url_suffix;
> @@ -60,32 +73,53 @@ const struct
>   
>   };
>   
> +/* Implementation of urlifier::get_url_for_quoted_text vfunc for GCC
> +   diagnostics.  */
> +
>   char *
>   gcc_urlifier::get_url_for_quoted_text (const char *p, size_t sz) const
>   {
> -  if (const char *url_suffix = get_url_suffix_for_quoted_text (p, sz))
> -    return make_doc_url (url_suffix);
> +  label_text url_suffix = get_url_suffix_for_quoted_text (p, sz);
> +  if (url_suffix.get ())
> +    return make_doc_url (url_suffix.get ());
>     return nullptr;
>   }
>   
> -const char *
> +/* Look for a URL for the quoted string (P, SZ).
> +   Return the url suffix if found, or nullptr otherwise.  */
> +
> +label_text
>   gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const
>   {
> -  /* Binary search.  This assumes that the quoted_text fields of doc_urls
> +  if (sz == 0)
> +    return label_text ();
> +
> +  /* If this is an option, look up the option and see if we have
> +     a URL for it.  */
> +  if (p[0] == '-')
> +    {
> +      label_text suffix = get_url_suffix_for_option (p, sz);
> +      if (suffix.get ())
> +	return suffix;
> +    }
> +
> +  /* Otherwise, look within the hard-coded data table in gcc-urlifier.def.
> +
> +     Binary search.  This assumes that the quoted_text fields of doc_urls
>        are in sorted order.  */
>     int min = 0;
>     int max = ARRAY_SIZE (doc_urls) - 1;
>     while (true)
>       {
>         if (min > max)
> -	return nullptr;
> +	return label_text ();
>         int midpoint = (min + max) / 2;
>         gcc_assert ((size_t)midpoint < ARRAY_SIZE (doc_urls));
>         int cmp = strncmp (p, doc_urls[midpoint].quoted_text, sz);
>         if (cmp == 0)
>   	{
>   	  if (doc_urls[midpoint].quoted_text[sz] == '\0')
> -	    return doc_urls[midpoint].url_suffix;
> +	    return label_text::borrow (doc_urls[midpoint].url_suffix);
>   	  else
>   	    max = midpoint - 1;
>   	}
> @@ -94,15 +128,45 @@ gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const
>         else
>   	min = midpoint + 1;
>       }
> -  return nullptr;
> +
> +  /* Not found.  */
> +  return label_text ();
>   }
>   
> -const char *
> +/* For use in selftests.  */
> +
> +label_text
>   gcc_urlifier::get_url_suffix_for_quoted_text (const char *p) const
>   {
>     return get_url_suffix_for_quoted_text (p, strlen (p));
>   }
>   
> +/* Look for a URL for the quoted string (P, SZ) that appears to be
> +   an option.
> +   Return the url suffix if found, or nullptr otherwise.  */
> +
> +label_text
> +gcc_urlifier::get_url_suffix_for_option (const char *p, size_t sz) const
> +{
> +  /* Look up this option
> +
> +     find_opt does a binary search, taking a 0-terminated string,
> +     and skipping the leading '-'.
> +
> +     We have a (pointer,size) pair that doesn't necessarily have a
> +     terminator, so create a 0-terminated clone of the string.  */
> +  gcc_assert (sz > 0);
> +  char *tmp = xstrndup (p + 1, sz - 1); // skip the leading '-'
> +  size_t opt = find_opt (tmp, m_lang_mask);
> +  free (tmp);
> +
> +  if (opt >= N_OPTS)
> +    /* Option not recognized.  */
> +    return label_text ();
> +
> +  return get_option_url_suffix (opt);
> +}
> +
>   char *
>   gcc_urlifier::make_doc_url (const char *doc_url_suffix)
>   {
> @@ -115,9 +179,9 @@ gcc_urlifier::make_doc_url (const char *doc_url_suffix)
>   } // anonymous namespace
>   
>   urlifier *
> -make_gcc_urlifier ()
> +make_gcc_urlifier (unsigned int lang_mask)
>   {
> -  return new gcc_urlifier ();
> +  return new gcc_urlifier (lang_mask);
>   }
>   
>   #if CHECKING_P
> @@ -137,22 +201,26 @@ gcc_urlifier_cc_tests ()
>   			doc_urls[idx].quoted_text)
>   		< 0);
>   
> -  gcc_urlifier u;
> +  gcc_urlifier u (0);
>   
> -  ASSERT_EQ (u.get_url_suffix_for_quoted_text (""), nullptr);
> -  ASSERT_EQ (u.get_url_suffix_for_quoted_text (")"), nullptr);
> +  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("").get (), nullptr);
> +  ASSERT_EQ (u.get_url_suffix_for_quoted_text (")").get (), nullptr);
>   
> -  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message"),
> +  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message").get (),
>   		"gcc/Diagnostic-Pragmas.html");
>   
>     // Incomplete prefix of a quoted_text
> -  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess"), nullptr);
> +  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess").get (), nullptr);
>   
>     /* Check that every element is findable.  */
>     for (size_t idx = 0; idx < ARRAY_SIZE (doc_urls); idx++)
>       ASSERT_STREQ
> -      (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text),
> +      (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text).get (),
>          doc_urls[idx].url_suffix);
> +
> +  /* Check an option.  */
> +  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("-fpack-struct").get (),
> +		"gcc/Code-Gen-Options.html#index-fpack-struct");
>   }
>   
>   } // namespace selftest
> diff --git a/gcc/gcc-urlifier.def b/gcc/gcc-urlifier.def
> index 360de930e9ec..de6d9a3eb962 100644
> --- a/gcc/gcc-urlifier.def
> +++ b/gcc/gcc-urlifier.def
> @@ -16,5 +16,3 @@ DOC_URL ("#pragma pack", "gcc/Structure-Layout-Pragmas.html"),
>   DOC_URL ("#pragma redefine_extname", "gcc/Symbol-Renaming-Pragmas.html"),
>   DOC_URL ("#pragma scalar_storage_order", "gcc/Structure-Layout-Pragmas.html"),
>   DOC_URL ("#pragma weak", "gcc/Weak-Pragmas.html"),
> -DOC_URL ("--version", "gcc/Overall-Options.html#index-version"),
> -DOC_URL ("-fpack-struct", "gcc/Code-Gen-Options.html#index-fpack-struct"),
> diff --git a/gcc/gcc-urlifier.h b/gcc/gcc-urlifier.h
> index 614e1c64b94d..77eb13463928 100644
> --- a/gcc/gcc-urlifier.h
> +++ b/gcc/gcc-urlifier.h
> @@ -21,6 +21,6 @@ along with GCC; see the file COPYING3.  If not see
>   #ifndef GCC_GCC_URLIFIER_H
>   #define GCC_GCC_URLIFIER_H
>   
> -extern urlifier *make_gcc_urlifier ();
> +extern urlifier *make_gcc_urlifier (unsigned int lang_mask);
>   
>   #endif /* GCC_GCC_URLIFIER_H */
> diff --git a/gcc/gcc.cc b/gcc/gcc.cc
> index 51120c1489e3..781cb343f18b 100644
> --- a/gcc/gcc.cc
> +++ b/gcc/gcc.cc
> @@ -8292,7 +8292,7 @@ driver::global_initializations ()
>     diagnostic_initialize (global_dc, 0);
>     diagnostic_color_init (global_dc);
>     diagnostic_urls_init (global_dc);
> -  global_dc->set_urlifier (make_gcc_urlifier ());
> +  global_dc->set_urlifier (make_gcc_urlifier (0));
>   
>   #ifdef GCC_DRIVER_HOST_INITIALIZATION
>     /* Perform host dependent initialization when needed.  */
> diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
> index a58e93815e30..794aee74af8e 100644
> --- a/gcc/opt-functions.awk
> +++ b/gcc/opt-functions.awk
> @@ -193,6 +193,13 @@ function var_name(flags)
>   	return nth_arg(0, opt_args("Var", flags))
>   }
>   
> +# If FLAGS includes a UrlSuffix flag, return the value it specifies.
> +# Return the empty string otherwise.
> +function url_suffix(flags)
> +{
> +	return nth_arg(0, opt_args("UrlSuffix", flags))
> +}
> +
>   # Return the name of the variable if FLAGS has a HOST_WIDE_INT variable.
>   # Return the empty string otherwise.
>   function host_wide_int_var_name(flags)
> diff --git a/gcc/options-urls-cc-gen.awk b/gcc/options-urls-cc-gen.awk
> new file mode 100644
> index 000000000000..3c23a646a76d
> --- /dev/null
> +++ b/gcc/options-urls-cc-gen.awk
> @@ -0,0 +1,79 @@
> +#  Copyright (C) 2023 Free Software Foundation, Inc.
> +#
> +# This program is free software; you can redistribute it and/or modify it
> +# under the terms of the GNU General Public License as published by the
> +# Free Software Foundation; either version 3, or (at your option) any
> +# later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; see the file COPYING3.  If not see
> +# <http://www.gnu.org/licenses/>.
> +
> +# This Awk script reads in the option records generated from
> +# opt-gather.awk, and generates a C++ file containing an array
> +# of URL suffixes (possibly NULL), one per option.
> +
> +# This program uses functions from opt-functions.awk and code from
> +# opt-read.awk.
> +#
> +# Usage: awk -f opt-functions.awk -f opt-read.awk -f options-urls-cc-gen.awk \
> +#            [-v header_name=header.h] < inputfile > options-urls.cc
> +
> +END {
> +
> +
> +print "/* This file is auto-generated by options-urls-cc-gen.awk.  */"
> +print ""
> +n_headers = split(header_name, headers, " ")
> +for (i = 1; i <= n_headers; i++)
> +	print "#include " quote headers[i] quote
> +print "#include " quote "opts.h" quote
> +print "#include " quote "intl.h" quote
> +print "#include " quote "insn-attr-common.h" quote
> +print ""
> +
> +if (n_extra_c_includes > 0) {
> +	for (i = 0; i < n_extra_c_includes; i++) {
> +		print "#include " quote extra_c_includes[i] quote
> +	}
> +	print ""
> +}
> +
> +print "const char * const opt_url_suffixes[] =\n{"
> +
> +optindex = 0
> +for (i = 0; i < n_opts; i++) {
> +	# With identical flags, pick only the last one.  The
> +	# earlier loop ensured that it has all flags merged,
> +	# and a nonempty help text if one of the texts was nonempty.
> +	while( i + 1 != n_opts && opts[i] == opts[i + 1] ) {
> +		i++;
> +	}
> +
> +	len = length (opts[i]);
> +	enum = opt_enum(opts[i])
> +
> +	s = substr("                                  ", length (opts[i]))
> +	if (i + 1 == n_opts)
> +		comma = ""
> +
> +	u = url_suffix(flags[i])
> +	if (u == "")
> +		c_str = "NULL"
> +	else
> +		c_str = quote u quote;
> +
> +	printf(" /* [%i] (%s) = */\n", optindex, opt_enum(opts[i]))
> +	printf("    %s%s\n", c_str, comma)
> +
> +	# Bump up the informational option index.
> +	++optindex
> + }
> +
> +print "};"
> +}
> diff --git a/gcc/opts.cc b/gcc/opts.cc
> index 32fdfc3e3ce1..87f041386264 100644
> --- a/gcc/opts.cc
> +++ b/gcc/opts.cc
> @@ -3647,14 +3647,6 @@ get_option_html_page (int option_index)
>   {
>     const cl_option *cl_opt = &cl_options[option_index];
>   
> -  /* Analyzer options are on their own page.  */
> -  if (strstr (cl_opt->opt_text, "analyzer-"))
> -    return "gcc/Static-Analyzer-Options.html";
> -
> -  /* Handle -flto= option.  */
> -  if (strstr (cl_opt->opt_text, "flto"))
> -    return "gcc/Optimize-Options.html";
> -
>   #ifdef CL_Fortran
>     if ((cl_opt->flags & CL_Fortran) != 0
>         /* If it is option common to both C/C++ and Fortran, it is documented
> @@ -3667,7 +3659,30 @@ get_option_html_page (int option_index)
>       return "gfortran/Error-and-Warning-Options.html";
>   #endif
>   
> -  return "gcc/Warning-Options.html";
> +  return nullptr;
> +}
> +
> +/* Get the url within the documentation for this option, or NULL.  */
> +
> +label_text
> +get_option_url_suffix (int option_index)
> +{
> +  if (const char *url = opt_url_suffixes[option_index])
> +    return label_text::borrow (url);
> +
> +  /* Fallback code for some options that aren't handled byt opt_url_suffixes
> +     e.g. links below "gfortran/".  */
> +  if (const char *html_page = get_option_html_page (option_index))
> +    return label_text::take
> +      (concat (html_page,
> +	       /* Expect an anchor of the form "index-Wfoo" e.g.
> +		  <a name="index-Wformat"></a>, and thus an id within
> +		  the page of "#index-Wformat".  */
> +	       "#index",
> +	       cl_options[option_index].opt_text,
> +	       NULL));
> +
> +  return label_text ();
>   }
>   
>   /* Return malloced memory for a URL describing the option OPTION_INDEX
> @@ -3677,22 +3692,13 @@ char *
>   get_option_url (diagnostic_context *, int option_index)
>   {
>     if (option_index)
> -    return concat (/* DOCUMENTATION_ROOT_URL should be supplied via
> -		      #include "config.h" (see --with-documentation-root-url),
> -		      and should have a trailing slash.  */
> -		   DOCUMENTATION_ROOT_URL,
> -
> -		   /* get_option_html_page will return something like
> -		      "gcc/Warning-Options.html".  */
> -		   get_option_html_page (option_index),
> -
> -		   /* Expect an anchor of the form "index-Wfoo" e.g.
> -		      <a name="index-Wformat"></a>, and thus an id within
> -		      the URL of "#index-Wformat".  */
> -		   "#index", cl_options[option_index].opt_text,
> -		   NULL);
> -  else
> -    return NULL;
> +    {
> +      label_text url_suffix = get_option_url_suffix (option_index);
> +      if (url_suffix.get ())
> +	return concat (DOCUMENTATION_ROOT_URL, url_suffix.get (), nullptr);
> +    }
> +
> +  return nullptr;
>   }
>   
>   /* Return a heap allocated producer with command line options.  */
> @@ -3823,17 +3829,20 @@ gen_producer_string (const char *language_string, cl_decoded_option *options,
>   
>   namespace selftest {
>   
> -/* Verify that get_option_html_page works as expected.  */
> +/* Verify that get_option_url_suffix works as expected.  */
>   
>   static void
> -test_get_option_html_page ()
> +test_get_option_url_suffix ()
>   {
> -  ASSERT_STREQ (get_option_html_page (OPT_Wcpp), "gcc/Warning-Options.html");
> -  ASSERT_STREQ (get_option_html_page (OPT_Wanalyzer_double_free),
> -	     "gcc/Static-Analyzer-Options.html");
> +  ASSERT_STREQ (get_option_url_suffix (OPT_Wcpp).get (),
> +		"gcc/Warning-Options.html#index-Wcpp");
> +  ASSERT_STREQ (get_option_url_suffix (OPT_Wanalyzer_double_free).get (),
> +	     "gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free");
> +
>   #ifdef CL_Fortran
> -  ASSERT_STREQ (get_option_html_page (OPT_Wline_truncation),
> -		"gfortran/Error-and-Warning-Options.html");
> +  ASSERT_STREQ
> +    (get_option_url_suffix (OPT_Wline_truncation).get (),
> +     "gfortran/Error-and-Warning-Options.html#index-Wline-truncation");
>   #endif
>   }
>   
> @@ -3896,7 +3905,7 @@ test_enum_sets ()
>   void
>   opts_cc_tests ()
>   {
> -  test_get_option_html_page ();
> +  test_get_option_url_suffix ();
>     test_enum_sets ();
>   }
>   
> diff --git a/gcc/opts.h b/gcc/opts.h
> index 00f377f9ca7e..97668e7d9206 100644
> --- a/gcc/opts.h
> +++ b/gcc/opts.h
> @@ -152,6 +152,7 @@ struct cl_option_state {
>   
>   extern const struct cl_option cl_options[];
>   extern const unsigned int cl_options_count;
> +extern const char *const opt_url_suffixes[];
>   #ifdef ENABLE_PLUGIN
>   extern const struct cl_var cl_vars[];
>   #endif
> @@ -564,4 +565,7 @@ struct switchstr
>     bool ordering;
>   };
>   
> +extern label_text
> +get_option_url_suffix (int option_index);
> +
>   #endif
> diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
> index 28529f57ef60..30642a72b756 100644
> --- a/gcc/testsuite/lib/gcc-dg.exp
> +++ b/gcc/testsuite/lib/gcc-dg.exp
> @@ -46,6 +46,12 @@ if { [ishost "*-*-cygwin*"] } {
>     setenv LANG C.ASCII
>   }
>   
> +# Set TERM to xterm to ensure that URL escapes are disabled.
> +# This avoids issues where a diagnostic which could embed a URL
> +# is emitted before -fdiagnostics-plain-output is handled, where
> +# otherwise the output could be affected by the environment.
> +setenv TERM xterm
> +
>   # Avoid sporadic data-losses with expect
>   match_max -d 10000
>   
> diff --git a/gcc/toplev.cc b/gcc/toplev.cc
> index d8e8978dd555..7a0d808b8c83 100644
> --- a/gcc/toplev.cc
> +++ b/gcc/toplev.cc
> @@ -1049,7 +1049,7 @@ general_init (const char *argv0, bool init_signals)
>     global_dc->m_option_state = &global_options;
>     global_dc->m_option_name = option_name;
>     global_dc->m_get_option_url = get_option_url;
> -  global_dc->set_urlifier (make_gcc_urlifier ());
> +  global_dc->set_urlifier (make_gcc_urlifier (global_dc->m_lang_mask));
>   
>     if (init_signals)
>       {

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

* Re: [PATCH 0/3] Option handling: add documentation URLs
  2023-11-14  0:12 ` [PATCH 0/3] Option handling: add documentation URLs Joseph Myers
@ 2023-11-15 22:50   ` David Malcolm
  2023-11-15 23:40     ` Joseph Myers
  0 siblings, 1 reply; 47+ messages in thread
From: David Malcolm @ 2023-11-15 22:50 UTC (permalink / raw)
  To: Joseph Myers; +Cc: gcc-patches

On Tue, 2023-11-14 at 00:12 +0000, Joseph Myers wrote:
> On Fri, 10 Nov 2023, David Malcolm wrote:
> 
> > The .opt.urls files it generates become part of the source tree,
> > and
> > would be regenerated by maintainers whenever new options are added.
> > Forgetting to update the files (or not having Python 3 handy)
> > merely
> > means that URLs might be missing or out of date until someone else
> > regenerates them.
> 
> Do I understand correctly that there are no makefile targets to
> regenerate 
> these files; it's up to maintainers to regenerate them manually?
> 
> Advantages:
> 
> * No need to update contrib/gcc_update to handle timestamps for the
> files.
> 
> * No modifications unexpectedly appearing in source trees, if the
> checked 
> in files are out of date and you run a build with the timestamps such
> that 
> the file gets regenerated.

The .opt.urls are generated from the generated HTML.  I think this
needs to be a manually-triggered process, otherwise the optionlist
depends on the generated HTML, and thus the generated HTML would become
a hard early dependency during the build (which I don't think we would
want).

> 
> Disadvantages:
> 
> * You need to know how to do the regeneration manually; "make" is the
> uniform way for generating any file the build system can generate,
> without 
> needing more specific knowledge about that file.

In the patches I posted I merely listed the commands in a comment in
the script, but I'm currently working on adding support for options
from the gdc and gfortran docs, and in doing so found that running the
script with the correct options was a pain.

So to make it easier, I'm currently thinking of adding this convenience
target, so that when a maintainer does decide to regenerate the
.opt.urls, they can simply type "make regenerate-opt-urls" in the gcc
build subdir:

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index c3ed960b8f3c..6d24b7b9db34 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3616,6 +3616,12 @@ $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES)
        DESTDIR=$(@D) \
        $(SHELL) $(srcdir)/doc/install.texi2html
 
+# Regenerate the .opt.urls files from the generated html, and from the .opt
+# files.
+.PHONY: regenerate-opt-urls
+regenerate-opt-urls:
+       $(srcdir)/regenerate-opt-urls.py $(build_htmldir) $(shell dirname $(srcdir))
+
 MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 \
            doc/fsf-funding.7 doc/gcov-tool.1 doc/gcov-dump.1 \
           $(if $(filter yes,@enable_lto@),doc/lto-dump.1)


> 
> Given the recent discussion starting at 
> <https://gcc.gnu.org/pipermail/gcc/2023-November/242835.html> of 
> post-commit CI to detect auto*-generated files that aren't fully up
> to 
> date, maybe it would be appropriate to add a check for .opt.urls
> files 
> being up to date (including making sure that each .opt file does have
> a 
> corresponding .opt.urls file checked in) to that CI?
> 
> Since the Python script has hardcoded information about .opt files
> and 
> corresponding URLs for target options documentation, the patch series
> should update sourcebuild.texi, section "Back End", to identify that 
> script as one of the places to update when adding a new target back
> end.

Thanks, will do.

As mentioned, I'm currently investigating capturing per-language option
URLs (to address Iain's and Marc's comments about D and Ada); if I get
that working, I may need to add a similar note for adding a new
frontend.

Hope the overall approach seems reasonable.
Dave


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

* Re: [PATCH 0/3] Option handling: add documentation URLs
  2023-11-15 22:50   ` David Malcolm
@ 2023-11-15 23:40     ` Joseph Myers
  2023-11-16 14:28       ` [PATCH 0/4] v2 of " David Malcolm
  0 siblings, 1 reply; 47+ messages in thread
From: Joseph Myers @ 2023-11-15 23:40 UTC (permalink / raw)
  To: David Malcolm; +Cc: gcc-patches

On Wed, 15 Nov 2023, David Malcolm wrote:

> As mentioned, I'm currently investigating capturing per-language option
> URLs (to address Iain's and Marc's comments about D and Ada); if I get
> that working, I may need to add a similar note for adding a new
> frontend.
> 
> Hope the overall approach seems reasonable.

Yes, the approach seems reasonable.

I suppose a difficulty with per-language URLs is that a given option has a 
single OPT_* enumeration value; the diagnostic calls don't say whether 
it's being used from a front end or the middle end (though maybe there's 
not much overlap between the two) - though some option handling already 
distinguishes based on what language is being compiled (e.g. 
LangEnabledBy).  For per-architecture URLs you don't have this issue 
because only one architecture is built into GCC at a time.

-- 
Joseph S. Myers
joseph@codesourcery.com

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

* [PATCH 0/4] v2 of Option handling: add documentation URLs
  2023-11-15 23:40     ` Joseph Myers
@ 2023-11-16 14:28       ` David Malcolm
  2023-11-16 14:28         ` [PATCH 1/4] options: add gcc/regenerate-opt-urls.py David Malcolm
                           ` (4 more replies)
  0 siblings, 5 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-16 14:28 UTC (permalink / raw)
  To: Joseph Myers; +Cc: gcc-patches, David Malcolm

On Wed, 2023-11-15 at 23:40 +0000, Joseph Myers wrote:
> On Wed, 15 Nov 2023, David Malcolm wrote:
>
> > As mentioned, I'm currently investigating capturing per-language
> > option
> > URLs (to address Iain's and Marc's comments about D and Ada); if I
> > get
> > that working, I may need to add a similar note for adding a new
> > frontend.
> > 
> > Hope the overall approach seems reasonable.
> 
> > Yes, the approach seems reasonable.

Thanks.

> > I suppose a difficulty with per-language URLs is that a given option
> > has a 
> > single OPT_* enumeration value; the diagnostic calls don't say
> > whether 
> > it's being used from a front end or the middle end (though maybe
> > there's 
> > not much overlap between the two) - though some option handling
> > already 
> > distinguishes based on what language is being compiled (e.g. 
> > LangEnabledBy).  For per-architecture URLs you don't have this issue 
> > because only one architecture is built into GCC at a time.

The urlifier does "know" the lang_mask, so I had a go at using that.

Here's an updated version of the patch kit.

In this one, rather than just parsing 'gcc/Option-Index.html',
regenerate-opt-urls.py now parses all of:

 'gcc/Option-Index.html' for generic options
 'gdc/Option-Index.html' with language='D'
 'gfortran/Option-Index.html' with language='Fortran'

As before, it generates .opt.urls files, but now they can contain
multiple directives: as well as the UrlSuffix directive, each
language now has a LangUrlSuffix_NAME_OF_LANG directive, such as
  LangUrlSuffix_D
and
  LangUrlSuffix_Fortran

I initially tried to have a single LangUrlSuffix(LANG, URL) directive,
but having them as a family of separate directives turned out to be much
easier to handle from the .awk scripts.

Hence the optionlist contains options for all configured targets
and for all frontends, and can contain multiple URLs.  For example,
Walloca has:

Walloca UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca)

The options-urls.cc generated by options-urls-cc-gen.awk previously
contained a big array of string literals.  To handle lang-specific
options, options-urls.cc now contains a generated switch statement
of the form:

const char *
get_opt_url_suffix (int option_index, unsigned lang_mask)
{
  switch (option_index)
    {
     [...snip...]
     case OPT_Walloca:
       if (lang_mask & CL_D)
         return "gdc/Warnings.html#index-Walloca";
       return "gcc/Warning-Options.html#index-Walloca";
     [...snip...]
  return nullptr;
}

I tested this via compiling .c and .d files with gcc and gdc to generate
a -Walloca warning.  Each compiler emitted the "correct" documentation
URL for -Walloca, in that gcc's URL pointed at the generic documentation,
and gdc's at the D-specific documentation.  There is also automated
selftest coverage for lang-specific URLs (in
selftest::test_get_option_url_suffix).

As before, with:

   warning: ‘#pragma pack’ has no effect with ‘-fpack-struct’ - ignored [-Wpragmas]

it successfully provides the user with three URLs (in a suitable
terminal): the documentation of the pragma, the -fpack-struct option,
and the -Wpragmas warning, respectively.

Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu, with all
languages enabled, using gawk-5.0.1

I also smoke-tested the build with the patch on a minimal configuration
with just --enable-languages=c,c++ (and, in particular, with D *not*
enabled), and it built successfully.


How is this looking for trunk?

Thanks
Dave


David Malcolm (4):
  options: add gcc/regenerate-opt-urls.py
  Add generated .opt.urls files
  opts: add logic to generate options-urls.cc
  options: wire up options-urls.cc into gcc_urlifier

 gcc/Makefile.in                              |   29 +-
 gcc/ada/gcc-interface/lang.opt.urls          |   30 +
 gcc/analyzer/analyzer.opt.urls               |  206 ++
 gcc/c-family/c.opt.urls                      | 1409 ++++++++++++++
 gcc/common.opt.urls                          | 1832 ++++++++++++++++++
 gcc/config/aarch64/aarch64.opt.urls          |   84 +
 gcc/config/alpha/alpha.opt.urls              |   76 +
 gcc/config/alpha/elf.opt.urls                |    2 +
 gcc/config/arc/arc-tables.opt.urls           |    2 +
 gcc/config/arc/arc.opt.urls                  |  260 +++
 gcc/config/arm/arm-tables.opt.urls           |    2 +
 gcc/config/arm/arm.opt.urls                  |  149 ++
 gcc/config/arm/vxworks.opt.urls              |    2 +
 gcc/config/avr/avr.opt.urls                  |   71 +
 gcc/config/bfin/bfin.opt.urls                |   61 +
 gcc/config/bpf/bpf.opt.urls                  |   35 +
 gcc/config/c6x/c6x-tables.opt.urls           |    2 +
 gcc/config/c6x/c6x.opt.urls                  |   18 +
 gcc/config/cris/cris.opt.urls                |   65 +
 gcc/config/cris/elf.opt.urls                 |    8 +
 gcc/config/csky/csky.opt.urls                |  104 +
 gcc/config/csky/csky_tables.opt.urls         |    2 +
 gcc/config/darwin.opt.urls                   |  224 +++
 gcc/config/dragonfly.opt.urls                |    9 +
 gcc/config/epiphany/epiphany.opt.urls        |   52 +
 gcc/config/fr30/fr30.opt.urls                |    8 +
 gcc/config/freebsd.opt.urls                  |    9 +
 gcc/config/frv/frv.opt.urls                  |  111 ++
 gcc/config/ft32/ft32.opt.urls                |   20 +
 gcc/config/fused-madd.opt.urls               |    4 +
 gcc/config/g.opt.urls                        |    5 +
 gcc/config/gcn/gcn.opt.urls                  |   23 +
 gcc/config/gnu-user.opt.urls                 |    9 +
 gcc/config/h8300/h8300.opt.urls              |   29 +
 gcc/config/hpux11.opt.urls                   |    6 +
 gcc/config/i386/cygming.opt.urls             |   30 +
 gcc/config/i386/cygwin.opt.urls              |    6 +
 gcc/config/i386/djgpp.opt.urls               |    2 +
 gcc/config/i386/i386.opt.urls                |  602 ++++++
 gcc/config/i386/mingw-w64.opt.urls           |    5 +
 gcc/config/i386/mingw.opt.urls               |   12 +
 gcc/config/i386/nto.opt.urls                 |    5 +
 gcc/config/ia64/ia64.opt.urls                |  122 ++
 gcc/config/ia64/ilp32.opt.urls               |    8 +
 gcc/config/ia64/vms.opt.urls                 |    2 +
 gcc/config/iq2000/iq2000.opt.urls            |   14 +
 gcc/config/linux-android.opt.urls            |   11 +
 gcc/config/linux.opt.urls                    |   14 +
 gcc/config/lm32/lm32.opt.urls                |   14 +
 gcc/config/loongarch/loongarch.opt.urls      |   60 +
 gcc/config/lynx.opt.urls                     |    5 +
 gcc/config/m32c/m32c.opt.urls                |    8 +
 gcc/config/m32r/m32r.opt.urls                |   27 +
 gcc/config/m68k/ieee.opt.urls                |    4 +
 gcc/config/m68k/m68k-tables.opt.urls         |    2 +
 gcc/config/m68k/m68k.opt.urls                |  107 +
 gcc/config/m68k/uclinux.opt.urls             |    2 +
 gcc/config/mcore/mcore.opt.urls              |   38 +
 gcc/config/microblaze/microblaze.opt.urls    |   59 +
 gcc/config/mips/mips-tables.opt.urls         |    2 +
 gcc/config/mips/mips.opt.urls                |  269 +++
 gcc/config/mips/sde.opt.urls                 |    2 +
 gcc/config/mmix/mmix.opt.urls                |   44 +
 gcc/config/mn10300/mn10300.opt.urls          |   32 +
 gcc/config/moxie/moxie.opt.urls              |   14 +
 gcc/config/msp430/msp430.opt.urls            |   53 +
 gcc/config/nds32/nds32-elf.opt.urls          |    5 +
 gcc/config/nds32/nds32-linux.opt.urls        |    5 +
 gcc/config/nds32/nds32.opt.urls              |   57 +
 gcc/config/netbsd-elf.opt.urls               |    5 +
 gcc/config/netbsd.opt.urls                   |    6 +
 gcc/config/nios2/elf.opt.urls                |   14 +
 gcc/config/nios2/nios2.opt.urls              |   50 +
 gcc/config/nvptx/nvptx-gen.opt.urls          |    2 +
 gcc/config/nvptx/nvptx.opt.urls              |   29 +
 gcc/config/openbsd.opt.urls                  |    6 +
 gcc/config/or1k/elf.opt.urls                 |    8 +
 gcc/config/or1k/or1k.opt.urls                |   46 +
 gcc/config/pa/pa-hpux.opt.urls               |   11 +
 gcc/config/pa/pa-hpux1010.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1111.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1131.opt.urls           |    2 +
 gcc/config/pa/pa.opt.urls                    |   71 +
 gcc/config/pa/pa64-hpux.opt.urls             |    8 +
 gcc/config/pdp11/pdp11.opt.urls              |   41 +
 gcc/config/pru/pru.opt.urls                  |   17 +
 gcc/config/riscv/riscv.opt.urls              |   88 +
 gcc/config/rl78/rl78.opt.urls                |   31 +
 gcc/config/rpath.opt.urls                    |    2 +
 gcc/config/rs6000/476.opt.urls               |    2 +
 gcc/config/rs6000/aix64.opt.urls             |   23 +
 gcc/config/rs6000/darwin.opt.urls            |   14 +
 gcc/config/rs6000/linux64.opt.urls           |    4 +
 gcc/config/rs6000/rs6000-tables.opt.urls     |    2 +
 gcc/config/rs6000/rs6000.opt.urls            |  214 ++
 gcc/config/rs6000/sysv4.opt.urls             |   87 +
 gcc/config/rtems.opt.urls                    |    6 +
 gcc/config/rx/elf.opt.urls                   |   14 +
 gcc/config/rx/rx.opt.urls                    |   54 +
 gcc/config/s390/s390.opt.urls                |   92 +
 gcc/config/s390/tpf.opt.urls                 |    8 +
 gcc/config/sh/sh.opt.urls                    |  174 ++
 gcc/config/sh/superh.opt.urls                |    4 +
 gcc/config/sol2.opt.urls                     |   21 +
 gcc/config/sparc/long-double-switch.opt.urls |    6 +
 gcc/config/sparc/sparc.opt.urls              |  108 ++
 gcc/config/stormy16/stormy16.opt.urls        |    5 +
 gcc/config/v850/v850.opt.urls                |   60 +
 gcc/config/vax/elf.opt.urls                  |    2 +
 gcc/config/vax/vax.opt.urls                  |   10 +
 gcc/config/visium/visium.opt.urls            |   29 +
 gcc/config/vms/vms.opt.urls                  |    8 +
 gcc/config/vxworks-smp.opt.urls              |    5 +
 gcc/config/vxworks.opt.urls                  |   20 +
 gcc/config/xtensa/elf.opt.urls               |    5 +
 gcc/config/xtensa/uclinux.opt.urls           |    2 +
 gcc/config/xtensa/xtensa.opt.urls            |   37 +
 gcc/d/lang.opt.urls                          |  223 +++
 gcc/diagnostic.h                             |    6 +-
 gcc/doc/options.texi                         |   26 +
 gcc/doc/sourcebuild.texi                     |    4 +
 gcc/fortran/lang.opt.urls                    |  161 ++
 gcc/gcc-urlifier.cc                          |  106 +-
 gcc/gcc-urlifier.def                         |    2 -
 gcc/gcc-urlifier.h                           |    2 +-
 gcc/gcc.cc                                   |    2 +-
 gcc/go/lang.opt.urls                         |   17 +
 gcc/lto/lang.opt.urls                        |    8 +
 gcc/m2/lang.opt.urls                         |  115 ++
 gcc/opt-functions.awk                        |   15 +
 gcc/options-urls-cc-gen.awk                  |  105 +
 gcc/opts-diagnostic.h                        |    3 +-
 gcc/opts.cc                                  |   95 +-
 gcc/opts.h                                   |    7 +
 gcc/params.opt.urls                          |    2 +
 gcc/regenerate-opt-urls.py                   |  408 ++++
 gcc/rust/lang.opt.urls                       |   29 +
 gcc/testsuite/lib/gcc-dg.exp                 |    6 +
 gcc/toplev.cc                                |    5 +-
 139 files changed, 9338 insertions(+), 66 deletions(-)
 create mode 100644 gcc/ada/gcc-interface/lang.opt.urls
 create mode 100644 gcc/analyzer/analyzer.opt.urls
 create mode 100644 gcc/c-family/c.opt.urls
 create mode 100644 gcc/common.opt.urls
 create mode 100644 gcc/config/aarch64/aarch64.opt.urls
 create mode 100644 gcc/config/alpha/alpha.opt.urls
 create mode 100644 gcc/config/alpha/elf.opt.urls
 create mode 100644 gcc/config/arc/arc-tables.opt.urls
 create mode 100644 gcc/config/arc/arc.opt.urls
 create mode 100644 gcc/config/arm/arm-tables.opt.urls
 create mode 100644 gcc/config/arm/arm.opt.urls
 create mode 100644 gcc/config/arm/vxworks.opt.urls
 create mode 100644 gcc/config/avr/avr.opt.urls
 create mode 100644 gcc/config/bfin/bfin.opt.urls
 create mode 100644 gcc/config/bpf/bpf.opt.urls
 create mode 100644 gcc/config/c6x/c6x-tables.opt.urls
 create mode 100644 gcc/config/c6x/c6x.opt.urls
 create mode 100644 gcc/config/cris/cris.opt.urls
 create mode 100644 gcc/config/cris/elf.opt.urls
 create mode 100644 gcc/config/csky/csky.opt.urls
 create mode 100644 gcc/config/csky/csky_tables.opt.urls
 create mode 100644 gcc/config/darwin.opt.urls
 create mode 100644 gcc/config/dragonfly.opt.urls
 create mode 100644 gcc/config/epiphany/epiphany.opt.urls
 create mode 100644 gcc/config/fr30/fr30.opt.urls
 create mode 100644 gcc/config/freebsd.opt.urls
 create mode 100644 gcc/config/frv/frv.opt.urls
 create mode 100644 gcc/config/ft32/ft32.opt.urls
 create mode 100644 gcc/config/fused-madd.opt.urls
 create mode 100644 gcc/config/g.opt.urls
 create mode 100644 gcc/config/gcn/gcn.opt.urls
 create mode 100644 gcc/config/gnu-user.opt.urls
 create mode 100644 gcc/config/h8300/h8300.opt.urls
 create mode 100644 gcc/config/hpux11.opt.urls
 create mode 100644 gcc/config/i386/cygming.opt.urls
 create mode 100644 gcc/config/i386/cygwin.opt.urls
 create mode 100644 gcc/config/i386/djgpp.opt.urls
 create mode 100644 gcc/config/i386/i386.opt.urls
 create mode 100644 gcc/config/i386/mingw-w64.opt.urls
 create mode 100644 gcc/config/i386/mingw.opt.urls
 create mode 100644 gcc/config/i386/nto.opt.urls
 create mode 100644 gcc/config/ia64/ia64.opt.urls
 create mode 100644 gcc/config/ia64/ilp32.opt.urls
 create mode 100644 gcc/config/ia64/vms.opt.urls
 create mode 100644 gcc/config/iq2000/iq2000.opt.urls
 create mode 100644 gcc/config/linux-android.opt.urls
 create mode 100644 gcc/config/linux.opt.urls
 create mode 100644 gcc/config/lm32/lm32.opt.urls
 create mode 100644 gcc/config/loongarch/loongarch.opt.urls
 create mode 100644 gcc/config/lynx.opt.urls
 create mode 100644 gcc/config/m32c/m32c.opt.urls
 create mode 100644 gcc/config/m32r/m32r.opt.urls
 create mode 100644 gcc/config/m68k/ieee.opt.urls
 create mode 100644 gcc/config/m68k/m68k-tables.opt.urls
 create mode 100644 gcc/config/m68k/m68k.opt.urls
 create mode 100644 gcc/config/m68k/uclinux.opt.urls
 create mode 100644 gcc/config/mcore/mcore.opt.urls
 create mode 100644 gcc/config/microblaze/microblaze.opt.urls
 create mode 100644 gcc/config/mips/mips-tables.opt.urls
 create mode 100644 gcc/config/mips/mips.opt.urls
 create mode 100644 gcc/config/mips/sde.opt.urls
 create mode 100644 gcc/config/mmix/mmix.opt.urls
 create mode 100644 gcc/config/mn10300/mn10300.opt.urls
 create mode 100644 gcc/config/moxie/moxie.opt.urls
 create mode 100644 gcc/config/msp430/msp430.opt.urls
 create mode 100644 gcc/config/nds32/nds32-elf.opt.urls
 create mode 100644 gcc/config/nds32/nds32-linux.opt.urls
 create mode 100644 gcc/config/nds32/nds32.opt.urls
 create mode 100644 gcc/config/netbsd-elf.opt.urls
 create mode 100644 gcc/config/netbsd.opt.urls
 create mode 100644 gcc/config/nios2/elf.opt.urls
 create mode 100644 gcc/config/nios2/nios2.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx-gen.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx.opt.urls
 create mode 100644 gcc/config/openbsd.opt.urls
 create mode 100644 gcc/config/or1k/elf.opt.urls
 create mode 100644 gcc/config/or1k/or1k.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1010.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1111.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1131.opt.urls
 create mode 100644 gcc/config/pa/pa.opt.urls
 create mode 100644 gcc/config/pa/pa64-hpux.opt.urls
 create mode 100644 gcc/config/pdp11/pdp11.opt.urls
 create mode 100644 gcc/config/pru/pru.opt.urls
 create mode 100644 gcc/config/riscv/riscv.opt.urls
 create mode 100644 gcc/config/rl78/rl78.opt.urls
 create mode 100644 gcc/config/rpath.opt.urls
 create mode 100644 gcc/config/rs6000/476.opt.urls
 create mode 100644 gcc/config/rs6000/aix64.opt.urls
 create mode 100644 gcc/config/rs6000/darwin.opt.urls
 create mode 100644 gcc/config/rs6000/linux64.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000-tables.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000.opt.urls
 create mode 100644 gcc/config/rs6000/sysv4.opt.urls
 create mode 100644 gcc/config/rtems.opt.urls
 create mode 100644 gcc/config/rx/elf.opt.urls
 create mode 100644 gcc/config/rx/rx.opt.urls
 create mode 100644 gcc/config/s390/s390.opt.urls
 create mode 100644 gcc/config/s390/tpf.opt.urls
 create mode 100644 gcc/config/sh/sh.opt.urls
 create mode 100644 gcc/config/sh/superh.opt.urls
 create mode 100644 gcc/config/sol2.opt.urls
 create mode 100644 gcc/config/sparc/long-double-switch.opt.urls
 create mode 100644 gcc/config/sparc/sparc.opt.urls
 create mode 100644 gcc/config/stormy16/stormy16.opt.urls
 create mode 100644 gcc/config/v850/v850.opt.urls
 create mode 100644 gcc/config/vax/elf.opt.urls
 create mode 100644 gcc/config/vax/vax.opt.urls
 create mode 100644 gcc/config/visium/visium.opt.urls
 create mode 100644 gcc/config/vms/vms.opt.urls
 create mode 100644 gcc/config/vxworks-smp.opt.urls
 create mode 100644 gcc/config/vxworks.opt.urls
 create mode 100644 gcc/config/xtensa/elf.opt.urls
 create mode 100644 gcc/config/xtensa/uclinux.opt.urls
 create mode 100644 gcc/config/xtensa/xtensa.opt.urls
 create mode 100644 gcc/d/lang.opt.urls
 create mode 100644 gcc/fortran/lang.opt.urls
 create mode 100644 gcc/go/lang.opt.urls
 create mode 100644 gcc/lto/lang.opt.urls
 create mode 100644 gcc/m2/lang.opt.urls
 create mode 100644 gcc/options-urls-cc-gen.awk
 create mode 100644 gcc/params.opt.urls
 create mode 100755 gcc/regenerate-opt-urls.py
 create mode 100644 gcc/rust/lang.opt.urls

-- 
2.26.3


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

* [PATCH 1/4] options: add gcc/regenerate-opt-urls.py
  2023-11-16 14:28       ` [PATCH 0/4] v2 of " David Malcolm
@ 2023-11-16 14:28         ` David Malcolm
  2023-11-16 14:28         ` [PATCH 2/4] Add generated .opt.urls files David Malcolm
                           ` (3 subsequent siblings)
  4 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-16 14:28 UTC (permalink / raw)
  To: Joseph Myers; +Cc: gcc-patches, David Malcolm

Changed in v2:
- added convenience targets to Makefile for regenerating the .opt.urls
  files, and for running unit tests for the generation code
- parse gdc and gfortran documentation, and create LangUrlSuffix_{lang}
directives for language-specific URLs.
- add documentation to sourcebuild.texi

gcc/ChangeLog:
	* Makefile.in (regenerate-opt-urls): New target.
	(regenerate-opt-urls-unit-test): New target.
	* doc/options.texi (Option properties): Add UrlSuffix and
	description of regenerate-opt-urls.py.  Add LangUrlSuffix_*.
	* doc/sourcebuild.texi (Anatomy of a Target Back End): Add
	reference to regenerate-opt-urls.py's TARGET_SPECIFIC_PAGES.
	* regenerate-opt-urls.py: New file.
---
 gcc/Makefile.in            |  11 +
 gcc/doc/options.texi       |  26 +++
 gcc/doc/sourcebuild.texi   |   4 +
 gcc/regenerate-opt-urls.py | 408 +++++++++++++++++++++++++++++++++++++
 4 files changed, 449 insertions(+)
 create mode 100755 gcc/regenerate-opt-urls.py

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 7f2df4b5925f..f3b79b8a2663 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3606,6 +3606,17 @@ $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES)
 	DESTDIR=$(@D) \
 	$(SHELL) $(srcdir)/doc/install.texi2html
 
+# Regenerate the .opt.urls files from the generated html, and from the .opt
+# files.
+.PHONY: regenerate-opt-urls
+regenerate-opt-urls:
+	$(srcdir)/regenerate-opt-urls.py $(build_htmldir) $(shell dirname $(srcdir))
+
+# Run the unit tests for regenerate-opt-urls.py
+.PHONY: regenerate-opt-urls-unit-test
+regenerate-opt-urls-unit-test:
+	$(srcdir)/regenerate-opt-urls.py $(build_htmldir) $(shell dirname $(srcdir)) --unit-test
+
 MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 \
            doc/fsf-funding.7 doc/gcov-tool.1 doc/gcov-dump.1 \
 	   $(if $(filter yes,@enable_lto@),doc/lto-dump.1)
diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi
index 715f0a1479c7..37d7ecc1477d 100644
--- a/gcc/doc/options.texi
+++ b/gcc/doc/options.texi
@@ -597,4 +597,30 @@ This warning option corresponds to @code{cpplib.h} warning reason code
 @var{CPP_W_Enum}.  This should only be used for warning options of the
 C-family front-ends.
 
+@item UrlSuffix(@var{url_suffix})
+Adjacent to each human-written @code{.opt} file in the source tree is
+a corresponding file with a @code{.opt.urls} extension.  These files
+contain @code{UrlSuffix} directives giving the ending part of the URL
+for the documentation of the option, such as:
+
+@smallexample
+Wabi-tag
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
+@end smallexample
+
+These URL suffixes are relative to @code{DOCUMENTATION_ROOT_URL}.
+
+There files are generated from the @code{.opt} files and the generated
+HTML documentation by @code{regenerate-opt-urls.py}, and should be
+regenerated when adding new options, via manually invoking
+@code{make regenerate-opt-urls}.
+
+@item LangUrlSuffix_@var{lang}(@var{url_suffix})
+In addition to @code{UrlSuffix} directives, @code{regenerate-opt-urls.py}
+can generate language-specific URLs, such as:
+
+@smallexample
+LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+@end smallexample
+
 @end table
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index eaa75f00f5ce..f51db17a086c 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -813,6 +813,10 @@ options supported by this target (@pxref{Run-time Target, , Run-time
 Target Specification}).  This means both entries in the summary table
 of options and details of the individual options.
 @item
+An entry in @file{gcc/regenerate-opt-urls.py}'s TARGET_SPECIFIC_PAGES
+dictionary mapping from target-specific HTML documentation pages
+to the target specific source directory.
+@item
 Documentation in @file{gcc/doc/extend.texi} for any target-specific
 attributes supported (@pxref{Target Attributes, , Defining
 target-specific uses of @code{__attribute__}}), including where the
diff --git a/gcc/regenerate-opt-urls.py b/gcc/regenerate-opt-urls.py
new file mode 100755
index 000000000000..b123fc57c7b9
--- /dev/null
+++ b/gcc/regenerate-opt-urls.py
@@ -0,0 +1,408 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2023 Free Software Foundation, Inc.
+#
+# Script to regenerate FOO.opt.urls files for each FOO.opt in the
+# source tree.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+DESCRIPTION = """
+Parses the generated HTML (from "make html") to locate anchors
+for options, then parses the .opt files within the source tree,
+and generates a .opt.urls in the source tree for each .opt file,
+giving URLs for each option, where it can.
+
+Usage (from build/gcc subdirectory):
+  ../../src/gcc/regenerate-opt-urls.py HTML/gcc-14.0.0/ ../../src
+
+To run unit tests:
+  ../../src/gcc/regenerate-opt-urls.py HTML/gcc-14.0.0/ ../../src --unit-test
+"""
+
+import argparse
+import json
+import os
+from pathlib import Path
+from pprint import pprint
+import sys
+import re
+import unittest
+
+def canonicalize_option_name(option_name):
+    if option_name.endswith('='):
+        option_name = option_name[0:-1]
+    return option_name
+
+
+def canonicalize_url_suffix(url_suffix):
+    """
+    Various options have anchors for both the positive and
+    negative form.  For example -Wcpp has both:
+      'gcc/Warning-Options.html#index-Wno-cpp'
+      'gcc/Warning-Options.html#index-Wcpp'
+
+    Return a canonicalized version of the url_suffix that
+    strips out any "no-" prefixes, for use in deduplication.
+    Note that the resulting url suffix might not correspond to
+    an actual anchor in the HTML.
+    """
+    url_suffix = re.sub('index-Wno-', 'index-W', url_suffix)
+    url_suffix = re.sub('index-fno-', 'index-f', url_suffix)
+    url_suffix = re.sub('_003d$', '', url_suffix)
+    url_suffix = re.sub('-([0-9]+)$', '', url_suffix)
+    return url_suffix
+
+
+class Index:
+    def __init__(self):
+        # Map from language (or None) to map from option name to set of URL suffixes
+        self.entries = {}
+
+    def add_entry(self, matched_text, url_suffix, language, verbose=False):
+        # TODO: use language
+        if 'Attributes.html' in url_suffix:
+            return
+        matched_text = canonicalize_option_name(matched_text)
+        if language not in self.entries:
+            self.entries[language] = {}
+        per_lang_entries = self.entries[language]
+        if matched_text in per_lang_entries:
+            # Partition by canonicalized url_suffixes; add the
+            # first url_suffix in each such partition.
+            c_new = canonicalize_url_suffix(url_suffix)
+            for entry in per_lang_entries[matched_text]:
+                c_entry = canonicalize_url_suffix(entry)
+                if c_new == c_entry:
+                    return
+            per_lang_entries[matched_text].add(url_suffix)
+        else:
+            per_lang_entries[matched_text] = set([url_suffix])
+
+    def get_languages(self):
+        return self.entries.keys()
+
+    def get_url_suffixes(self, text, language=None):
+        text = canonicalize_option_name(text)
+        per_lang_entries = self.entries.get(language)
+        if per_lang_entries:
+            return per_lang_entries.get(text)
+
+    def parse_option_index(self, input_filename, language, verbose=False):
+        with open(input_filename) as f:
+            dirname = input_filename.parent.name
+            for line in f:
+                self.parse_html_line_option_index(dirname, line, language, verbose)
+
+    def parse_html_line_option_index(self, dirname, line, language, verbose=False):
+        if verbose:
+            print(repr(line))
+
+        # Update for this in the GCC website's bin/preprocess process_html_file:
+        #   | sed -e 's/_002d/-/g' -e 's/_002a/*/g' \
+        line = line.replace('_002d', '-')
+        line = line.replace('_002a', '*')
+
+        # e.g. <a href="Optimize-Options.html#index-fmodulo_002dsched"><code>fmodulo-sched</code></a>
+        m = re.search(r'<a href="([\S]+)"><code>([\S]+)</code></a>', line)
+        if not m:
+            return
+        if verbose:
+            print(m.groups())
+        url_suffix, index_text = m.groups()
+        #print(f'{url_suffix=} {index_text=}')
+        option = '-' + index_text
+
+        # Strip off "no-" prefixes from options
+        if option[:5] == '-Wno-':
+            option = '-W' + option[5:]
+        if option[:5] == '-fno-':
+            option = '-f' + option[5:]
+
+        url_suffix = dirname + '/' + url_suffix
+        self.add_entry(option, url_suffix, language, verbose)
+
+
+class TestParsingIndex(unittest.TestCase):
+    def test_parse_line(self):
+        index = Index()
+        index.parse_html_line_option_index('gcc',
+                                           '<a href="Optimize-Options.html#index-fmodulo_002dsched"><code>fmodulo-sched</code></a>',
+                                           None)
+        self.assertEqual(index.get_url_suffixes('-fmodulo-sched'),
+                         {'gcc/Optimize-Options.html#index-fmodulo-sched'})
+
+    def test_negated_flag(self):
+        index = Index()
+        index.parse_html_line_option_index('gcc',
+                                           '<tr><td></td><td valign="top"><a href="Static-Analyzer-Options.html#index-fno_002danalyzer"><code>fno-analyzer</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Analyzer-Options.html">Static Analyzer Options</a></td></tr>\n',
+                                           None)
+        self.assertEqual(index.get_url_suffixes('-fno-analyzer'), None)
+        self.assertEqual(index.get_url_suffixes('-fanalyzer'),
+                         {'gcc/Static-Analyzer-Options.html#index-fno-analyzer'})
+
+    def test_negated_warning(self):
+        index = Index()
+        index.parse_html_line_option_index('gcc',
+                                           '<tr><td></td><td valign="top"><a href="Warning-Options.html#index-Wno_002dalloca"><code>Wno-alloca</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Warning-Options.html">Warning Options</a></td></tr>\n',
+                                           None)
+        self.assertEqual(index.get_url_suffixes('-Wno-alloca'),
+                         None)
+        self.assertEqual(index.get_url_suffixes('-Walloca'),
+                         {'gcc/Warning-Options.html#index-Wno-alloca'})
+
+    def test_parse_option_index(self):
+        index = Index()
+        index.parse_option_index(INPUT_HTML_PATH / 'gcc/Option-Index.html',
+                                 language=None)
+        self.assertEqual(index.get_url_suffixes('-fmodulo-sched'),
+                         {'gcc/Optimize-Options.html#index-fmodulo-sched'})
+        self.assertEqual(index.get_url_suffixes('-O'),
+                         {'gcc/Optimize-Options.html#index-O'})
+        self.assertEqual(index.get_url_suffixes('-O0'),
+                         {'gcc/Optimize-Options.html#index-O0'})
+        self.assertEqual(index.get_url_suffixes('-Wframe-larger-than='),
+                         {'gcc/Warning-Options.html#index-Wframe-larger-than_003d'})
+
+        # Check an option with duplicates: '-march'
+        # The url_suffixes will be of the form
+        #  'gcc/HPPA-Options.html#index-march-5',
+        #  'gcc/LoongArch-Options.html#index-march-7',
+        # etc, where the trailing number is, unfortunately, likely to
+        # change from release to release.
+        # Replace them with 'NN' for the purpose of this test:
+        em_arch_url_suffixes = [re.sub('(-[0-9]+)', '-NN', s)
+                                for s in index.get_url_suffixes('-march')]
+        if 0:
+            print(em_arch_url_suffixes)
+        self.assertIn('gcc/ARM-Options.html#index-march-NN', em_arch_url_suffixes)
+        self.assertIn('gcc/x86-Options.html#index-march-NN', em_arch_url_suffixes)
+
+        self.assertEqual(index.get_url_suffixes('-Wcpp'),
+                         {'gcc/Warning-Options.html#index-Wcpp'})
+
+        self.assertNotEqual(index.get_url_suffixes('-march'), None)
+        self.assertNotEqual(index.get_url_suffixes('-march='), None)
+
+class OptFile:
+    def __init__(self, opt_path, rel_path):
+        """
+        Parse a .opt file.  Similar to opt-gather.awk.
+        """
+        self.rel_path = rel_path
+        assert rel_path.startswith('gcc')
+        # self.filename = os.path.basename(path)
+        self.records = []
+        with open(opt_path) as f:
+            flag = 0
+            for line in f:
+                #print(repr(line))
+                if re.match(r'[ \t]*(;|$)', line):
+                    flag = 0
+                else:
+                    if flag == 0:
+                        self.records.append([line])
+                        flag = 1
+                    else:
+                        self.records[-1].append(line)
+
+# Mapping from target-specific page to subdirectory containing .opt files
+# documented on that page.
+
+TARGET_SPECIFIC_PAGES = {
+    'gcc/AArch64-Options.html' : 'gcc/config/aarch64/',
+    'gcc/AMD-GCN-Options.html' : 'gcc/config/gcn/',
+    'gcc/ARC-Options.html' : 'gcc/config/arc/',
+    'gcc/ARC-Options.html' : 'gcc/config/arc/',
+    'gcc/ARM-Options.html' : 'gcc/config/arm/',
+    'gcc/AVR-Options.html' : 'gcc/config/avr/',
+    'gcc/Adapteva-Epiphany-Options.html' : 'gcc/config/epiphany/',
+    'gcc/Blackfin-Options.html' : 'gcc/config/bfin/',
+    'gcc/C-SKY-Options.html' : 'gcc/config/csky/',
+    'gcc/C6X-Options.html' : 'gcc/config/c6x/',
+    'gcc/CRIS-Options.html' : 'gcc/config/cris/',
+    'gcc/DEC-Alpha-Options.html' : 'gcc/config/alpha/',
+    'gcc/FR30-Options.html' : 'gcc/config/fr30/',
+    'gcc/FRV-Options.html' : 'gcc/config/frv/',
+    'gcc/FT32-Options.html' : 'gcc/config/ft32/',
+    'gcc/H8_002f300-Options.html' : 'gcc/config/h8300/',
+    'gcc/HPPA-Options.html' : 'gcc/config/pa/',
+    'gcc/IA-64-Options.html' : 'gcc/config/ia64/',
+    'gcc/LoongArch-Options.html' : 'gcc/config/loongarch/',
+    'gcc/M32C-Options.html' : 'gcc/config/m32c/',
+    'gcc/M32R_002fD-Options.html' : 'gcc/config/m32r/',
+    'gcc/M680x0-Options.html' : 'gcc/config/m68k/',
+    'gcc/MCore-Options.html' : 'gcc/config/mcore/',
+    'gcc/MIPS-Options.html' : 'gcc/config/mips/',
+    'gcc/MMIX-Options.html' : 'gcc/config/mmix/',
+    'gcc/MN10300-Options.html' : 'gcc/config/mn10300/',
+    'gcc/MSP430-Options.html' : 'gcc/config/msp430/',
+    'gcc/MicroBlaze-Options.html' : 'gcc/config/microblaze/',
+    'gcc/Moxie-Options.html' : 'gcc/config/moxie/',
+    'gcc/NDS32-Options.html' : 'gcc/config/nds32/',
+    'gcc/Nios-II-Options.html' : 'gcc/config/nios2/',
+    'gcc/Nvidia-PTX-Options.html' : 'gcc/config/nvptx/',
+    'gcc/OpenRISC-Options.html' : 'gcc/config/or1k/',
+    'gcc/PDP-11-Options.html' : 'gcc/config/pdp11',
+    'gcc/PRU-Options.html' : 'gcc/config/pru/',
+    'gcc/RISC-V-Options.html' : 'gcc/config/riscv/',
+    'gcc/RL78-Options.html' : 'gcc/config/rl78/',
+    'gcc/RS_002f6000-and-PowerPC-Options.html' : 'gcc/config/rs6000/',
+    'gcc/RX-Options.html' : 'gcc/config/rx/',
+    'gcc/SH-Options.html' : 'gcc/config/sh/',
+    'gcc/SPARC-Options.html' : 'gcc/config/sparc/',
+    'gcc/S_002f390-and-zSeries-Options.html' : 'gcc/config/s390',
+    'gcc/V850-Options.html' : 'gcc/config/vax/',
+    'gcc/VAX-Options.html' : 'gcc/config/v850/',
+    'gcc/Visium-Options.html' : 'gcc/config/visium/',
+    'gcc/Xstormy16-Options.html' : 'gcc/config/stormy16/',
+    'gcc/Xtensa-Options.html' : 'gcc/config/xtensa/',
+    'gcc/eBPF-Options.html' : 'gcc/config/bpf/',
+    'gcc/x86-Options.html' : 'gcc/config/i386/',
+}
+
+def target_specific(url_suffix):
+    for page_prefix, subdir in TARGET_SPECIFIC_PAGES.items():
+        if url_suffix.startswith(page_prefix):
+            return subdir
+
+def filter_urlsuffixes_for_optfile(optfile, url_suffixes):
+    """
+    Filter out target-specific options for the wrong target.
+    """
+    result = set()
+    for url_suffix in url_suffixes:
+        subdir = target_specific(url_suffix)
+        if subdir:
+            if 0:
+                print(f'{optfile.rel_path=}')
+                print(f'{url_suffixes=}')
+                print(f'{subdir=}')
+            if not optfile.rel_path.startswith(subdir):
+                # Skip this
+                continue
+        result.add(url_suffix)
+    return result
+
+
+class TestFiltering(unittest.TestCase):
+    def test_target_specific(self):
+        self.assertEqual(target_specific('gcc/Preprocessor-Options.html#index-A'),
+                         None)
+        self.assertEqual(target_specific('gcc/MMIX-Options.html#index-mknuthdiv'),
+                         'gcc/config/mmix/')
+
+    def test_filter(self):
+        s = {'gcc/MIPS-Options.html#index-munaligned-access-1',
+             'gcc/ARM-Options.html#index-munaligned-access'}
+        arm_optfile = OptFile('/dev/null', 'gcc/config/arm/arm.opt')
+        mips_optfile = OptFile('/dev/null', 'gcc/config/mips/mips.opt')
+        self.assertEqual(
+            filter_urlsuffixes_for_optfile(arm_optfile, s),
+            {'gcc/ARM-Options.html#index-munaligned-access'})
+        self.assertEqual(
+            filter_urlsuffixes_for_optfile(mips_optfile, s),
+            {'gcc/MIPS-Options.html#index-munaligned-access-1'})
+
+
+def write_url_file(index, optfile, dstfile):
+    dstfile.write('; Autogenerated by regenerate-opt-urls.py from %s'
+                  ' and generated HTML\n\n'
+                  % optfile.rel_path)
+    for record in optfile.records:
+        opt = '-' + record[0].strip()
+        if 0:
+            dstfile.write('; entry for %s\n' % record)
+            dstfile.write('; opt=%r\n' % opt)
+        url_suffixes_per_lang = {}
+        count = 0
+        for lang in index.get_languages():
+            this_lang_suffixes = index.get_url_suffixes(opt, language=lang)
+            url_suffixes_per_lang[lang] = this_lang_suffixes
+            if this_lang_suffixes:
+                count += len(this_lang_suffixes)
+        if not count:
+            continue
+        directives = []
+        for lang in index.get_languages():
+            if lang:
+                directive = 'LangUrlSuffix_%s for %r' % (lang, opt[1:])
+            else:
+                directive = 'UrlSuffix for %r' % opt[1:]
+            url_suffixes = url_suffixes_per_lang[lang]
+            if 0:
+                dstfile.write('; lang=%r url_suffixes=%r\n' % (lang, url_suffixes))
+            if url_suffixes:
+                url_suffixes = filter_urlsuffixes_for_optfile(optfile, url_suffixes)
+                if url_suffixes:
+                    if len(url_suffixes) == 1:
+                        if lang:
+                            directives.append('LangUrlSuffix_%s(%s)' % (lang, list(url_suffixes)[0]))
+                        else:
+                            directives.append('UrlSuffix(%s)' % list(url_suffixes)[0])
+                    else:
+                        dstfile.write('; skipping %s due to multiple URLs:\n'
+                                      % directive)
+                        for u in sorted(url_suffixes):
+                            dstfile.write(';   duplicate: %r\n' % u)
+                else:
+                    dstfile.write('; skipping %s due to finding no URLs\n'
+                                  % directive)
+        if directives:
+            dstfile.write('%s\n' % opt[1:])
+            dstfile.write(' '.join(directives) + '\n')
+        dstfile.write('\n')
+
+
+def main(args):
+    index = Index()
+    index.parse_option_index(args.base_html_dir / 'gcc/Option-Index.html',
+                             language=None)
+    index.parse_option_index(args.base_html_dir / 'gdc/Option-Index.html',
+                             language='D')
+    index.parse_option_index(args.base_html_dir / 'gfortran/Option-Index.html',
+                             language='Fortran')
+    if 0:
+        pprint(index.entries)
+    for root, dirs, files in os.walk(args.src_gcc_dir):
+        for f in files:
+            if f.endswith('.opt'):
+                opt_path = os.path.join(root, f)
+                rel_path = os.path.relpath(opt_path, args.src_gcc_dir)
+                optfile = OptFile(opt_path, rel_path)
+                if 0:
+                    pprint(optfile.path)
+                    pprint(optfile.records)
+                dstname = f + '.urls'
+                urlfile = os.path.join(root, dstname)
+                with open(urlfile, 'w') as dstfile:
+                    write_url_file(index, optfile, dstfile)
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description=DESCRIPTION,
+                                     formatter_class=argparse.RawDescriptionHelpFormatter)
+    parser.add_argument('base_html_dir', type=Path)
+    parser.add_argument('src_gcc_dir', type=Path)
+    parser.add_argument('--unit-test', action='store_true')
+    args = parser.parse_args()
+
+    if args.unit_test:
+        INPUT_HTML_PATH = args.base_html_dir
+        unittest.main(argv=[sys.argv[0], '-v'])
+    else:
+        main(args)
-- 
2.26.3


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

* [PATCH 2/4] Add generated .opt.urls files
  2023-11-16 14:28       ` [PATCH 0/4] v2 of " David Malcolm
  2023-11-16 14:28         ` [PATCH 1/4] options: add gcc/regenerate-opt-urls.py David Malcolm
@ 2023-11-16 14:28         ` David Malcolm
  2023-11-16 14:28         ` [PATCH 3/4] opts: add logic to generate options-urls.cc David Malcolm
                           ` (2 subsequent siblings)
  4 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-16 14:28 UTC (permalink / raw)
  To: Joseph Myers; +Cc: gcc-patches, David Malcolm

Changed in v2: the files now contain some lang-specific URLs.

gcc/ada/ChangeLog:
	* gcc-interface/lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/analyzer/ChangeLog:
	* analyzer.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/c-family/ChangeLog:
	* c.opt.urls: New file, autogenerated by regenerate-opt-urls.py.

gcc/ChangeLog:
	* common.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.
	* config/aarch64/aarch64.opt.urls: Likewise.
	* config/alpha/alpha.opt.urls: Likewise.
	* config/alpha/elf.opt.urls: Likewise.
	* config/arc/arc-tables.opt.urls: Likewise.
	* config/arc/arc.opt.urls: Likewise.
	* config/arm/arm-tables.opt.urls: Likewise.
	* config/arm/arm.opt.urls: Likewise.
	* config/arm/vxworks.opt.urls: Likewise.
	* config/avr/avr.opt.urls: Likewise.
	* config/bpf/bpf.opt.urls: Likewise.
	* config/c6x/c6x-tables.opt.urls: Likewise.
	* config/c6x/c6x.opt.urls: Likewise.
	* config/cris/cris.opt.urls: Likewise.
	* config/cris/elf.opt.urls: Likewise.
	* config/csky/csky.opt.urls: Likewise.
	* config/csky/csky_tables.opt.urls: Likewise.
	* config/darwin.opt.urls: Likewise.
	* config/dragonfly.opt.urls: Likewise.
	* config/epiphany/epiphany.opt.urls: Likewise.
	* config/fr30/fr30.opt.urls: Likewise.
	* config/freebsd.opt.urls: Likewise.
	* config/frv/frv.opt.urls: Likewise.
	* config/ft32/ft32.opt.urls: Likewise.
	* config/fused-madd.opt.urls: Likewise.
	* config/g.opt.urls: Likewise.
	* config/gcn/gcn.opt.urls: Likewise.
	* config/gnu-user.opt.urls: Likewise.
	* config/h8300/h8300.opt.urls: Likewise.
	* config/hpux11.opt.urls: Likewise.
	* config/i386/cygming.opt.urls: Likewise.
	* config/i386/cygwin.opt.urls: Likewise.
	* config/i386/djgpp.opt.urls: Likewise.
	* config/i386/i386.opt.urls: Likewise.
	* config/i386/mingw-w64.opt.urls: Likewise.
	* config/i386/mingw.opt.urls: Likewise.
	* config/i386/nto.opt.urls: Likewise.
	* config/ia64/ia64.opt.urls: Likewise.
	* config/ia64/ilp32.opt.urls: Likewise.
	* config/ia64/vms.opt.urls: Likewise.
	* config/iq2000/iq2000.opt.urls: Likewise.
	* config/linux-android.opt.urls: Likewise.
	* config/linux.opt.urls: Likewise.
	* config/lm32/lm32.opt.urls: Likewise.
	* config/loongarch/loongarch.opt.urls: Likewise.
	* config/lynx.opt.urls: Likewise.
	* config/m32c/m32c.opt.urls: Likewise.
	* config/m32r/m32r.opt.urls: Likewise.
	* config/m68k/ieee.opt.urls: Likewise.
	* config/m68k/m68k-tables.opt.urls: Likewise.
	* config/m68k/m68k.opt.urls: Likewise.
	* config/m68k/uclinux.opt.urls: Likewise.
	* config/mcore/mcore.opt.urls: Likewise.
	* config/microblaze/microblaze.opt.urls: Likewise.
	* config/mips/mips-tables.opt.urls: Likewise.
	* config/mips/mips.opt.urls: Likewise.
	* config/mips/sde.opt.urls: Likewise.
	* config/mmix/mmix.opt.urls: Likewise.
	* config/mn10300/mn10300.opt.urls: Likewise.
	* config/moxie/moxie.opt.urls: Likewise.
	* config/msp430/msp430.opt.urls: Likewise.
	* config/nds32/nds32-elf.opt.urls: Likewise.
	* config/nds32/nds32-linux.opt.urls: Likewise.
	* config/nds32/nds32.opt.urls: Likewise.
	* config/netbsd-elf.opt.urls: Likewise.
	* config/netbsd.opt.urls: Likewise.
	* config/nios2/elf.opt.urls: Likewise.
	* config/nios2/nios2.opt.urls: Likewise.
	* config/nvptx/nvptx-gen.opt.urls: Likewise.
	* config/nvptx/nvptx.opt.urls: Likewise.
	* config/openbsd.opt.urls: Likewise.
	* config/or1k/elf.opt.urls: Likewise.
	* config/or1k/or1k.opt.urls: Likewise.
	* config/pa/pa-hpux.opt.urls: Likewise.
	* config/pa/pa-hpux1010.opt.urls: Likewise.
	* config/pa/pa-hpux1111.opt.urls: Likewise.
	* config/pa/pa-hpux1131.opt.urls: Likewise.
	* config/pa/pa.opt.urls: Likewise.
	* config/pa/pa64-hpux.opt.urls: Likewise.
	* config/pdp11/pdp11.opt.urls: Likewise.
	* config/pru/pru.opt.urls: Likewise.
	* config/riscv/riscv.opt.urls: Likewise.
	* config/rl78/rl78.opt.urls: Likewise.
	* config/rpath.opt.urls: Likewise.
	* config/rs6000/476.opt.urls: Likewise.
	* config/rs6000/aix64.opt.urls: Likewise.
	* config/rs6000/darwin.opt.urls: Likewise.
	* config/rs6000/linux64.opt.urls: Likewise.
	* config/rs6000/rs6000-tables.opt.urls: Likewise.
	* config/rs6000/rs6000.opt.urls: Likewise.
	* config/rs6000/sysv4.opt.urls: Likewise.
	* config/rtems.opt.urls: Likewise.
	* config/rx/elf.opt.urls: Likewise.
	* config/rx/rx.opt.urls: Likewise.
	* config/s390/s390.opt.urls: Likewise.
	* config/s390/tpf.opt.urls: Likewise.
	* config/sh/sh.opt.urls: Likewise.
	* config/sh/superh.opt.urls: Likewise.
	* config/sol2.opt.urls: Likewise.
	* config/sparc/long-double-switch.opt.urls: Likewise.
	* config/sparc/sparc.opt.urls: Likewise.
	* config/stormy16/stormy16.opt.urls: Likewise.
	* config/v850/v850.opt.urls: Likewise.
	* config/vax/elf.opt.urls: Likewise.
	* config/vax/vax.opt.urls: Likewise.
	* config/visium/visium.opt.urls: Likewise.
	* config/vms/vms.opt.urls: Likewise.
	* config/vxworks-smp.opt.urls: Likewise.
	* config/vxworks.opt.urls: Likewise.
	* config/xtensa/elf.opt.urls: Likewise.
	* config/xtensa/uclinux.opt.urls: Likewise.
	* config/xtensa/xtensa.opt.urls: Likewise.

gcc/d/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/fortran/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/go/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/lto/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/m2/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/ChangeLog:
	* params.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/rust/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.
---
 gcc/ada/gcc-interface/lang.opt.urls          |   30 +
 gcc/analyzer/analyzer.opt.urls               |  206 ++
 gcc/c-family/c.opt.urls                      | 1409 ++++++++++++++
 gcc/common.opt.urls                          | 1832 ++++++++++++++++++
 gcc/config/aarch64/aarch64.opt.urls          |   84 +
 gcc/config/alpha/alpha.opt.urls              |   76 +
 gcc/config/alpha/elf.opt.urls                |    2 +
 gcc/config/arc/arc-tables.opt.urls           |    2 +
 gcc/config/arc/arc.opt.urls                  |  260 +++
 gcc/config/arm/arm-tables.opt.urls           |    2 +
 gcc/config/arm/arm.opt.urls                  |  149 ++
 gcc/config/arm/vxworks.opt.urls              |    2 +
 gcc/config/avr/avr.opt.urls                  |   71 +
 gcc/config/bfin/bfin.opt.urls                |   61 +
 gcc/config/bpf/bpf.opt.urls                  |   35 +
 gcc/config/c6x/c6x-tables.opt.urls           |    2 +
 gcc/config/c6x/c6x.opt.urls                  |   18 +
 gcc/config/cris/cris.opt.urls                |   65 +
 gcc/config/cris/elf.opt.urls                 |    8 +
 gcc/config/csky/csky.opt.urls                |  104 +
 gcc/config/csky/csky_tables.opt.urls         |    2 +
 gcc/config/darwin.opt.urls                   |  224 +++
 gcc/config/dragonfly.opt.urls                |    9 +
 gcc/config/epiphany/epiphany.opt.urls        |   52 +
 gcc/config/fr30/fr30.opt.urls                |    8 +
 gcc/config/freebsd.opt.urls                  |    9 +
 gcc/config/frv/frv.opt.urls                  |  111 ++
 gcc/config/ft32/ft32.opt.urls                |   20 +
 gcc/config/fused-madd.opt.urls               |    4 +
 gcc/config/g.opt.urls                        |    5 +
 gcc/config/gcn/gcn.opt.urls                  |   23 +
 gcc/config/gnu-user.opt.urls                 |    9 +
 gcc/config/h8300/h8300.opt.urls              |   29 +
 gcc/config/hpux11.opt.urls                   |    6 +
 gcc/config/i386/cygming.opt.urls             |   30 +
 gcc/config/i386/cygwin.opt.urls              |    6 +
 gcc/config/i386/djgpp.opt.urls               |    2 +
 gcc/config/i386/i386.opt.urls                |  602 ++++++
 gcc/config/i386/mingw-w64.opt.urls           |    5 +
 gcc/config/i386/mingw.opt.urls               |   12 +
 gcc/config/i386/nto.opt.urls                 |    5 +
 gcc/config/ia64/ia64.opt.urls                |  122 ++
 gcc/config/ia64/ilp32.opt.urls               |    8 +
 gcc/config/ia64/vms.opt.urls                 |    2 +
 gcc/config/iq2000/iq2000.opt.urls            |   14 +
 gcc/config/linux-android.opt.urls            |   11 +
 gcc/config/linux.opt.urls                    |   14 +
 gcc/config/lm32/lm32.opt.urls                |   14 +
 gcc/config/loongarch/loongarch.opt.urls      |   60 +
 gcc/config/lynx.opt.urls                     |    5 +
 gcc/config/m32c/m32c.opt.urls                |    8 +
 gcc/config/m32r/m32r.opt.urls                |   27 +
 gcc/config/m68k/ieee.opt.urls                |    4 +
 gcc/config/m68k/m68k-tables.opt.urls         |    2 +
 gcc/config/m68k/m68k.opt.urls                |  107 +
 gcc/config/m68k/uclinux.opt.urls             |    2 +
 gcc/config/mcore/mcore.opt.urls              |   38 +
 gcc/config/microblaze/microblaze.opt.urls    |   59 +
 gcc/config/mips/mips-tables.opt.urls         |    2 +
 gcc/config/mips/mips.opt.urls                |  269 +++
 gcc/config/mips/sde.opt.urls                 |    2 +
 gcc/config/mmix/mmix.opt.urls                |   44 +
 gcc/config/mn10300/mn10300.opt.urls          |   32 +
 gcc/config/moxie/moxie.opt.urls              |   14 +
 gcc/config/msp430/msp430.opt.urls            |   53 +
 gcc/config/nds32/nds32-elf.opt.urls          |    5 +
 gcc/config/nds32/nds32-linux.opt.urls        |    5 +
 gcc/config/nds32/nds32.opt.urls              |   57 +
 gcc/config/netbsd-elf.opt.urls               |    5 +
 gcc/config/netbsd.opt.urls                   |    6 +
 gcc/config/nios2/elf.opt.urls                |   14 +
 gcc/config/nios2/nios2.opt.urls              |   50 +
 gcc/config/nvptx/nvptx-gen.opt.urls          |    2 +
 gcc/config/nvptx/nvptx.opt.urls              |   29 +
 gcc/config/openbsd.opt.urls                  |    6 +
 gcc/config/or1k/elf.opt.urls                 |    8 +
 gcc/config/or1k/or1k.opt.urls                |   46 +
 gcc/config/pa/pa-hpux.opt.urls               |   11 +
 gcc/config/pa/pa-hpux1010.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1111.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1131.opt.urls           |    2 +
 gcc/config/pa/pa.opt.urls                    |   71 +
 gcc/config/pa/pa64-hpux.opt.urls             |    8 +
 gcc/config/pdp11/pdp11.opt.urls              |   41 +
 gcc/config/pru/pru.opt.urls                  |   17 +
 gcc/config/riscv/riscv.opt.urls              |   88 +
 gcc/config/rl78/rl78.opt.urls                |   31 +
 gcc/config/rpath.opt.urls                    |    2 +
 gcc/config/rs6000/476.opt.urls               |    2 +
 gcc/config/rs6000/aix64.opt.urls             |   23 +
 gcc/config/rs6000/darwin.opt.urls            |   14 +
 gcc/config/rs6000/linux64.opt.urls           |    4 +
 gcc/config/rs6000/rs6000-tables.opt.urls     |    2 +
 gcc/config/rs6000/rs6000.opt.urls            |  214 ++
 gcc/config/rs6000/sysv4.opt.urls             |   87 +
 gcc/config/rtems.opt.urls                    |    6 +
 gcc/config/rx/elf.opt.urls                   |   14 +
 gcc/config/rx/rx.opt.urls                    |   54 +
 gcc/config/s390/s390.opt.urls                |   92 +
 gcc/config/s390/tpf.opt.urls                 |    8 +
 gcc/config/sh/sh.opt.urls                    |  174 ++
 gcc/config/sh/superh.opt.urls                |    4 +
 gcc/config/sol2.opt.urls                     |   21 +
 gcc/config/sparc/long-double-switch.opt.urls |    6 +
 gcc/config/sparc/sparc.opt.urls              |  108 ++
 gcc/config/stormy16/stormy16.opt.urls        |    5 +
 gcc/config/v850/v850.opt.urls                |   60 +
 gcc/config/vax/elf.opt.urls                  |    2 +
 gcc/config/vax/vax.opt.urls                  |   10 +
 gcc/config/visium/visium.opt.urls            |   29 +
 gcc/config/vms/vms.opt.urls                  |    8 +
 gcc/config/vxworks-smp.opt.urls              |    5 +
 gcc/config/vxworks.opt.urls                  |   20 +
 gcc/config/xtensa/elf.opt.urls               |    5 +
 gcc/config/xtensa/uclinux.opt.urls           |    2 +
 gcc/config/xtensa/xtensa.opt.urls            |   37 +
 gcc/d/lang.opt.urls                          |  223 +++
 gcc/fortran/lang.opt.urls                    |  161 ++
 gcc/go/lang.opt.urls                         |   17 +
 gcc/lto/lang.opt.urls                        |    8 +
 gcc/m2/lang.opt.urls                         |  115 ++
 gcc/params.opt.urls                          |    2 +
 gcc/rust/lang.opt.urls                       |   29 +
 123 files changed, 8583 insertions(+)
 create mode 100644 gcc/ada/gcc-interface/lang.opt.urls
 create mode 100644 gcc/analyzer/analyzer.opt.urls
 create mode 100644 gcc/c-family/c.opt.urls
 create mode 100644 gcc/common.opt.urls
 create mode 100644 gcc/config/aarch64/aarch64.opt.urls
 create mode 100644 gcc/config/alpha/alpha.opt.urls
 create mode 100644 gcc/config/alpha/elf.opt.urls
 create mode 100644 gcc/config/arc/arc-tables.opt.urls
 create mode 100644 gcc/config/arc/arc.opt.urls
 create mode 100644 gcc/config/arm/arm-tables.opt.urls
 create mode 100644 gcc/config/arm/arm.opt.urls
 create mode 100644 gcc/config/arm/vxworks.opt.urls
 create mode 100644 gcc/config/avr/avr.opt.urls
 create mode 100644 gcc/config/bfin/bfin.opt.urls
 create mode 100644 gcc/config/bpf/bpf.opt.urls
 create mode 100644 gcc/config/c6x/c6x-tables.opt.urls
 create mode 100644 gcc/config/c6x/c6x.opt.urls
 create mode 100644 gcc/config/cris/cris.opt.urls
 create mode 100644 gcc/config/cris/elf.opt.urls
 create mode 100644 gcc/config/csky/csky.opt.urls
 create mode 100644 gcc/config/csky/csky_tables.opt.urls
 create mode 100644 gcc/config/darwin.opt.urls
 create mode 100644 gcc/config/dragonfly.opt.urls
 create mode 100644 gcc/config/epiphany/epiphany.opt.urls
 create mode 100644 gcc/config/fr30/fr30.opt.urls
 create mode 100644 gcc/config/freebsd.opt.urls
 create mode 100644 gcc/config/frv/frv.opt.urls
 create mode 100644 gcc/config/ft32/ft32.opt.urls
 create mode 100644 gcc/config/fused-madd.opt.urls
 create mode 100644 gcc/config/g.opt.urls
 create mode 100644 gcc/config/gcn/gcn.opt.urls
 create mode 100644 gcc/config/gnu-user.opt.urls
 create mode 100644 gcc/config/h8300/h8300.opt.urls
 create mode 100644 gcc/config/hpux11.opt.urls
 create mode 100644 gcc/config/i386/cygming.opt.urls
 create mode 100644 gcc/config/i386/cygwin.opt.urls
 create mode 100644 gcc/config/i386/djgpp.opt.urls
 create mode 100644 gcc/config/i386/i386.opt.urls
 create mode 100644 gcc/config/i386/mingw-w64.opt.urls
 create mode 100644 gcc/config/i386/mingw.opt.urls
 create mode 100644 gcc/config/i386/nto.opt.urls
 create mode 100644 gcc/config/ia64/ia64.opt.urls
 create mode 100644 gcc/config/ia64/ilp32.opt.urls
 create mode 100644 gcc/config/ia64/vms.opt.urls
 create mode 100644 gcc/config/iq2000/iq2000.opt.urls
 create mode 100644 gcc/config/linux-android.opt.urls
 create mode 100644 gcc/config/linux.opt.urls
 create mode 100644 gcc/config/lm32/lm32.opt.urls
 create mode 100644 gcc/config/loongarch/loongarch.opt.urls
 create mode 100644 gcc/config/lynx.opt.urls
 create mode 100644 gcc/config/m32c/m32c.opt.urls
 create mode 100644 gcc/config/m32r/m32r.opt.urls
 create mode 100644 gcc/config/m68k/ieee.opt.urls
 create mode 100644 gcc/config/m68k/m68k-tables.opt.urls
 create mode 100644 gcc/config/m68k/m68k.opt.urls
 create mode 100644 gcc/config/m68k/uclinux.opt.urls
 create mode 100644 gcc/config/mcore/mcore.opt.urls
 create mode 100644 gcc/config/microblaze/microblaze.opt.urls
 create mode 100644 gcc/config/mips/mips-tables.opt.urls
 create mode 100644 gcc/config/mips/mips.opt.urls
 create mode 100644 gcc/config/mips/sde.opt.urls
 create mode 100644 gcc/config/mmix/mmix.opt.urls
 create mode 100644 gcc/config/mn10300/mn10300.opt.urls
 create mode 100644 gcc/config/moxie/moxie.opt.urls
 create mode 100644 gcc/config/msp430/msp430.opt.urls
 create mode 100644 gcc/config/nds32/nds32-elf.opt.urls
 create mode 100644 gcc/config/nds32/nds32-linux.opt.urls
 create mode 100644 gcc/config/nds32/nds32.opt.urls
 create mode 100644 gcc/config/netbsd-elf.opt.urls
 create mode 100644 gcc/config/netbsd.opt.urls
 create mode 100644 gcc/config/nios2/elf.opt.urls
 create mode 100644 gcc/config/nios2/nios2.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx-gen.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx.opt.urls
 create mode 100644 gcc/config/openbsd.opt.urls
 create mode 100644 gcc/config/or1k/elf.opt.urls
 create mode 100644 gcc/config/or1k/or1k.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1010.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1111.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1131.opt.urls
 create mode 100644 gcc/config/pa/pa.opt.urls
 create mode 100644 gcc/config/pa/pa64-hpux.opt.urls
 create mode 100644 gcc/config/pdp11/pdp11.opt.urls
 create mode 100644 gcc/config/pru/pru.opt.urls
 create mode 100644 gcc/config/riscv/riscv.opt.urls
 create mode 100644 gcc/config/rl78/rl78.opt.urls
 create mode 100644 gcc/config/rpath.opt.urls
 create mode 100644 gcc/config/rs6000/476.opt.urls
 create mode 100644 gcc/config/rs6000/aix64.opt.urls
 create mode 100644 gcc/config/rs6000/darwin.opt.urls
 create mode 100644 gcc/config/rs6000/linux64.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000-tables.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000.opt.urls
 create mode 100644 gcc/config/rs6000/sysv4.opt.urls
 create mode 100644 gcc/config/rtems.opt.urls
 create mode 100644 gcc/config/rx/elf.opt.urls
 create mode 100644 gcc/config/rx/rx.opt.urls
 create mode 100644 gcc/config/s390/s390.opt.urls
 create mode 100644 gcc/config/s390/tpf.opt.urls
 create mode 100644 gcc/config/sh/sh.opt.urls
 create mode 100644 gcc/config/sh/superh.opt.urls
 create mode 100644 gcc/config/sol2.opt.urls
 create mode 100644 gcc/config/sparc/long-double-switch.opt.urls
 create mode 100644 gcc/config/sparc/sparc.opt.urls
 create mode 100644 gcc/config/stormy16/stormy16.opt.urls
 create mode 100644 gcc/config/v850/v850.opt.urls
 create mode 100644 gcc/config/vax/elf.opt.urls
 create mode 100644 gcc/config/vax/vax.opt.urls
 create mode 100644 gcc/config/visium/visium.opt.urls
 create mode 100644 gcc/config/vms/vms.opt.urls
 create mode 100644 gcc/config/vxworks-smp.opt.urls
 create mode 100644 gcc/config/vxworks.opt.urls
 create mode 100644 gcc/config/xtensa/elf.opt.urls
 create mode 100644 gcc/config/xtensa/uclinux.opt.urls
 create mode 100644 gcc/config/xtensa/xtensa.opt.urls
 create mode 100644 gcc/d/lang.opt.urls
 create mode 100644 gcc/fortran/lang.opt.urls
 create mode 100644 gcc/go/lang.opt.urls
 create mode 100644 gcc/lto/lang.opt.urls
 create mode 100644 gcc/m2/lang.opt.urls
 create mode 100644 gcc/params.opt.urls
 create mode 100644 gcc/rust/lang.opt.urls

diff --git a/gcc/ada/gcc-interface/lang.opt.urls b/gcc/ada/gcc-interface/lang.opt.urls
new file mode 100644
index 000000000000..7913bcb5558d
--- /dev/null
+++ b/gcc/ada/gcc-interface/lang.opt.urls
@@ -0,0 +1,30 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/ada/gcc-interface/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+nostdlib
+UrlSuffix(gcc/Link-Options.html#index-nostdlib)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+; skipping UrlSuffix for 'fsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
+
+; skipping UrlSuffix for 'funsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'
+
diff --git a/gcc/analyzer/analyzer.opt.urls b/gcc/analyzer/analyzer.opt.urls
new file mode 100644
index 000000000000..9f7d33ff434c
--- /dev/null
+++ b/gcc/analyzer/analyzer.opt.urls
@@ -0,0 +1,206 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/analyzer/analyzer.opt and generated HTML
+
+Wanalyzer-allocation-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-allocation-size)
+
+Wanalyzer-deref-before-check
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-deref-before-check)
+
+Wanalyzer-double-fclose
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-fclose)
+
+Wanalyzer-double-free
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free)
+
+Wanalyzer-exposure-through-output-file
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-output-file)
+
+Wanalyzer-exposure-through-uninit-copy
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-uninit-copy)
+
+Wanalyzer-fd-access-mode-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-access-mode-mismatch)
+
+Wanalyzer-fd-double-close
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-double-close)
+
+Wanalyzer-fd-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-leak)
+
+Wanalyzer-fd-phase-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-phase-mismatch)
+
+Wanalyzer-fd-type-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-type-mismatch)
+
+Wanalyzer-fd-use-after-close
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-after-close)
+
+Wanalyzer-fd-use-without-check
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-without-check)
+
+Wanalyzer-file-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-file-leak)
+
+Wanalyzer-free-of-non-heap
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-free-of-non-heap)
+
+Wanalyzer-imprecise-fp-arithmetic
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-imprecise-fp-arithmetic)
+
+Wanalyzer-infinite-recursion
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-recursion)
+
+Wanalyzer-jump-through-null
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-jump-through-null)
+
+Wanalyzer-malloc-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-malloc-leak)
+
+Wanalyzer-mismatching-deallocation
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-mismatching-deallocation)
+
+Wanalyzer-out-of-bounds
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-out-of-bounds)
+
+Wanalyzer-overlapping-buffers
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-overlapping-buffers)
+
+Wanalyzer-possible-null-argument
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-argument)
+
+Wanalyzer-possible-null-dereference
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-dereference)
+
+Wanalyzer-unsafe-call-within-signal-handler
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-unsafe-call-within-signal-handler)
+
+Wanalyzer-null-argument
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-argument)
+
+Wanalyzer-null-dereference
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-dereference)
+
+Wanalyzer-putenv-of-auto-var
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-putenv-of-auto-var)
+
+Wanalyzer-shift-count-negative
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-negative)
+
+Wanalyzer-shift-count-overflow
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-overflow)
+
+Wanalyzer-stale-setjmp-buffer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-stale-setjmp-buffer)
+
+Wanalyzer-tainted-allocation-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-allocation-size)
+
+Wanalyzer-tainted-array-index
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-array-index)
+
+Wanalyzer-tainted-assertion
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-assertion)
+
+Wanalyzer-tainted-divisor
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-divisor)
+
+Wanalyzer-tainted-offset
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-offset)
+
+Wanalyzer-tainted-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-size)
+
+Wanalyzer-use-after-free
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-after-free)
+
+Wanalyzer-use-of-pointer-in-stale-stack-frame
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-pointer-in-stale-stack-frame)
+
+Wanalyzer-va-arg-type-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-arg-type-mismatch)
+
+Wanalyzer-va-list-exhausted
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-exhausted)
+
+Wanalyzer-va-list-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-leak)
+
+Wanalyzer-va-list-use-after-va-end
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-use-after-va-end)
+
+Wanalyzer-write-to-const
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-const)
+
+Wanalyzer-write-to-string-literal
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-literal)
+
+Wanalyzer-use-of-uninitialized-value
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-uninitialized-value)
+
+Wanalyzer-too-complex
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-too-complex)
+
+fanalyzer-checker=
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-checker)
+
+fanalyzer-debug-text-art
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-debug-text-art)
+
+fanalyzer-fine-grained
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-fine-grained)
+
+fanalyzer-feasibility
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-feasibility)
+
+fanalyzer-show-duplicate-count
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-duplicate-count)
+
+fanalyzer-state-purge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-purge)
+
+fanalyzer-state-merge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-merge)
+
+fanalyzer-suppress-followups
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-suppress-followups)
+
+fanalyzer-transitivity
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-transitivity)
+
+fanalyzer-show-events-in-system-headers
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-events-in-system-headers)
+
+fanalyzer-call-summaries
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-call-summaries)
+
+fanalyzer-undo-inlining
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-undo-inlining)
+
+fdump-analyzer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer)
+
+fdump-analyzer-stderr
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-stderr)
+
+fdump-analyzer-callgraph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-callgraph)
+
+fdump-analyzer-exploded-graph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-graph)
+
+fdump-analyzer-exploded-paths
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-paths)
+
+fdump-analyzer-json
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-json)
+
+fdump-analyzer-state-purge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-state-purge)
+
+fdump-analyzer-supergraph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-supergraph)
+
+fdump-analyzer-untracked
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-untracked)
+
diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
new file mode 100644
index 000000000000..8fccbc77ea3a
--- /dev/null
+++ b/gcc/c-family/c.opt.urls
@@ -0,0 +1,1409 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/c-family/c.opt and generated HTML
+
+A
+UrlSuffix(gcc/Preprocessor-Options.html#index-A)
+
+C
+UrlSuffix(gcc/Preprocessor-Options.html#index-C)
+
+CC
+UrlSuffix(gcc/Preprocessor-Options.html#index-CC)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+F
+UrlSuffix(gcc/Darwin-Options.html#index-F)
+
+fgimple
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgimple)
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+Mno-modules
+UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+fdeps-format=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-format)
+
+fdeps-file=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-file)
+
+fdeps-target=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-target)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+U
+UrlSuffix(gcc/Preprocessor-Options.html#index-U)
+
+Wabi
+UrlSuffix(gcc/Warning-Options.html#index-Wabi)
+
+Wabi=
+UrlSuffix(gcc/Warning-Options.html#index-Wabi)
+
+Wabi-tag
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
+
+Wabsolute-value
+UrlSuffix(gcc/Warning-Options.html#index-Wabsolute-value)
+
+Waddress
+UrlSuffix(gcc/Warning-Options.html#index-Waddress)
+
+Waligned-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
+
+Waligned-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Walloca
+UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca)
+
+Walloc-size-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-size-larger-than_003d)
+
+Walloc-zero
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-zero)
+
+Walloca-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
+
+Warray-bounds=
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Warray-compare
+UrlSuffix(gcc/Warning-Options.html#index-Warray-compare)
+
+Warray-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+
+Warray-parameter=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+
+Wzero-length-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
+
+Wassign-intercept
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wassign-intercept)
+
+Wbad-function-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wbad-function-cast)
+
+Wbidi-chars
+UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars)
+
+Wbidi-chars=
+UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars)
+
+Wbool-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wbool-compare)
+
+Wbool-operation
+UrlSuffix(gcc/Warning-Options.html#index-Wbool-operation)
+
+Wframe-address
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
+
+Wbuiltin-declaration-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
+
+Wbuiltin-macro-redefined
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-macro-redefined)
+
+Wc11-c2x-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc11-c2x-compat)
+
+Wc90-c99-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc90-c99-compat)
+
+Wc99-c11-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc99-c11-compat)
+
+Wc++-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b-compat)
+
+Wc++11-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-compat)
+
+Wc++14-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-compat)
+
+Wc++17-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-compat)
+
+Wc++20-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-compat)
+
+Wc++11-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-extensions)
+
+Wc++14-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-extensions)
+
+Wc++17-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-extensions)
+
+Wc++20-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-extensions)
+
+Wc++23-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b23-extensions)
+
+Wcast-function-type
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-function-type)
+
+Wcast-qual
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-qual)
+
+Wcatch-value
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
+
+Wcatch-value=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
+
+Wchar-subscripts
+UrlSuffix(gcc/Warning-Options.html#index-Wchar-subscripts)
+
+Wclobbered
+UrlSuffix(gcc/Warning-Options.html#index-Wclobbered)
+
+Wcomma-subscript
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcomma-subscript)
+
+Wcomment
+UrlSuffix(gcc/Warning-Options.html#index-Wcomment)
+
+Wcomments
+UrlSuffix(gcc/Warning-Options.html#index-Wcomments)
+
+Wconditionally-supported
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconditionally-supported)
+
+Wconversion
+UrlSuffix(gcc/Warning-Options.html#index-Wconversion)
+
+Wconversion-null
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconversion-null)
+
+Wcpp
+UrlSuffix(gcc/Warning-Options.html#index-Wcpp)
+
+Wctad-maybe-unsupported
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported)
+
+Wctor-dtor-privacy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctor-dtor-privacy)
+
+Wdangling-else
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-else)
+
+Wdangling-pointer
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer)
+
+Wdangling-pointer=
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer)
+
+Wdangling-reference
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference)
+
+Wdate-time
+UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
+
+Wdeclaration-after-statement
+UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-after-statement)
+
+Wdelete-incomplete
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-incomplete)
+
+Wdelete-non-virtual-dtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-non-virtual-dtor)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Wdeprecated-copy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-copy)
+
+Wdeprecated-enum-enum-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-enum-conversion)
+
+Wdeprecated-enum-float-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-float-conversion)
+
+Wdesignated-init
+UrlSuffix(gcc/Warning-Options.html#index-Wdesignated-init)
+
+Wdiscarded-array-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-array-qualifiers)
+
+Wdiscarded-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-qualifiers)
+
+Wdiv-by-zero
+UrlSuffix(gcc/Warning-Options.html#index-Wdiv-by-zero)
+
+Wduplicated-branches
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-branches)
+
+Wduplicated-cond
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-cond)
+
+Weffc++
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Weffc_002b_002b)
+
+Wempty-body
+UrlSuffix(gcc/Warning-Options.html#index-Wempty-body)
+
+Wendif-labels
+UrlSuffix(gcc/Warning-Options.html#index-Wendif-labels)
+
+Wenum-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-compare)
+
+Wenum-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-conversion)
+
+Wenum-int-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-int-mismatch)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wexceptions
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wexceptions)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wextra-semi
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wextra-semi)
+
+Wfloat-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wfloat-conversion)
+
+Wfloat-equal
+UrlSuffix(gcc/Warning-Options.html#index-Wfloat-equal)
+
+Wformat
+UrlSuffix(gcc/Warning-Options.html#index-Wformat)
+
+Wformat-contains-nul
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-contains-nul)
+
+Wformat-extra-args
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-extra-args)
+
+Wformat-nonliteral
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-nonliteral)
+
+Wformat-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
+Wformat-security
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-security)
+
+Wformat-signedness
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-signedness)
+
+Wformat-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
+Wformat-y2k
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-y2k)
+
+Wformat-zero-length
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-zero-length)
+
+Wformat=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat)
+
+Wformat-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
+Wformat-truncation=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
+Wflex-array-member-not-at-end
+UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+
+Wif-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned)
+
+Wignored-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wignored-qualifiers)
+
+Wignored-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wignored-attributes)
+
+Winaccessible-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winaccessible-base)
+
+Wincompatible-pointer-types
+UrlSuffix(gcc/Warning-Options.html#index-Wincompatible-pointer-types)
+
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
+Waddress-of-packed-member
+UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
+
+Winit-self
+UrlSuffix(gcc/Warning-Options.html#index-Winit-self)
+
+Winit-list-lifetime
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winit-list-lifetime)
+
+Winterference-size
+UrlSuffix(gcc/Warning-Options.html#index-Winterference-size)
+
+Wimplicit
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wdouble-promotion
+UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
+
+Wexpansion-to-defined
+UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
+
+Wimplicit-function-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
+
+Wimplicit-int
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
+
+Winherited-variadic-ctor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winherited-variadic-ctor)
+
+Wint-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wint-conversion)
+
+Wint-in-bool-context
+UrlSuffix(gcc/Warning-Options.html#index-Wint-in-bool-context)
+
+Wint-to-pointer-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wint-to-pointer-cast)
+
+Winvalid-constexpr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-constexpr)
+
+Winvalid-offsetof
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-offsetof)
+
+Winvalid-pch
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-pch)
+
+Winvalid-utf8
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-utf8)
+
+Wjump-misses-init
+UrlSuffix(gcc/Warning-Options.html#index-Wjump-misses-init)
+
+Wliteral-suffix
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wliteral-suffix)
+
+Wlogical-op
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
+
+Wlogical-not-parentheses
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-not-parentheses)
+
+Wlong-long
+UrlSuffix(gcc/Warning-Options.html#index-Wlong-long)
+
+Wmain
+UrlSuffix(gcc/Warning-Options.html#index-Wmain)
+
+Wmain
+UrlSuffix(gcc/Warning-Options.html#index-Wmain)
+
+Wmemset-transposed-args
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+
+Wmemset-elt-size
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-elt-size)
+
+Wmisleading-indentation
+UrlSuffix(gcc/Warning-Options.html#index-Wmisleading-indentation)
+
+Wmismatched-dealloc
+UrlSuffix(gcc/Warning-Options.html#index-Wmismatched-dealloc)
+
+Wmismatched-new-delete
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete)
+
+Wmismatched-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-tags)
+
+Wmissing-braces
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-braces)
+
+Wmissing-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-declarations)
+
+Wmissing-field-initializers
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-field-initializers)
+
+Wmissing-requires
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
+
+Wmissing-template-keyword
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
+
+Wmultistatement-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
+
+Wmultiple-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
+
+Wnamespaces
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
+
+Wnrvo
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
+
+Wpacked-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
+
+Wrange-loop-construct
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
+
+Wredundant-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
+
+Wsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
+
+Wsizeof-pointer-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
+
+Wsizeof-array-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
+
+Wsizeof-pointer-memaccess
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
+
+Wsizeof-array-argument
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
+
+Wstring-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
+
+Wstringop-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overread
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
+
+Wstringop-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
+
+Wstrict-flex-arrays
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
+
+Wsuggest-attribute=format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
+
+Wsuggest-override
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
+
+Wswitch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
+
+Wswitch-default
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
+
+Wswitch-enum
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
+
+Wswitch-bool
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
+
+Wswitch-outside-range
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
+
+Wtemplates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
+
+Wmissing-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
+
+Wmissing-format-attribute
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-format-attribute)
+
+Wmissing-include-dirs
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
+
+Wmissing-parameter-type
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-parameter-type)
+
+Wmissing-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-prototypes)
+
+Wmissing-variable-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-variable-declarations)
+
+Wmultichar
+UrlSuffix(gcc/Warning-Options.html#index-Wmultichar)
+
+Wnarrowing
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnarrowing)
+
+Wnested-externs
+UrlSuffix(gcc/Warning-Options.html#index-Wnested-externs)
+
+Wnoexcept
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept)
+
+Wnoexcept-type
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept-type)
+
+Wnon-template-friend
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-template-friend)
+
+Wclass-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
+
+Wclass-memaccess
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
+
+Wnon-virtual-dtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-virtual-dtor)
+
+Wnonnull
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull)
+
+Wnonnull
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull)
+
+Wnonnull-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare)
+
+Wnormalized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized)
+
+Wnormalized=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized)
+
+Wobjc-root-class
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wobjc-root-class)
+
+Wold-style-cast
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-old-style-cast)
+
+Wold-style-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-declaration)
+
+Wold-style-definition
+UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-definition)
+
+Wopenacc-parallelism
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
+
+Wopenmp-simd
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
+
+Woverlength-strings
+UrlSuffix(gcc/Warning-Options.html#index-Wno-overlength-strings)
+
+Woverloaded-virtual
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual)
+
+Woverloaded-virtual=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual)
+
+Woverride-init
+UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init)
+
+Woverride-init-side-effects
+UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init-side-effects)
+
+Wpacked-bitfield-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-bitfield-compat)
+
+Wparentheses
+UrlSuffix(gcc/Warning-Options.html#index-Wno-parentheses)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wpessimizing-move
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-pessimizing-move)
+
+; skipping UrlSuffix for 'Wpmf-conversions' due to multiple URLs:
+;   duplicate: 'gcc/Bound-member-functions.html#index-Wno-pmf-conversions-1'
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-Wno-pmf-conversions'
+
+; skipping UrlSuffix for 'Wpointer-arith' due to multiple URLs:
+;   duplicate: 'gcc/Pointer-Arith.html#index-Wpointer-arith-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wno-pointer-arith'
+
+Wpointer-sign
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-sign)
+
+Wpointer-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-compare)
+
+Wpointer-to-int-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-to-int-cast)
+
+Wpragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pragmas)
+
+Wprio-ctor-dtor
+UrlSuffix(gcc/Warning-Options.html#index-Wno-prio-ctor-dtor)
+
+Wproperty-assign-default
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-property-assign-default)
+
+Wprotocol
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-protocol)
+
+Wplacement-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wplacement-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wredundant-decls
+UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
+
+Wredundant-move
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-move)
+
+Wregister
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register)
+
+Wreorder
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wscalar-storage-order
+UrlSuffix(gcc/Warning-Options.html#index-Wno-scalar-storage-order)
+
+Wselector
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-selector)
+
+Wself-move
+UrlSuffix(gcc/Warning-Options.html#index-Wno-self-move)
+
+Wsequence-point
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sequence-point)
+
+Wshadow-ivar
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow-ivar)
+
+Wshift-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow)
+
+Wshift-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow)
+
+Wshift-count-negative
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-negative)
+
+Wshift-count-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-overflow)
+
+Wshift-negative-value
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-negative-value)
+
+Warith-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
+
+Wsign-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
+
+Wsign-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
+
+Wsign-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-conversion)
+
+Wsign-promo
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sign-promo)
+
+Wstrict-null-sentinel
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+
+Wstrict-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+
+Wstrict-aliasing=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wstrict-selector-match
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-strict-selector-match)
+
+Wsync-nand
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sync-nand)
+
+Wsystem-headers
+UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
+
+Wtautological-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-tautological-compare)
+
+Wterminate
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-terminate)
+
+Wtraditional
+UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional)
+
+Wtraditional-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional-conversion)
+
+Wtrigraphs
+UrlSuffix(gcc/Warning-Options.html#index-Wtrigraphs)
+
+Wundeclared-selector
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-undeclared-selector)
+
+Wundef
+UrlSuffix(gcc/Warning-Options.html#index-Wno-undef)
+
+Wunicode
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unicode)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wunknown-pragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
+
+Wunsuffixed-float-constants
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unsuffixed-float-constants)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+Wunused-local-typedefs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-local-typedefs)
+
+Wunused-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wunused-macros)
+
+Wunused-result
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wuse-after-free=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wvariadic-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wno-variadic-macros)
+
+Wvarargs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-varargs)
+
+Wvexing-parse
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-vexing-parse)
+
+Wvla
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla)
+
+Wvla-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-larger-than)
+
+Wvla-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-parameter)
+
+Wvolatile
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-volatile)
+
+Wvolatile-register-var
+UrlSuffix(gcc/Warning-Options.html#index-Wno-volatile-register-var)
+
+Wvirtual-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-inheritance)
+
+Wvirtual-move-assign
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
+
+Wwrite-strings
+UrlSuffix(gcc/Warning-Options.html#index-Wno-write-strings)
+
+Wxor-used-as-pow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-xor-used-as-pow)
+
+Wzero-as-null-pointer-constant
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-zero-as-null-pointer-constant)
+
+Wuseless-cast
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-useless-cast)
+
+Wsubobject-linkage
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
+
+Welaborated-enum-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
+
+Wduplicate-decl-specifier
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
+
+Wrestrict
+UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+
+; skipping UrlSuffix for 'ansi' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
+;   duplicate: 'gcc/Non-bugs.html#index-ansi-3'
+;   duplicate: 'gcc/Other-Builtins.html#index-ansi-2'
+;   duplicate: 'gcc/Standards.html#index-ansi'
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+fabi-compat-version=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-compat-version)
+
+faccess-control
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faccess-control)
+
+fada-spec-parent=
+UrlSuffix(gcc/Overall-Options.html#index-fada-spec-parent)
+
+faligned-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new)
+
+faligned-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new)
+
+fasm
+UrlSuffix(gcc/C-Dialect-Options.html#index-fasm)
+
+; skipping UrlSuffix for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
+;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
+;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
+; skipping LangUrlSuffix_D for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gdc/Other-Builtins.html#index-fno-builtin-1'
+;   duplicate: 'gdc/Runtime-Options.html#index-fbuiltin'
+
+fcanonical-system-headers
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-canonical-system-headers)
+
+fchar8_t
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fchar8_005ft)
+
+fconcepts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts)
+
+fconcepts-ts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts-ts)
+
+fcond-mismatch
+UrlSuffix(gcc/C-Dialect-Options.html#index-fcond-mismatch)
+
+fconstant-string-class=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fconstant-string-class)
+
+fconstexpr-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-depth)
+
+fconstexpr-cache-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-cache-depth)
+
+fconstexpr-fp-except
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-fp-except)
+
+fconstexpr-loop-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-loop-limit)
+
+fconstexpr-ops-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-ops-limit)
+
+fcontracts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontracts)
+
+fcontract-assumption-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-assumption-mode)
+
+fcontract-build-level=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-build-level)
+
+fcontract-strict-declarations=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-strict-declarations)
+
+fcontract-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-mode)
+
+fcontract-continuation-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-continuation-mode)
+
+fcontract-role=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-role)
+
+fcoroutines
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcoroutines)
+
+fdebug-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-fdebug-cpp)
+
+fdeclone-ctor-dtor
+UrlSuffix(gcc/Optimize-Options.html#index-fdeclone-ctor-dtor)
+
+fdefault-inline
+UrlSuffix(gcc/Inline.html#index-fno-default-inline)
+
+fdiagnostics-show-template-tree
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-template-tree)
+
+fdirectives-only
+UrlSuffix(gcc/Preprocessor-Options.html#index-fdirectives-only)
+
+; skipping UrlSuffix for 'fdollars-in-identifiers' due to multiple URLs:
+;   duplicate: 'gcc/Interoperation.html#index-fdollars-in-identifiers-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-fdollars-in-identifiers'
+
+fmacro-prefix-map=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fmacro-prefix-map)
+
+fdump-ada-spec
+UrlSuffix(gcc/Overall-Options.html#index-fdump-ada-spec)
+
+felide-constructors
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-felide-constructors)
+
+felide-type
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-felide-type)
+
+fenforce-eh-specs
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fenforce-eh-specs)
+
+fexec-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fexec-charset)
+
+fextended-identifiers
+UrlSuffix(gcc/Preprocessor-Options.html#index-fextended-identifiers)
+
+finput-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-finput-charset)
+
+fextern-tls-init
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fextern-tls-init)
+
+ffold-simple-inlines
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ffold-simple-inlines)
+
+; skipping UrlSuffix for 'ffreestanding' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ffreestanding-1'
+;   duplicate: 'gcc/Standards.html#index-ffreestanding'
+;   duplicate: 'gcc/Warning-Options.html#index-ffreestanding-2'
+
+fgnu-keywords
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fgnu-keywords)
+
+fgnu-runtime
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fgnu-runtime)
+
+fgnu89-inline
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu89-inline)
+
+fhosted
+UrlSuffix(gcc/C-Dialect-Options.html#index-fhosted)
+
+; skipping UrlSuffix for 'fimplement-inlines' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplement-inlines'
+;   duplicate: 'gcc/C_002b_002b-Interface.html#index-fno-implement-inlines-1'
+
+fimplicit-constexpr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-constexpr)
+
+fimplicit-inline-templates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-inline-templates)
+
+; skipping UrlSuffix for 'fimplicit-templates' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-templates'
+;   duplicate: 'gcc/Template-Instantiation.html#index-fno-implicit-templates-1'
+
+fnew-inheriting-ctors
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-inheriting-ctors)
+
+fkeep-inline-dllexport
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-inline-dllexport)
+
+flax-vector-conversions
+UrlSuffix(gcc/C-Dialect-Options.html#index-flax-vector-conversions)
+
+fmodules-ts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodules-ts)
+
+fmodule-header
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header)
+
+fmodule-header=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header)
+
+fmodule-implicit-inline
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-implicit-inline)
+
+fmodule-only
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-only)
+
+fmodule-mapper=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-mapper)
+
+fmodule-lazy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-lazy)
+
+Winvalid-imported-macros
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-imported-macros)
+
+Wcompare-distinct-pointer-types
+UrlSuffix(gcc/Warning-Options.html#index-Wcompare-distinct-pointer-types)
+
+flang-info-include-translate
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate)
+
+flang-info-include-translate-not
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate-not)
+
+flang-info-include-translate=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate)
+
+flang-info-module-cmi
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi)
+
+flang-info-module-cmi=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi)
+
+fmax-include-depth=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fmax-include-depth)
+
+; skipping UrlSuffix for 'fms-extensions' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fms-extensions'
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fms-extensions-1'
+;   duplicate: 'gcc/Unnamed-Fields.html#index-fms-extensions-2'
+
+fnew-ttp-matching
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-ttp-matching)
+
+fnext-runtime
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnext-runtime)
+
+fnil-receivers
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnil-receivers)
+
+flocal-ivars
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-flocal-ivars)
+
+fivar-visibility=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fivar-visibility)
+
+fnonansi-builtins
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-nonansi-builtins)
+
+fnothrow-opt
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnothrow-opt)
+
+fobjc-abi-version=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-abi-version)
+
+fobjc-call-cxx-cdtors
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-call-cxx-cdtors)
+
+fobjc-direct-dispatch
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-direct-dispatch)
+
+fobjc-exceptions
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-exceptions)
+
+fobjc-gc
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-gc)
+
+fobjc-nilcheck
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-nilcheck)
+
+fopenacc
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc)
+
+fopenacc-dim=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
+
+fopenmp
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp)
+
+fopenmp-simd
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd)
+
+foperator-names
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-operator-names)
+
+foptional-diags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-optional-diags)
+
+fpch-deps
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-deps)
+
+fpch-preprocess
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-preprocess)
+
+fpermissive
+UrlSuffix(gcc/Warning-Options.html#index-fpermissive)
+
+; skipping UrlSuffix for 'fplan9-extensions' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fplan9-extensions'
+;   duplicate: 'gcc/Unnamed-Fields.html#index-fplan9-extensions-1'
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+ftrack-macro-expansion
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion)
+
+ftrack-macro-expansion=
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion)
+
+fpretty-templates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-pretty-templates)
+
+fprintf-return-value
+UrlSuffix(gcc/Optimize-Options.html#index-fno-printf-return-value)
+
+freplace-objc-classes
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-freplace-objc-classes)
+
+frtti
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti) LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-rtti)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+fshort-wchar
+UrlSuffix(gcc/Code-Gen-Options.html#index-fshort-wchar)
+
+; skipping UrlSuffix for 'fsigned-bitfields' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fno-signed-bitfields'
+;   duplicate: 'gcc/Non-bugs.html#index-fsigned-bitfields-1'
+
+; skipping UrlSuffix for 'fsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
+
+fsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fsized-deallocation)
+
+fstrict-flex-arrays
+UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays)
+
+fstrict-flex-arrays=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays)
+
+fsso-struct=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fsso-struct)
+
+fstats
+UrlSuffix(gcc/Developer-Options.html#index-fstats)
+
+fstrict-enums
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrict-enums)
+
+fstrong-eval-order
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order)
+
+fstrong-eval-order=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order)
+
+ftemplate-backtrace-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-backtrace-limit)
+
+ftemplate-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-depth)
+
+fthreadsafe-statics
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-threadsafe-statics)
+
+; skipping UrlSuffix for 'funsigned-bitfields' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fno-unsigned-bitfields'
+;   duplicate: 'gcc/Non-bugs.html#index-funsigned-bitfields-2'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-funsigned-bitfields-1'
+
+; skipping UrlSuffix for 'funsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'
+
+fuse-cxa-atexit
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fuse-cxa-atexit)
+
+fuse-cxa-get-exception-ptr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-use-cxa-get-exception-ptr)
+
+fvisibility-inlines-hidden
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-inlines-hidden)
+
+fvisibility-ms-compat
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-ms-compat)
+
+fweak
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-weak)
+
+fwide-exec-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fwide-exec-charset)
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+fzero-link
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fzero-link)
+
+gen-decls
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-gen-decls)
+
+femit-struct-debug-baseonly
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-baseonly)
+
+femit-struct-debug-reduced
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-reduced)
+
+femit-struct-debug-detailed=
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-detailed)
+
+fext-numeric-literals
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fext-numeric-literals)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imacros
+UrlSuffix(gcc/Preprocessor-Options.html#index-imacros)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+include
+UrlSuffix(gcc/Preprocessor-Options.html#index-include)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+iwithprefix
+UrlSuffix(gcc/Directory-Options.html#index-iwithprefix)
+
+iwithprefixbefore
+UrlSuffix(gcc/Directory-Options.html#index-iwithprefixbefore)
+
+no-integrated-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-no-integrated-cpp)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+; skipping UrlSuffix for 'nostdinc++' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-nostdinc_002b_002b'
+;   duplicate: 'gcc/Directory-Options.html#index-nostdinc_002b_002b-1'
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+; skipping UrlSuffix for 'pedantic' due to multiple URLs:
+;   duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3'
+;   duplicate: 'gcc/C-Extensions.html#index-pedantic-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4'
+
+print-objc-runtime-info
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-print-objc-runtime-info)
+
+remap
+UrlSuffix(gcc/Preprocessor-Options.html#index-remap)
+
+stdlib=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-stdlib)
+
+; skipping UrlSuffix for 'traditional' due to multiple URLs:
+;   duplicate: 'gcc/Incompatibilities.html#index-traditional-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-traditional'
+
+traditional-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp)
+
+trigraphs
+UrlSuffix(gcc/Preprocessor-Options.html#index-trigraphs)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
+w
+UrlSuffix(gcc/Warning-Options.html#index-w)
+
diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
new file mode 100644
index 000000000000..407c86018fc8
--- /dev/null
+++ b/gcc/common.opt.urls
@@ -0,0 +1,1832 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/common.opt and generated HTML
+
+###
+UrlSuffix(gcc/Overall-Options.html#index-_0023_0023_0023)
+
+fversion
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+B
+UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+O
+UrlSuffix(gcc/Optimize-Options.html#index-O)
+
+Os
+UrlSuffix(gcc/Optimize-Options.html#index-Os)
+
+Ofast
+UrlSuffix(gcc/Optimize-Options.html#index-Ofast)
+
+Og
+UrlSuffix(gcc/Optimize-Options.html#index-Og)
+
+Oz
+UrlSuffix(gcc/Optimize-Options.html#index-Oz)
+
+Q
+UrlSuffix(gcc/Developer-Options.html#index-Q)
+
+Qn
+UrlSuffix(gcc/System-V-Options.html#index-Qn)
+
+Qy
+UrlSuffix(gcc/System-V-Options.html#index-Qy)
+
+; skipping UrlSuffix for 'S' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-S-1'
+;   duplicate: 'gcc/Overall-Options.html#index-S'
+
+T
+UrlSuffix(gcc/Link-Options.html#index-T)
+
+; skipping UrlSuffix for 'W' due to multiple URLs:
+;   duplicate: 'gcc/Incompatibilities.html#index-W-3'
+;   duplicate: 'gcc/Warning-Options.html#index-W'
+
+Waggregate-return
+UrlSuffix(gcc/Warning-Options.html#index-Waggregate-return)
+
+Waggressive-loop-optimizations
+UrlSuffix(gcc/Warning-Options.html#index-Waggressive-loop-optimizations)
+
+Warray-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Warray-bounds=
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Wuse-after-free
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wuse-after-free=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wattributes
+UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
+
+Wattributes=
+UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
+
+Wattribute-alias
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
+
+Wattribute-alias=
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
+
+Wcast-align
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-align)
+
+Wcast-align=strict
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-align_003dstrict)
+
+Wcomplain-wrong-lang
+UrlSuffix(gcc/Warning-Options.html#index-Wcomplain-wrong-lang)
+
+Wcpp
+UrlSuffix(gcc/Warning-Options.html#index-Wcpp)
+
+Wattribute-warning
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-warning)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Wdeprecated-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated-declarations)
+
+Wdisabled-optimization
+UrlSuffix(gcc/Warning-Options.html#index-Wdisabled-optimization)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Werror=
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wfatal-errors
+UrlSuffix(gcc/Warning-Options.html#index-Wfatal-errors)
+
+Wframe-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-larger-than_003d)
+
+Wfree-nonheap-object
+UrlSuffix(gcc/Warning-Options.html#index-Wfree-nonheap-object)
+
+Wimplicit-fallthrough
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
+; skipping UrlSuffix for 'Winline' due to multiple URLs:
+;   duplicate: 'gcc/Inline.html#index-Winline-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Winline'
+
+Winvalid-memory-model
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-memory-model)
+
+Wlarger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wlarger-than_003d)
+
+Wnonnull-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare)
+
+Wnull-dereference
+UrlSuffix(gcc/Warning-Options.html#index-Wno-null-dereference)
+
+Wunsafe-loop-optimizations
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unsafe-loop-optimizations)
+
+Wmissing-noreturn
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-noreturn)
+
+Wodr
+UrlSuffix(gcc/Warning-Options.html#index-Wno-odr)
+
+Woverflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-overflow)
+
+Wlto-type-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wlto-type-mismatch)
+
+Wpacked
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed)
+
+Wpadded
+UrlSuffix(gcc/Warning-Options.html#index-Wno-padded)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-local-addr
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-local-addr)
+
+Wshadow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow)
+
+Wshadow=global
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dglobal)
+
+Wshadow=local
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dlocal)
+
+Wshadow=compatible-local
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dcompatible-local)
+
+Wstack-protector
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-protector)
+
+Wstack-usage=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-usage)
+
+Wstrict-aliasing
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-aliasing=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wstrict-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wsuggest-attribute=cold
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dcold)
+
+Wsuggest-attribute=const
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dconst)
+
+Wsuggest-attribute=pure
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dpure)
+
+Wsuggest-attribute=noreturn
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dnoreturn)
+
+Wsuggest-attribute=malloc
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dmalloc)
+
+Wsuggest-final-types
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-types)
+
+Wsuggest-final-methods
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-methods)
+
+Wswitch-unreachable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-unreachable)
+
+Wsystem-headers
+UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
+
+Wtrampolines
+UrlSuffix(gcc/Warning-Options.html#index-Wno-trampolines)
+
+Wtrivial-auto-var-init
+UrlSuffix(gcc/Warning-Options.html#index-Wno-trivial-auto-var-init)
+
+Wtype-limits
+UrlSuffix(gcc/Warning-Options.html#index-Wno-type-limits)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+Wunused-but-set-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-parameter)
+
+Wunused-but-set-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-variable)
+
+Wunused-function
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-function)
+
+Wunused-label
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-label)
+
+Wunused-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter)
+
+Wunused-value
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-value)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wcoverage-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-mismatch)
+
+Wcoverage-invalid-line-number
+UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-invalid-line-number)
+
+Wmissing-profile
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-profile)
+
+Wvector-operation-performance
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vector-operation-performance)
+
+Wtsan
+UrlSuffix(gcc/Warning-Options.html#index-Wno-tsan)
+
+Xassembler
+UrlSuffix(gcc/Assembler-Options.html#index-Xassembler)
+
+Xlinker
+UrlSuffix(gcc/Link-Options.html#index-Xlinker)
+
+Xpreprocessor
+UrlSuffix(gcc/Preprocessor-Options.html#index-Xpreprocessor)
+
+aux-info
+UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
+
+aux-info=
+UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
+
+coverage
+UrlSuffix(gcc/Instrumentation-Options.html#index-coverage)
+
+; skipping UrlSuffix for 'c' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-c-1'
+;   duplicate: 'gcc/Overall-Options.html#index-c'
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+dumpbase
+UrlSuffix(gcc/Overall-Options.html#index-dumpbase)
+
+dumpbase-ext
+UrlSuffix(gcc/Overall-Options.html#index-dumpbase-ext)
+
+dumpdir
+UrlSuffix(gcc/Overall-Options.html#index-dumpdir)
+
+dumpmachine
+UrlSuffix(gcc/Developer-Options.html#index-dumpmachine)
+
+dumpspecs
+UrlSuffix(gcc/Developer-Options.html#index-dumpspecs)
+
+dumpversion
+UrlSuffix(gcc/Developer-Options.html#index-dumpversion)
+
+dumpfullversion
+UrlSuffix(gcc/Developer-Options.html#index-dumpfullversion)
+
+e
+UrlSuffix(gcc/Link-Options.html#index-e)
+
+fabi-version=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-version)
+
+faggressive-loop-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-faggressive-loop-optimizations)
+
+falign-functions
+UrlSuffix(gcc/Optimize-Options.html#index-falign-functions)
+
+falign-functions=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-functions)
+
+falign-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps)
+
+falign-jumps=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps)
+
+falign-labels
+UrlSuffix(gcc/Optimize-Options.html#index-falign-labels)
+
+falign-labels=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-labels)
+
+falign-loops
+UrlSuffix(gcc/Optimize-Options.html#index-falign-loops)
+
+falign-loops=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-loops)
+
+fallow-store-data-races
+UrlSuffix(gcc/Optimize-Options.html#index-fallow-store-data-races)
+
+fanalyzer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer)
+
+fasan-shadow-offset=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fasan-shadow-offset)
+
+fsanitize-sections=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-sections)
+
+fsanitize-recover=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover)
+
+fsanitize-recover
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover)
+
+fsanitize-trap=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap)
+
+fsanitize-trap
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap)
+
+fsanitize-address-use-after-scope
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-address-use-after-scope)
+
+fsanitize-undefined-trap-on-error
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-undefined-trap-on-error)
+
+fasynchronous-unwind-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-fasynchronous-unwind-tables)
+
+fauto-inc-dec
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-inc-dec)
+
+fauto-profile
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile)
+
+fauto-profile=
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile)
+
+fbounds-check
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+fbranch-count-reg
+UrlSuffix(gcc/Optimize-Options.html#index-fbranch-count-reg)
+
+fbranch-probabilities
+UrlSuffix(gcc/Optimize-Options.html#index-fbranch-probabilities)
+
+fcallgraph-info
+UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info)
+
+fcallgraph-info=
+UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info)
+
+fcaller-saves
+UrlSuffix(gcc/Optimize-Options.html#index-fcaller-saves)
+
+fcheck-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcheck-new)
+
+fchecking
+UrlSuffix(gcc/Developer-Options.html#index-fchecking)
+
+fchecking=
+UrlSuffix(gcc/Developer-Options.html#index-fchecking)
+
+fcanon-prefix-map
+UrlSuffix(gcc/Overall-Options.html#index-fcanon-prefix-map)
+
+fcode-hoisting
+UrlSuffix(gcc/Optimize-Options.html#index-fcode-hoisting)
+
+fcombine-stack-adjustments
+UrlSuffix(gcc/Optimize-Options.html#index-fcombine-stack-adjustments)
+
+fcommon
+UrlSuffix(gcc/Code-Gen-Options.html#index-fcommon)
+
+fcompare-debug
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug)
+
+fcompare-debug=
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug)
+
+fcompare-debug-second
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug-second)
+
+fcompare-elim
+UrlSuffix(gcc/Optimize-Options.html#index-fcompare-elim)
+
+fconserve-stack
+UrlSuffix(gcc/Optimize-Options.html#index-fconserve-stack)
+
+fcprop-registers
+UrlSuffix(gcc/Optimize-Options.html#index-fcprop-registers)
+
+ffold-mem-offsets
+UrlSuffix(gcc/Optimize-Options.html#index-ffold-mem-offsets)
+
+fcrossjumping
+UrlSuffix(gcc/Optimize-Options.html#index-fcrossjumping)
+
+fcse-follow-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-fcse-follow-jumps)
+
+fcse-skip-blocks
+UrlSuffix(gcc/Optimize-Options.html#index-fcse-skip-blocks)
+
+fcx-limited-range
+UrlSuffix(gcc/Optimize-Options.html#index-fcx-limited-range)
+
+fcx-fortran-rules
+UrlSuffix(gcc/Optimize-Options.html#index-fcx-fortran-rules)
+
+fdata-sections
+UrlSuffix(gcc/Optimize-Options.html#index-fdata-sections)
+
+fdbg-cnt-list
+UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt-list)
+
+fdbg-cnt=
+UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt)
+
+fdebug-prefix-map=
+UrlSuffix(gcc/Debugging-Options.html#index-fdebug-prefix-map)
+
+ffile-prefix-map=
+UrlSuffix(gcc/Overall-Options.html#index-ffile-prefix-map)
+
+fdebug-types-section
+UrlSuffix(gcc/Debugging-Options.html#index-fdebug-types-section)
+
+fdefer-pop
+UrlSuffix(gcc/Optimize-Options.html#index-fdefer-pop)
+
+fdelayed-branch
+UrlSuffix(gcc/Optimize-Options.html#index-fdelayed-branch)
+
+fdelete-dead-exceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fdelete-dead-exceptions)
+
+fdelete-null-pointer-checks
+UrlSuffix(gcc/Optimize-Options.html#index-fdelete-null-pointer-checks)
+
+fdevirtualize-at-ltrans
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-at-ltrans)
+
+fdevirtualize-speculatively
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-speculatively)
+
+fdevirtualize
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize)
+
+fdiagnostics-show-location=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-location)
+
+fdiagnostics-show-caret
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-caret)
+
+fdiagnostics-show-labels
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-labels)
+
+fdiagnostics-show-line-numbers
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-line-numbers)
+
+fdiagnostics-color
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
+
+fdiagnostics-color=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
+
+fdiagnostics-urls=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-urls)
+
+fdiagnostics-column-unit=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-unit)
+
+fdiagnostics-column-origin=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-origin)
+
+fdiagnostics-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format)
+
+fdiagnostics-escape-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-escape-format)
+
+fdiagnostics-parseable-fixits
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-parseable-fixits)
+
+fdiagnostics-generate-patch
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-generate-patch)
+
+fdiagnostics-show-option
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-option)
+
+fdiagnostics-show-cwe
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-cwe)
+
+fdiagnostics-show-rules
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-rules)
+
+fdiagnostics-path-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-path-format)
+
+ftabstop=
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftabstop)
+
+fdiagnostics-show-path-depths
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-path-depths)
+
+fdiagnostics-text-art-charset=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-text-art-charset)
+
+fdiagnostics-minimum-margin-width=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-minimum-margin-width)
+
+fdisable-
+UrlSuffix(gcc/Developer-Options.html#index-fdisable-)
+
+fenable-
+UrlSuffix(gcc/Developer-Options.html#index-fenable-)
+
+fdump-final-insns
+UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns)
+
+fdump-final-insns=
+UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns)
+
+fdump-go-spec=
+UrlSuffix(gcc/Overall-Options.html#index-fdump-go-spec)
+
+fdump-noaddr
+UrlSuffix(gcc/Developer-Options.html#index-fdump-noaddr)
+
+freport-bug
+UrlSuffix(gcc/Developer-Options.html#index-freport-bug)
+
+fdump-passes
+UrlSuffix(gcc/Developer-Options.html#index-fdump-passes)
+
+fdump-unnumbered
+UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered)
+
+fdump-unnumbered-links
+UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered-links)
+
+fdwarf2-cfi-asm
+UrlSuffix(gcc/Debugging-Options.html#index-fdwarf2-cfi-asm)
+
+fearly-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-fearly-inlining)
+
+fipa-sra
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-sra)
+
+feliminate-unused-debug-symbols
+UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-symbols)
+
+feliminate-unused-debug-types
+UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-types)
+
+femit-class-debug-always
+UrlSuffix(gcc/Debugging-Options.html#index-femit-class-debug-always)
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fexpensive-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-fexpensive-optimizations)
+
+fexcess-precision=
+UrlSuffix(gcc/Optimize-Options.html#index-fexcess-precision)
+
+fpermitted-flt-eval-methods=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fpermitted-flt-eval-methods)
+
+ffast-math
+UrlSuffix(gcc/Optimize-Options.html#index-ffast-math)
+
+ffat-lto-objects
+UrlSuffix(gcc/Optimize-Options.html#index-ffat-lto-objects)
+
+ffinite-math-only
+UrlSuffix(gcc/Optimize-Options.html#index-ffinite-math-only)
+
+ffinite-loops
+UrlSuffix(gcc/Optimize-Options.html#index-ffinite-loops)
+
+; skipping UrlSuffix for 'ffloat-store' due to multiple URLs:
+;   duplicate: 'gcc/Disappointments.html#index-ffloat-store-1'
+;   duplicate: 'gcc/Optimize-Options.html#index-ffloat-store'
+
+fforward-propagate
+UrlSuffix(gcc/Optimize-Options.html#index-fforward-propagate)
+
+ffp-contract=
+UrlSuffix(gcc/Optimize-Options.html#index-ffp-contract)
+
+ffp-int-builtin-inexact
+UrlSuffix(gcc/Optimize-Options.html#index-ffp-int-builtin-inexact)
+
+ffunction-cse
+UrlSuffix(gcc/Optimize-Options.html#index-ffunction-cse)
+
+ffunction-sections
+UrlSuffix(gcc/Optimize-Options.html#index-ffunction-sections)
+
+fgcse
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse)
+
+fgcse-lm
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-lm)
+
+fgcse-sm
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-sm)
+
+fgcse-las
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-las)
+
+fgcse-after-reload
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-after-reload)
+
+fgraphite-identity
+UrlSuffix(gcc/Optimize-Options.html#index-fgraphite-identity)
+
+fhoist-adjacent-loads
+UrlSuffix(gcc/Optimize-Options.html#index-fhoist-adjacent-loads)
+
+flarge-source-files
+UrlSuffix(gcc/Preprocessor-Options.html#index-flarge-source-files)
+
+floop-parallelize-all
+UrlSuffix(gcc/Optimize-Options.html#index-floop-parallelize-all)
+
+floop-strip-mine
+UrlSuffix(gcc/Optimize-Options.html#index-floop-strip-mine)
+
+floop-interchange
+UrlSuffix(gcc/Optimize-Options.html#index-floop-interchange)
+
+floop-block
+UrlSuffix(gcc/Optimize-Options.html#index-floop-block)
+
+floop-unroll-and-jam
+UrlSuffix(gcc/Optimize-Options.html#index-floop-unroll-and-jam)
+
+fgnu-tm
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu-tm)
+
+fgnu-unique
+UrlSuffix(gcc/Code-Gen-Options.html#index-fgnu-unique)
+
+floop-nest-optimize
+UrlSuffix(gcc/Optimize-Options.html#index-floop-nest-optimize)
+
+fstrict-volatile-bitfields
+UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-volatile-bitfields)
+
+fstore-merging
+UrlSuffix(gcc/Optimize-Options.html#index-fstore-merging)
+
+fguess-branch-probability
+UrlSuffix(gcc/Optimize-Options.html#index-fguess-branch-probability)
+
+fharden-compares
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-compares)
+
+fharden-conditional-branches
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-conditional-branches)
+
+fharden-control-flow-redundancy
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-control-flow-redundancy)
+
+fhardcfr-skip-leaf
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-skip-leaf)
+
+fhardcfr-check-returning-calls
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-returning-calls)
+
+fhardcfr-check-exceptions
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-exceptions)
+
+fhardcfr-check-noreturn-calls=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-noreturn-calls)
+
+fident
+UrlSuffix(gcc/Code-Gen-Options.html#index-fident)
+
+fif-conversion
+UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion)
+
+fif-conversion2
+UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion2)
+
+ftree-loop-if-convert
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-if-convert)
+
+finhibit-size-directive
+UrlSuffix(gcc/Code-Gen-Options.html#index-finhibit-size-directive)
+
+findirect-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-findirect-inlining)
+
+finline
+UrlSuffix(gcc/Optimize-Options.html#index-finline)
+
+finline-small-functions
+UrlSuffix(gcc/Optimize-Options.html#index-finline-small-functions)
+
+finline-functions
+UrlSuffix(gcc/Optimize-Options.html#index-finline-functions)
+
+finline-functions-called-once
+UrlSuffix(gcc/Optimize-Options.html#index-finline-functions-called-once)
+
+finline-limit=
+UrlSuffix(gcc/Optimize-Options.html#index-finline-limit)
+
+fcf-protection
+UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
+
+fcf-protection=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
+
+finstrument-functions
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions)
+
+finstrument-functions-once
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-once)
+
+finstrument-functions-exclude-function-list=
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-function-list)
+
+finstrument-functions-exclude-file-list=
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-file-list)
+
+fipa-cp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp)
+
+fipa-cp-clone
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp-clone)
+
+fipa-bit-cp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-bit-cp)
+
+fipa-modref
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-modref)
+
+fipa-profile
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-profile)
+
+fipa-pta
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-pta)
+
+fipa-pure-const
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-pure-const)
+
+fipa-icf
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-icf)
+
+fipa-reference
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference)
+
+fipa-reference-addressable
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference-addressable)
+
+fipa-stack-alignment
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-stack-alignment)
+
+fipa-vrp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-vrp)
+
+fira-algorithm=
+UrlSuffix(gcc/Optimize-Options.html#index-fira-algorithm)
+
+fipa-strict-aliasing
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-strict-aliasing)
+
+fira-region=
+UrlSuffix(gcc/Optimize-Options.html#index-fira-region)
+
+fira-hoist-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fira-hoist-pressure)
+
+fira-loop-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fira-loop-pressure)
+
+fira-share-save-slots
+UrlSuffix(gcc/Optimize-Options.html#index-fira-share-save-slots)
+
+fira-share-spill-slots
+UrlSuffix(gcc/Optimize-Options.html#index-fira-share-spill-slots)
+
+fira-verbose=
+UrlSuffix(gcc/Developer-Options.html#index-fira-verbose)
+
+fivopts
+UrlSuffix(gcc/Optimize-Options.html#index-fivopts)
+
+fjump-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-fjump-tables)
+
+fbit-tests
+UrlSuffix(gcc/Code-Gen-Options.html#index-fbit-tests)
+
+; skipping UrlSuffix for 'fkeep-inline-functions' due to multiple URLs:
+;   duplicate: 'gcc/Inline.html#index-fkeep-inline-functions-1'
+;   duplicate: 'gcc/Optimize-Options.html#index-fkeep-inline-functions'
+
+fkeep-static-functions
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-functions)
+
+fkeep-static-consts
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-consts)
+
+fleading-underscore
+UrlSuffix(gcc/Code-Gen-Options.html#index-fleading-underscore)
+
+flra-remat
+UrlSuffix(gcc/Optimize-Options.html#index-flra-remat)
+
+flto
+UrlSuffix(gcc/Optimize-Options.html#index-flto)
+
+flto=
+UrlSuffix(gcc/Optimize-Options.html#index-flto)
+
+flto-partition=
+UrlSuffix(gcc/Optimize-Options.html#index-flto-partition)
+
+flto-compression-level=
+UrlSuffix(gcc/Optimize-Options.html#index-flto-compression-level)
+
+flto-report
+UrlSuffix(gcc/Developer-Options.html#index-flto-report)
+
+flto-report-wpa
+UrlSuffix(gcc/Developer-Options.html#index-flto-report-wpa)
+
+fmath-errno
+UrlSuffix(gcc/Optimize-Options.html#index-fmath-errno)
+
+fmax-errors=
+UrlSuffix(gcc/Warning-Options.html#index-fmax-errors) LangUrlSuffix_D(gdc/Warnings.html#index-fmax-errors)
+
+fmem-report
+UrlSuffix(gcc/Developer-Options.html#index-fmem-report)
+
+fmem-report-wpa
+UrlSuffix(gcc/Developer-Options.html#index-fmem-report-wpa)
+
+fmerge-all-constants
+UrlSuffix(gcc/Optimize-Options.html#index-fmerge-all-constants)
+
+fmerge-constants
+UrlSuffix(gcc/Optimize-Options.html#index-fmerge-constants)
+
+fmerge-debug-strings
+UrlSuffix(gcc/Debugging-Options.html#index-fmerge-debug-strings)
+
+fmessage-length=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fmessage-length)
+
+fmodulo-sched
+UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched)
+
+fmodulo-sched-allow-regmoves
+UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched-allow-regmoves)
+
+fmove-loop-invariants
+UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-invariants)
+
+fmove-loop-stores
+UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-stores)
+
+fmultiflags
+UrlSuffix(gcc/Developer-Options.html#index-fmultiflags)
+
+fdce
+UrlSuffix(gcc/Optimize-Options.html#index-fdce)
+
+fdse
+UrlSuffix(gcc/Optimize-Options.html#index-fdse)
+
+freschedule-modulo-scheduled-loops
+UrlSuffix(gcc/Optimize-Options.html#index-freschedule-modulo-scheduled-loops)
+
+fnon-call-exceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fnon-call-exceptions)
+
+foffload=
+UrlSuffix(gcc/C-Dialect-Options.html#index-foffload)
+
+foffload-options=
+UrlSuffix(gcc/C-Dialect-Options.html#index-foffload-options)
+
+fomit-frame-pointer
+UrlSuffix(gcc/Optimize-Options.html#index-fomit-frame-pointer)
+
+fopenmp-target-simd-clone
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone)
+
+fopenmp-target-simd-clone=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone)
+
+fopt-info
+UrlSuffix(gcc/Developer-Options.html#index-fopt-info)
+
+fsave-optimization-record
+UrlSuffix(gcc/Developer-Options.html#index-fsave-optimization-record)
+
+foptimize-sibling-calls
+UrlSuffix(gcc/Optimize-Options.html#index-foptimize-sibling-calls)
+
+fpartial-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-fpartial-inlining)
+
+fpre-ipa-mem-report
+UrlSuffix(gcc/Developer-Options.html#index-fpre-ipa-mem-report)
+
+fpost-ipa-mem-report
+UrlSuffix(gcc/Developer-Options.html#index-fpost-ipa-mem-report)
+
+fpack-struct
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct)
+
+fpack-struct=
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct)
+
+; skipping UrlSuffix for 'fpcc-struct-return' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fpcc-struct-return'
+;   duplicate: 'gcc/Incompatibilities.html#index-fpcc-struct-return-1'
+
+fpeel-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fpeel-loops)
+
+fpeephole
+UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole)
+
+fpeephole2
+UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole2)
+
+fPIC
+UrlSuffix(gcc/Code-Gen-Options.html#index-fPIC)
+
+fPIE
+UrlSuffix(gcc/Code-Gen-Options.html#index-fPIE)
+
+fpic
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpic)
+
+fpie
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpie)
+
+fplt
+UrlSuffix(gcc/Code-Gen-Options.html#index-fno-plt)
+
+fplugin=
+UrlSuffix(gcc/Overall-Options.html#index-fplugin)
+
+fpredictive-commoning
+UrlSuffix(gcc/Optimize-Options.html#index-fpredictive-commoning)
+
+fprefetch-loop-arrays
+UrlSuffix(gcc/Optimize-Options.html#index-fprefetch-loop-arrays)
+
+fprofile-abs-path
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-abs-path)
+
+; skipping UrlSuffix for 'fprofile-arcs' due to multiple URLs:
+;   duplicate: 'gcc/Instrumentation-Options.html#index-fprofile-arcs'
+;   duplicate: 'gcc/Other-Builtins.html#index-fprofile-arcs-1'
+
+fprofile-dir=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-dir)
+
+fprofile-note=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-note)
+
+fprofile-correction
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-correction)
+
+fprofile-update=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-update)
+
+fprofile-filter-files=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-filter-files)
+
+fprofile-exclude-files=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-exclude-files)
+
+fprofile-reproducible=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-reproducible)
+
+fprofile-prefix-path=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-path)
+
+fprofile-prefix-map=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-map)
+
+fprofile-generate
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate)
+
+fprofile-generate=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate)
+
+fprofile-info-section
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section)
+
+fprofile-info-section=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section)
+
+fprofile-partial-training
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-partial-training)
+
+fprofile-use
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use)
+
+fprofile-use=
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use)
+
+fprofile-values
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-values)
+
+fprofile-report
+UrlSuffix(gcc/Developer-Options.html#index-fprofile-report)
+
+fprofile-reorder-functions
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-reorder-functions)
+
+fpatchable-function-entry=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fpatchable-function-entry)
+
+frandom-seed
+UrlSuffix(gcc/Developer-Options.html#index-frandom-seed)
+
+frandom-seed=
+UrlSuffix(gcc/Developer-Options.html#index-frandom-seed)
+
+frecord-gcc-switches
+UrlSuffix(gcc/Code-Gen-Options.html#index-frecord-gcc-switches)
+
+freg-struct-return
+UrlSuffix(gcc/Code-Gen-Options.html#index-freg-struct-return)
+
+flifetime-dse
+UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
+
+flifetime-dse=
+UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
+
+flive-patching
+UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
+
+flive-patching=
+UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
+
+fallocation-dce
+UrlSuffix(gcc/Optimize-Options.html#index-fno-allocation-dce)
+
+flive-range-shrinkage
+UrlSuffix(gcc/Optimize-Options.html#index-flive-range-shrinkage)
+
+frename-registers
+UrlSuffix(gcc/Optimize-Options.html#index-frename-registers)
+
+fschedule-fusion
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-fusion)
+
+freorder-blocks
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks)
+
+freorder-blocks-algorithm=
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-algorithm)
+
+freorder-blocks-and-partition
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-and-partition)
+
+freorder-functions
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-functions)
+
+frerun-cse-after-loop
+UrlSuffix(gcc/Optimize-Options.html#index-frerun-cse-after-loop)
+
+frounding-math
+UrlSuffix(gcc/Optimize-Options.html#index-frounding-math)
+
+fsched-interblock
+UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-interblock)
+
+fsched-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-pressure)
+
+fsched-spec
+UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-spec)
+
+fsched-spec-load
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load)
+
+fsched-spec-load-dangerous
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load-dangerous)
+
+fsched-verbose=
+UrlSuffix(gcc/Developer-Options.html#index-fsched-verbose)
+
+fsched2-use-superblocks
+UrlSuffix(gcc/Optimize-Options.html#index-fsched2-use-superblocks)
+
+fschedule-insns
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns)
+
+fschedule-insns2
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns2)
+
+fselective-scheduling
+UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling)
+
+fselective-scheduling2
+UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling2)
+
+fsel-sched-pipelining
+UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining)
+
+fsel-sched-pipelining-outer-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining-outer-loops)
+
+fsemantic-interposition
+UrlSuffix(gcc/Optimize-Options.html#index-fsemantic-interposition)
+
+fsched-stalled-insns
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns)
+
+fsched-stalled-insns=
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns)
+
+fsched-stalled-insns-dep
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep)
+
+fsched-stalled-insns-dep=
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep)
+
+fsched-group-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-group-heuristic)
+
+fsched-critical-path-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-critical-path-heuristic)
+
+fsched-spec-insn-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-insn-heuristic)
+
+fsched-rank-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-rank-heuristic)
+
+fsched-last-insn-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-last-insn-heuristic)
+
+fsched-dep-count-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-dep-count-heuristic)
+
+fsection-anchors
+UrlSuffix(gcc/Optimize-Options.html#index-fsection-anchors)
+
+free
+UrlSuffix(gcc/Optimize-Options.html#index-free-1)
+
+fshow-column
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fno-show-column)
+
+fshrink-wrap
+UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap)
+
+fshrink-wrap-separate
+UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap-separate)
+
+fsignaling-nans
+UrlSuffix(gcc/Optimize-Options.html#index-fsignaling-nans)
+
+fsigned-zeros
+UrlSuffix(gcc/Optimize-Options.html#index-fno-signed-zeros)
+
+fsingle-precision-constant
+UrlSuffix(gcc/Optimize-Options.html#index-fsingle-precision-constant)
+
+fsplit-ivs-in-unroller
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-ivs-in-unroller)
+
+fsplit-stack
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsplit-stack)
+
+fsplit-wide-types
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types)
+
+fsplit-wide-types-early
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types-early)
+
+fssa-backprop
+UrlSuffix(gcc/Optimize-Options.html#index-fssa-backprop)
+
+fssa-phiopt
+UrlSuffix(gcc/Optimize-Options.html#index-fssa-phiopt)
+
+fstdarg-opt
+UrlSuffix(gcc/Optimize-Options.html#index-fstdarg-opt)
+
+fvariable-expansion-in-unroller
+UrlSuffix(gcc/Optimize-Options.html#index-fvariable-expansion-in-unroller)
+
+fstack-check=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check)
+
+fstack-check
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check)
+
+fstack-clash-protection
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-clash-protection)
+
+fstack-limit
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-stack-limit)
+
+fstack-limit-register=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-register)
+
+fstack-limit-symbol=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-symbol)
+
+fstack-protector
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector)
+
+fstack-protector-all
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-all)
+
+fstack-protector-strong
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-strong)
+
+fstack-protector-explicit
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-explicit)
+
+fstack-usage
+UrlSuffix(gcc/Developer-Options.html#index-fstack-usage)
+
+fstrict-aliasing
+UrlSuffix(gcc/Optimize-Options.html#index-fstrict-aliasing)
+
+fstrict-overflow
+UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-overflow)
+
+fsync-libcalls
+UrlSuffix(gcc/Code-Gen-Options.html#index-fsync-libcalls)
+
+fsyntax-only
+UrlSuffix(gcc/Warning-Options.html#index-fsyntax-only) LangUrlSuffix_D(gdc/Warnings.html#index-fno-syntax-only)
+
+ftest-coverage
+UrlSuffix(gcc/Instrumentation-Options.html#index-ftest-coverage)
+
+fthread-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-fthread-jumps)
+
+ftime-report
+UrlSuffix(gcc/Developer-Options.html#index-ftime-report)
+
+ftime-report-details
+UrlSuffix(gcc/Developer-Options.html#index-ftime-report-details)
+
+ftls-model=
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftls-model)
+
+ftoplevel-reorder
+UrlSuffix(gcc/Optimize-Options.html#index-fno-toplevel-reorder)
+
+ftracer
+UrlSuffix(gcc/Optimize-Options.html#index-ftracer)
+
+ftrampolines
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampolines)
+
+ftrampoline-impl=
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampoline-impl)
+
+ftrapping-math
+UrlSuffix(gcc/Optimize-Options.html#index-fno-trapping-math)
+
+ftrapv
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrapv)
+
+ftree-ccp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ccp)
+
+ftree-bit-ccp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-bit-ccp)
+
+ftree-ch
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ch)
+
+ftree-coalesce-vars
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-coalesce-vars)
+
+ftree-copy-prop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-copy-prop)
+
+ftree-switch-conversion
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-switch-conversion)
+
+ftree-dce
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dce)
+
+ftree-dominator-opts
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dominator-opts)
+
+ftree-tail-merge
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-tail-merge)
+
+ftree-dse
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dse)
+
+ftree-forwprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-forwprop)
+
+ftree-fre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-fre)
+
+foptimize-strlen
+UrlSuffix(gcc/Optimize-Options.html#index-foptimize-strlen)
+
+fisolate-erroneous-paths-dereference
+UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-dereference)
+
+fisolate-erroneous-paths-attribute
+UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-attribute)
+
+ftree-loop-distribution
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribution)
+
+ftree-loop-distribute-patterns
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribute-patterns)
+
+ftree-loop-im
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-im)
+
+ftree-loop-linear
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-linear)
+
+ftree-loop-ivcanon
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-ivcanon)
+
+ftree-loop-optimize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-optimize)
+
+ftree-parallelize-loops=
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-parallelize-loops)
+
+ftree-phiprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-phiprop)
+
+ftree-pre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-pre)
+
+ftree-partial-pre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-partial-pre)
+
+ftree-pta
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-pta)
+
+ftree-reassoc
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-reassoc)
+
+ftree-sink
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-sink)
+
+ftree-slsr
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-slsr)
+
+ftree-sra
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-sra)
+
+ftree-ter
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ter)
+
+ftree-vrp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-vrp)
+
+fsplit-paths
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-paths)
+
+funconstrained-commons
+UrlSuffix(gcc/Optimize-Options.html#index-funconstrained-commons)
+
+funit-at-a-time
+UrlSuffix(gcc/Optimize-Options.html#index-funit-at-a-time)
+
+funreachable-traps
+UrlSuffix(gcc/Optimize-Options.html#index-funreachable-traps)
+
+funroll-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funroll-loops)
+
+funroll-all-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funroll-all-loops)
+
+fassociative-math
+UrlSuffix(gcc/Optimize-Options.html#index-fassociative-math)
+
+freciprocal-math
+UrlSuffix(gcc/Optimize-Options.html#index-freciprocal-math)
+
+funsafe-math-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-funsafe-math-optimizations)
+
+funswitch-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funswitch-loops)
+
+fsplit-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-loops)
+
+fversion-loops-for-strides
+UrlSuffix(gcc/Optimize-Options.html#index-fversion-loops-for-strides)
+
+funwind-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-funwind-tables)
+
+fuse-ld=bfd
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dbfd)
+
+fuse-ld=gold
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dgold)
+
+fuse-ld=lld
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dlld)
+
+fuse-ld=mold
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dmold)
+
+fuse-linker-plugin
+UrlSuffix(gcc/Optimize-Options.html#index-fuse-linker-plugin)
+
+fvar-tracking
+UrlSuffix(gcc/Debugging-Options.html#index-fvar-tracking)
+
+fvar-tracking-assignments
+UrlSuffix(gcc/Debugging-Options.html#index-fno-var-tracking-assignments)
+
+fvar-tracking-assignments-toggle
+UrlSuffix(gcc/Developer-Options.html#index-fno-var-tracking-assignments-toggle)
+
+ftree-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-vectorize)
+
+ftree-loop-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-vectorize)
+
+ftree-slp-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-slp-vectorize)
+
+fvect-cost-model=
+UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model)
+
+fsimd-cost-model=
+UrlSuffix(gcc/Optimize-Options.html#index-fsimd-cost-model)
+
+fvect-cost-model
+UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model)
+
+ftree-scev-cprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-scev-cprop)
+
+ftrivial-auto-var-init=
+UrlSuffix(gcc/Optimize-Options.html#index-ftrivial-auto-var-init)
+
+fverbose-asm
+UrlSuffix(gcc/Code-Gen-Options.html#index-fverbose-asm)
+
+fvisibility=
+UrlSuffix(gcc/Code-Gen-Options.html#index-fvisibility)
+
+fvtable-verify=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtable-verify)
+
+fvtv-counts
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-counts)
+
+fvtv-debug
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-debug)
+
+fvpt
+UrlSuffix(gcc/Optimize-Options.html#index-fvpt)
+
+fweb
+UrlSuffix(gcc/Optimize-Options.html#index-fweb)
+
+ftree-builtin-call-dce
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-builtin-call-dce)
+
+fwhole-program
+UrlSuffix(gcc/Optimize-Options.html#index-fwhole-program)
+
+fwrapv-pointer
+UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv-pointer)
+
+fwrapv
+UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv)
+
+fzero-initialized-in-bss
+UrlSuffix(gcc/Optimize-Options.html#index-fno-zero-initialized-in-bss)
+
+fzero-call-used-regs=
+UrlSuffix(gcc/Optimize-Options.html#index-fzero-call-used-regs)
+
+g
+UrlSuffix(gcc/Debugging-Options.html#index-g)
+
+gas-loc-support
+UrlSuffix(gcc/Debugging-Options.html#index-gas-loc-support)
+
+gas-locview-support
+UrlSuffix(gcc/Debugging-Options.html#index-gas-locview-support)
+
+gcodeview
+UrlSuffix(gcc/Debugging-Options.html#index-gcodeview)
+
+gcolumn-info
+UrlSuffix(gcc/Debugging-Options.html#index-gcolumn-info)
+
+gctf
+UrlSuffix(gcc/Debugging-Options.html#index-gctf)
+
+gbtf
+UrlSuffix(gcc/Debugging-Options.html#index-gbtf)
+
+gdwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf)
+
+gdwarf32
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf32)
+
+gdwarf64
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf64)
+
+ggdb
+UrlSuffix(gcc/Debugging-Options.html#index-ggdb)
+
+ginline-points
+UrlSuffix(gcc/Debugging-Options.html#index-ginline-points)
+
+ginternal-reset-location-views
+UrlSuffix(gcc/Debugging-Options.html#index-ginternal-reset-location-views)
+
+gpubnames
+UrlSuffix(gcc/Debugging-Options.html#index-gpubnames)
+
+ggnu-pubnames
+UrlSuffix(gcc/Debugging-Options.html#index-ggnu-pubnames)
+
+grecord-gcc-switches
+UrlSuffix(gcc/Debugging-Options.html#index-grecord-gcc-switches)
+
+gsplit-dwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gsplit-dwarf)
+
+gstatement-frontiers
+UrlSuffix(gcc/Debugging-Options.html#index-gstatement-frontiers)
+
+gstrict-dwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gstrict-dwarf)
+
+gdescribe-dies
+UrlSuffix(gcc/Debugging-Options.html#index-gdescribe-dies)
+
+gtoggle
+UrlSuffix(gcc/Developer-Options.html#index-gtoggle)
+
+gvariable-location-views
+UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views)
+
+gvariable-location-views=incompat5
+UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views_003dincompat5)
+
+gvms
+UrlSuffix(gcc/Debugging-Options.html#index-gvms)
+
+gz
+UrlSuffix(gcc/Debugging-Options.html#index-gz)
+
+gz=
+UrlSuffix(gcc/Debugging-Options.html#index-gz)
+
+iplugindir=
+UrlSuffix(gcc/Directory-Options.html#index-iplugindir_003d)
+
+l
+UrlSuffix(gcc/Link-Options.html#index-l)
+
+no-canonical-prefixes
+UrlSuffix(gcc/Directory-Options.html#index-no-canonical-prefixes)
+
+nodefaultlibs
+UrlSuffix(gcc/Link-Options.html#index-nodefaultlibs)
+
+nostartfiles
+UrlSuffix(gcc/Link-Options.html#index-nostartfiles)
+
+nolibc
+UrlSuffix(gcc/Link-Options.html#index-nolibc)
+
+nostdlib
+UrlSuffix(gcc/Link-Options.html#index-nostdlib)
+
+nostdlib++
+UrlSuffix(gcc/Link-Options.html#index-nostdlib_002b_002b)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+p
+UrlSuffix(gcc/Instrumentation-Options.html#index-p)
+
+pass-exit-codes
+UrlSuffix(gcc/Overall-Options.html#index-pass-exit-codes)
+
+; skipping UrlSuffix for 'pedantic' due to multiple URLs:
+;   duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3'
+;   duplicate: 'gcc/C-Extensions.html#index-pedantic-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4'
+
+; skipping UrlSuffix for 'pedantic-errors' due to multiple URLs:
+;   duplicate: 'gcc/Non-bugs.html#index-pedantic-errors-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic-errors'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-errors-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-errors-3'
+
+pg
+UrlSuffix(gcc/Instrumentation-Options.html#index-pg)
+
+pipe
+UrlSuffix(gcc/Overall-Options.html#index-pipe)
+
+print-file-name=
+UrlSuffix(gcc/Developer-Options.html#index-print-file-name)
+
+print-libgcc-file-name
+UrlSuffix(gcc/Developer-Options.html#index-print-libgcc-file-name)
+
+print-multi-directory
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-directory)
+
+print-multi-lib
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-lib)
+
+print-multi-os-directory
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-os-directory)
+
+print-multiarch
+UrlSuffix(gcc/Developer-Options.html#index-print-multiarch)
+
+print-prog-name=
+UrlSuffix(gcc/Developer-Options.html#index-print-prog-name)
+
+print-search-dirs
+UrlSuffix(gcc/Developer-Options.html#index-print-search-dirs)
+
+print-sysroot
+UrlSuffix(gcc/Developer-Options.html#index-print-sysroot)
+
+print-sysroot-headers-suffix
+UrlSuffix(gcc/Developer-Options.html#index-print-sysroot-headers-suffix)
+
+r
+UrlSuffix(gcc/Link-Options.html#index-r)
+
+s
+UrlSuffix(gcc/Link-Options.html#index-s)
+
+save-temps
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+save-temps=
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+time
+UrlSuffix(gcc/Developer-Options.html#index-time)
+
+time=
+UrlSuffix(gcc/Developer-Options.html#index-time)
+
+u
+UrlSuffix(gcc/Link-Options.html#index-u)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
+version
+UrlSuffix(gcc/Overall-Options.html#index-version)
+
+w
+UrlSuffix(gcc/Warning-Options.html#index-w)
+
+wrapper
+UrlSuffix(gcc/Overall-Options.html#index-wrapper)
+
+x
+UrlSuffix(gcc/Overall-Options.html#index-x)
+
+shared
+UrlSuffix(gcc/Link-Options.html#index-shared)
+
+shared-libgcc
+UrlSuffix(gcc/Link-Options.html#index-shared-libgcc)
+
+specs
+UrlSuffix(gcc/Overall-Options.html#index-specs)
+
+specs=
+UrlSuffix(gcc/Overall-Options.html#index-specs)
+
+; skipping UrlSuffix for 'static' due to multiple URLs:
+;   duplicate: 'gcc/Darwin-Options.html#index-static-1'
+;   duplicate: 'gcc/Link-Options.html#index-static'
+
+static-libgcc
+UrlSuffix(gcc/Link-Options.html#index-static-libgcc)
+
+static-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-static-libphobos)
+
+static-libstdc++
+UrlSuffix(gcc/Link-Options.html#index-static-libstdc_002b_002b)
+
+static-libasan
+UrlSuffix(gcc/Link-Options.html#index-static-libasan)
+
+static-libtsan
+UrlSuffix(gcc/Link-Options.html#index-static-libtsan)
+
+static-liblsan
+UrlSuffix(gcc/Link-Options.html#index-static-liblsan)
+
+static-libubsan
+UrlSuffix(gcc/Link-Options.html#index-static-libubsan)
+
+symbolic
+UrlSuffix(gcc/Link-Options.html#index-symbolic)
+
+no-pie
+UrlSuffix(gcc/Link-Options.html#index-no-pie)
+
+pie
+UrlSuffix(gcc/Link-Options.html#index-pie)
+
+static-pie
+UrlSuffix(gcc/Link-Options.html#index-static-pie)
+
+z
+UrlSuffix(gcc/Link-Options.html#index-z)
+
+fipa-ra
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-ra)
+
diff --git a/gcc/config/aarch64/aarch64.opt.urls b/gcc/config/aarch64/aarch64.opt.urls
new file mode 100644
index 000000000000..82882fee0647
--- /dev/null
+++ b/gcc/config/aarch64/aarch64.opt.urls
@@ -0,0 +1,84 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/aarch64/aarch64.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/AArch64-Options.html#index-mbig-endian)
+
+mgeneral-regs-only
+UrlSuffix(gcc/AArch64-Options.html#index-mgeneral-regs-only)
+
+mharden-sls=
+UrlSuffix(gcc/AArch64-Options.html#index-mharden-sls)
+
+mfix-cortex-a53-835769
+UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-835769)
+
+mfix-cortex-a53-843419
+UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-843419)
+
+mlittle-endian
+UrlSuffix(gcc/AArch64-Options.html#index-mlittle-endian)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mtp=
+UrlSuffix(gcc/AArch64-Options.html#index-mtp)
+
+mstrict-align
+UrlSuffix(gcc/AArch64-Options.html#index-mstrict-align)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/AArch64-Options.html#index-momit-leaf-frame-pointer)
+
+; skipping UrlSuffix for 'mtls-dialect=' due to finding no URLs
+
+mtls-size=
+UrlSuffix(gcc/AArch64-Options.html#index-mtls-size)
+
+march=
+UrlSuffix(gcc/AArch64-Options.html#index-march)
+
+mcpu=
+UrlSuffix(gcc/AArch64-Options.html#index-mcpu)
+
+mtune=
+UrlSuffix(gcc/AArch64-Options.html#index-mtune)
+
+mabi=
+UrlSuffix(gcc/AArch64-Options.html#index-mabi)
+
+moverride=
+UrlSuffix(gcc/AArch64-Options.html#index-moverride)
+
+mpc-relative-literal-loads
+UrlSuffix(gcc/AArch64-Options.html#index-mpc-relative-literal-loads)
+
+mbranch-protection=
+UrlSuffix(gcc/AArch64-Options.html#index-mbranch-protection)
+
+msign-return-address=
+UrlSuffix(gcc/AArch64-Options.html#index-msign-return-address)
+
+mlow-precision-recip-sqrt
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-recip-sqrt)
+
+mlow-precision-sqrt
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-sqrt)
+
+mlow-precision-div
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-div)
+
+msve-vector-bits=
+UrlSuffix(gcc/AArch64-Options.html#index-msve-vector-bits)
+
+mverbose-cost-dump
+UrlSuffix(gcc/AArch64-Options.html#index-mverbose-cost-dump)
+
+mstack-protector-guard=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-reg)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-offset)
+
diff --git a/gcc/config/alpha/alpha.opt.urls b/gcc/config/alpha/alpha.opt.urls
new file mode 100644
index 000000000000..a55c08328c37
--- /dev/null
+++ b/gcc/config/alpha/alpha.opt.urls
@@ -0,0 +1,76 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/alpha.opt and generated HTML
+
+msoft-float
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msoft-float-2)
+
+; skipping UrlSuffix for 'mgas' due to finding no URLs
+
+mieee-conformant
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-conformant)
+
+mieee
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee)
+
+mieee-with-inexact
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-with-inexact)
+
+mbuild-constants
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbuild-constants)
+
+mfloat-vax
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-vax)
+
+mfloat-ieee
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-ieee)
+
+mbwx
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbwx)
+
+mmax
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmax)
+
+mfix
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfix)
+
+mcix
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcix)
+
+mexplicit-relocs
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mexplicit-relocs)
+
+msmall-data
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-data)
+
+mlarge-data
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-data)
+
+msmall-text
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-text)
+
+mlarge-text
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-text)
+
+; skipping UrlSuffix for 'mlong-double-128' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-double-64' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcpu-4)
+
+mtune=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtune-6)
+
+mfp-rounding-mode=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-rounding-mode)
+
+mfp-trap-mode=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-trap-mode)
+
+mtrap-precision=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtrap-precision)
+
+mmemory-latency=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmemory-latency)
+
+; skipping UrlSuffix for 'mtls-size=' due to finding no URLs
+
diff --git a/gcc/config/alpha/elf.opt.urls b/gcc/config/alpha/elf.opt.urls
new file mode 100644
index 000000000000..d97d0fe0f6a1
--- /dev/null
+++ b/gcc/config/alpha/elf.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/elf.opt and generated HTML
+
diff --git a/gcc/config/arc/arc-tables.opt.urls b/gcc/config/arc/arc-tables.opt.urls
new file mode 100644
index 000000000000..1e177e874064
--- /dev/null
+++ b/gcc/config/arc/arc-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc-tables.opt and generated HTML
+
diff --git a/gcc/config/arc/arc.opt.urls b/gcc/config/arc/arc.opt.urls
new file mode 100644
index 000000000000..bb9a8ebcc24a
--- /dev/null
+++ b/gcc/config/arc/arc.opt.urls
@@ -0,0 +1,260 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/ARC-Options.html#index-mbig-endian-1)
+
+mlittle-endian
+UrlSuffix(gcc/ARC-Options.html#index-mlittle-endian-1)
+
+mno-cond-exec
+UrlSuffix(gcc/ARC-Options.html#index-mno-cond-exec)
+
+mA6
+UrlSuffix(gcc/ARC-Options.html#index-mA6)
+
+mARC600
+UrlSuffix(gcc/ARC-Options.html#index-mARC600)
+
+mARC601
+UrlSuffix(gcc/ARC-Options.html#index-mARC601)
+
+mA7
+UrlSuffix(gcc/ARC-Options.html#index-mA7)
+
+mARC700
+UrlSuffix(gcc/ARC-Options.html#index-mARC700)
+
+mjli-always
+UrlSuffix(gcc/ARC-Options.html#index-mjli-always)
+
+mmpy-option=
+UrlSuffix(gcc/ARC-Options.html#index-mmpy-option)
+
+mdiv-rem
+UrlSuffix(gcc/ARC-Options.html#index-mdiv-rem)
+
+mcode-density
+UrlSuffix(gcc/ARC-Options.html#index-mcode-density)
+
+mmixed-code
+UrlSuffix(gcc/ARC-Options.html#index-mmixed-code)
+
+mvolatile-cache
+UrlSuffix(gcc/ARC-Options.html#index-mvolatile-cache)
+
+mno-volatile-cache
+UrlSuffix(gcc/ARC-Options.html#index-mno-volatile-cache)
+
+mbarrel-shifter
+UrlSuffix(gcc/ARC-Options.html#index-mbarrel-shifter)
+
+mnorm
+UrlSuffix(gcc/ARC-Options.html#index-mnorm)
+
+mswap
+UrlSuffix(gcc/ARC-Options.html#index-mswap)
+
+mmul64
+UrlSuffix(gcc/ARC-Options.html#index-mmul64)
+
+mno-mpy
+UrlSuffix(gcc/ARC-Options.html#index-mno-mpy)
+
+mea
+UrlSuffix(gcc/ARC-Options.html#index-mea)
+
+msoft-float
+UrlSuffix(gcc/ARC-Options.html#index-msoft-float)
+
+mlong-calls
+UrlSuffix(gcc/ARC-Options.html#index-mlong-calls-1)
+
+mno-brcc
+UrlSuffix(gcc/ARC-Options.html#index-mno-brcc)
+
+msdata
+UrlSuffix(gcc/ARC-Options.html#index-msdata)
+
+mmillicode
+UrlSuffix(gcc/ARC-Options.html#index-mmillicode)
+
+mspfp
+UrlSuffix(gcc/ARC-Options.html#index-mspfp)
+
+mspfp-compact
+UrlSuffix(gcc/ARC-Options.html#index-mspfp-compact)
+
+mspfp-fast
+UrlSuffix(gcc/ARC-Options.html#index-mspfp-fast)
+
+margonaut
+UrlSuffix(gcc/ARC-Options.html#index-margonaut)
+
+mdpfp
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp)
+
+mdpfp-compact
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp-compact)
+
+mdpfp-fast
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp-fast)
+
+mno-dpfp-lrsr
+UrlSuffix(gcc/ARC-Options.html#index-mno-dpfp-lrsr)
+
+msimd
+UrlSuffix(gcc/ARC-Options.html#index-msimd)
+
+mcpu=
+UrlSuffix(gcc/ARC-Options.html#index-mcpu-1)
+
+msize-level=
+UrlSuffix(gcc/ARC-Options.html#index-msize-level)
+
+misize
+UrlSuffix(gcc/ARC-Options.html#index-misize)
+
+mmultcost=
+UrlSuffix(gcc/ARC-Options.html#index-mmultcost)
+
+mtune=
+UrlSuffix(gcc/ARC-Options.html#index-mtune-2)
+
+mindexed-loads
+UrlSuffix(gcc/ARC-Options.html#index-mindexed-loads)
+
+mauto-modify-reg
+UrlSuffix(gcc/ARC-Options.html#index-mauto-modify-reg)
+
+mmul32x16
+UrlSuffix(gcc/ARC-Options.html#index-mmul32x16)
+
+munalign-prob-threshold=
+UrlSuffix(gcc/ARC-Options.html#index-munalign-prob-threshold)
+
+mmedium-calls
+UrlSuffix(gcc/ARC-Options.html#index-mmedium-calls)
+
+mannotate-align
+UrlSuffix(gcc/ARC-Options.html#index-mannotate-align)
+
+malign-call
+UrlSuffix(gcc/ARC-Options.html#index-malign-call)
+
+mRcq
+UrlSuffix(gcc/ARC-Options.html#index-mRcq)
+
+mRcw
+UrlSuffix(gcc/ARC-Options.html#index-mRcw)
+
+mearly-cbranchsi
+UrlSuffix(gcc/ARC-Options.html#index-mearly-cbranchsi)
+
+mbbit-peephole
+UrlSuffix(gcc/ARC-Options.html#index-mbbit-peephole)
+
+mcase-vector-pcrel
+UrlSuffix(gcc/ARC-Options.html#index-mcase-vector-pcrel)
+
+mcompact-casesi
+UrlSuffix(gcc/ARC-Options.html#index-mcompact-casesi)
+
+mq-class
+UrlSuffix(gcc/ARC-Options.html#index-mq-class)
+
+mexpand-adddi
+UrlSuffix(gcc/ARC-Options.html#index-mexpand-adddi)
+
+; skipping UrlSuffix for 'mcrc' due to finding no URLs
+
+mdsp-packa
+UrlSuffix(gcc/ARC-Options.html#index-mdsp-packa)
+
+mdvbf
+UrlSuffix(gcc/ARC-Options.html#index-mdvbf)
+
+mmac-d16
+UrlSuffix(gcc/ARC-Options.html#index-mmac-d16)
+
+mmac-24
+UrlSuffix(gcc/ARC-Options.html#index-mmac-24)
+
+mtelephony
+UrlSuffix(gcc/ARC-Options.html#index-mtelephony)
+
+mxy
+UrlSuffix(gcc/ARC-Options.html#index-mxy)
+
+mlock
+UrlSuffix(gcc/ARC-Options.html#index-mlock)
+
+mswape
+UrlSuffix(gcc/ARC-Options.html#index-mswape)
+
+mrtsc
+UrlSuffix(gcc/ARC-Options.html#index-mrtsc)
+
+EB
+UrlSuffix(gcc/ARC-Options.html#index-EB)
+
+EL
+UrlSuffix(gcc/ARC-Options.html#index-EL)
+
+marclinux
+UrlSuffix(gcc/ARC-Options.html#index-marclinux)
+
+marclinux_prof
+UrlSuffix(gcc/ARC-Options.html#index-marclinux_005fprof)
+
+mlra
+UrlSuffix(gcc/ARC-Options.html#index-mlra)
+
+mlra-priority-none
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-none)
+
+mlra-priority-compact
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-compact)
+
+mlra-priority-noncompact
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-noncompact)
+
+mEA
+UrlSuffix(gcc/ARC-Options.html#index-mEA)
+
+multcost=
+UrlSuffix(gcc/ARC-Options.html#index-multcost)
+
+matomic
+UrlSuffix(gcc/ARC-Options.html#index-matomic)
+
+mll64
+UrlSuffix(gcc/ARC-Options.html#index-mll64)
+
+mfpu=
+UrlSuffix(gcc/ARC-Options.html#index-mfpu)
+
+mtp-regno=
+UrlSuffix(gcc/ARC-Options.html#index-mtp-regno)
+
+; skipping UrlSuffix for 'mbitops' due to finding no URLs
+
+; skipping UrlSuffix for 'munaligned-access' due to finding no URLs
+
+mirq-ctrl-saved=
+UrlSuffix(gcc/ARC-Options.html#index-mirq-ctrl-saved)
+
+mrgf-banked-regs=
+UrlSuffix(gcc/ARC-Options.html#index-mrgf-banked-regs)
+
+mlpc-width=
+UrlSuffix(gcc/ARC-Options.html#index-mlpc-width)
+
+mrf16
+UrlSuffix(gcc/ARC-Options.html#index-mrf16)
+
+mbranch-index
+UrlSuffix(gcc/ARC-Options.html#index-mbranch-index)
+
+mcode-density-frame
+UrlSuffix(gcc/ARC-Options.html#index-mcode-density-frame)
+
diff --git a/gcc/config/arm/arm-tables.opt.urls b/gcc/config/arm/arm-tables.opt.urls
new file mode 100644
index 000000000000..f0a6f8e1600c
--- /dev/null
+++ b/gcc/config/arm/arm-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm-tables.opt and generated HTML
+
diff --git a/gcc/config/arm/arm.opt.urls b/gcc/config/arm/arm.opt.urls
new file mode 100644
index 000000000000..b3696f78bc73
--- /dev/null
+++ b/gcc/config/arm/arm.opt.urls
@@ -0,0 +1,149 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm.opt and generated HTML
+
+mabi=
+UrlSuffix(gcc/ARM-Options.html#index-mabi-1)
+
+mabort-on-noreturn
+UrlSuffix(gcc/ARM-Options.html#index-mabort-on-noreturn)
+
+mapcs
+UrlSuffix(gcc/ARM-Options.html#index-mapcs)
+
+mapcs-frame
+UrlSuffix(gcc/ARM-Options.html#index-mapcs-frame)
+
+march=
+UrlSuffix(gcc/ARM-Options.html#index-march-2)
+
+marm
+UrlSuffix(gcc/ARM-Options.html#index-marm)
+
+mbig-endian
+UrlSuffix(gcc/ARM-Options.html#index-mbig-endian-2)
+
+mcallee-super-interworking
+UrlSuffix(gcc/ARM-Options.html#index-mcallee-super-interworking)
+
+mcaller-super-interworking
+UrlSuffix(gcc/ARM-Options.html#index-mcaller-super-interworking)
+
+mcpu=
+UrlSuffix(gcc/ARM-Options.html#index-mcpu-2)
+
+mfloat-abi=
+UrlSuffix(gcc/ARM-Options.html#index-mfloat-abi)
+
+mcmse
+UrlSuffix(gcc/ARM-Options.html#index-mcmse)
+
+mflip-thumb
+UrlSuffix(gcc/ARM-Options.html#index-mflip-thumb)
+
+mfp16-format=
+UrlSuffix(gcc/ARM-Options.html#index-mfp16-format)
+
+mfpu=
+UrlSuffix(gcc/ARM-Options.html#index-mfpu-1)
+
+; skipping UrlSuffix for 'mhard-float' due to finding no URLs
+
+mlittle-endian
+UrlSuffix(gcc/ARM-Options.html#index-mlittle-endian-2)
+
+mlong-calls
+UrlSuffix(gcc/ARM-Options.html#index-mlong-calls-2)
+
+mpic-data-is-text-relative
+UrlSuffix(gcc/ARM-Options.html#index-mpic-data-is-text-relative)
+
+mpic-register=
+UrlSuffix(gcc/ARM-Options.html#index-mpic-register)
+
+mpoke-function-name
+UrlSuffix(gcc/ARM-Options.html#index-mpoke-function-name)
+
+msched-prolog
+UrlSuffix(gcc/ARM-Options.html#index-msched-prolog)
+
+msingle-pic-base
+UrlSuffix(gcc/ARM-Options.html#index-msingle-pic-base)
+
+; skipping UrlSuffix for 'msoft-float' due to finding no URLs
+
+mstructure-size-boundary=
+UrlSuffix(gcc/ARM-Options.html#index-mstructure-size-boundary)
+
+mthumb
+UrlSuffix(gcc/ARM-Options.html#index-mthumb)
+
+mthumb-interwork
+UrlSuffix(gcc/ARM-Options.html#index-mthumb-interwork)
+
+mtls-dialect=
+UrlSuffix(gcc/ARM-Options.html#index-mtls-dialect)
+
+mtp=
+UrlSuffix(gcc/ARM-Options.html#index-mtp-1)
+
+mtpcs-frame
+UrlSuffix(gcc/ARM-Options.html#index-mtpcs-frame)
+
+mtpcs-leaf-frame
+UrlSuffix(gcc/ARM-Options.html#index-mtpcs-leaf-frame)
+
+mtune=
+UrlSuffix(gcc/ARM-Options.html#index-mtune-4)
+
+mprint-tune-info
+UrlSuffix(gcc/ARM-Options.html#index-mprint-tune-info)
+
+mverbose-cost-dump
+UrlSuffix(gcc/ARM-Options.html#index-mverbose-cost-dump-1)
+
+mword-relocations
+UrlSuffix(gcc/ARM-Options.html#index-mword-relocations)
+
+mrestrict-it
+UrlSuffix(gcc/ARM-Options.html#index-mrestrict-it)
+
+mfix-cortex-m3-ldrd
+UrlSuffix(gcc/ARM-Options.html#index-mfix-cortex-m3-ldrd)
+
+mfix-cmse-cve-2021-35465
+UrlSuffix(gcc/ARM-Options.html#index-mfix-cmse-cve-2021-35465)
+
+munaligned-access
+UrlSuffix(gcc/ARM-Options.html#index-munaligned-access)
+
+mneon-for-64bits
+UrlSuffix(gcc/ARM-Options.html#index-mneon-for-64bits)
+
+mslow-flash-data
+UrlSuffix(gcc/ARM-Options.html#index-mslow-flash-data)
+
+masm-syntax-unified
+UrlSuffix(gcc/ARM-Options.html#index-masm-syntax-unified)
+
+mpure-code
+UrlSuffix(gcc/ARM-Options.html#index-mpure-code)
+
+mbe8
+UrlSuffix(gcc/ARM-Options.html#index-mbe8)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mbranch-protection=
+UrlSuffix(gcc/ARM-Options.html#index-mbranch-protection-1)
+
+mgeneral-regs-only
+UrlSuffix(gcc/ARM-Options.html#index-mgeneral-regs-only-1)
+
+mfdpic
+UrlSuffix(gcc/ARM-Options.html#index-mfdpic)
+
+mstack-protector-guard=
+UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-1)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-offset-1)
+
diff --git a/gcc/config/arm/vxworks.opt.urls b/gcc/config/arm/vxworks.opt.urls
new file mode 100644
index 000000000000..8fe7eec22783
--- /dev/null
+++ b/gcc/config/arm/vxworks.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/vxworks.opt and generated HTML
+
diff --git a/gcc/config/avr/avr.opt.urls b/gcc/config/avr/avr.opt.urls
new file mode 100644
index 000000000000..7af677199cc4
--- /dev/null
+++ b/gcc/config/avr/avr.opt.urls
@@ -0,0 +1,71 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/avr/avr.opt and generated HTML
+
+mcall-prologues
+UrlSuffix(gcc/AVR-Options.html#index-mcall-prologues)
+
+mmcu=
+UrlSuffix(gcc/AVR-Options.html#index-mmcu)
+
+mgas-isr-prologues
+UrlSuffix(gcc/AVR-Options.html#index-mgas-isr-prologues)
+
+mn-flash=
+UrlSuffix(gcc/AVR-Options.html#index-mn-flash)
+
+mrmw
+UrlSuffix(gcc/AVR-Options.html#index-mrmw)
+
+mshort-calls
+UrlSuffix(gcc/AVR-Options.html#index-mshort-calls)
+
+mint8
+UrlSuffix(gcc/AVR-Options.html#index-mint8)
+
+mno-interrupts
+UrlSuffix(gcc/AVR-Options.html#index-mno-interrupts)
+
+mbranch-cost=
+UrlSuffix(gcc/AVR-Options.html#index-mbranch-cost-1)
+
+mmain-is-OS_task
+UrlSuffix(gcc/AVR-Options.html#index-mmain-is-OS_005ftask)
+
+mtiny-stack
+UrlSuffix(gcc/AVR-Options.html#index-mtiny-stack)
+
+mrelax
+UrlSuffix(gcc/AVR-Options.html#index-mrelax)
+
+maccumulate-args
+UrlSuffix(gcc/AVR-Options.html#index-maccumulate-args)
+
+mstrict-X
+UrlSuffix(gcc/AVR-Options.html#index-mstrict-X)
+
+msp8
+UrlSuffix(gcc/AVR-Options.html#index-msp8)
+
+Waddr-space-convert
+UrlSuffix(gcc/AVR-Options.html#index-Waddr-space-convert)
+
+Wmisspelled-isr
+UrlSuffix(gcc/AVR-Options.html#index-Wmisspelled-isr)
+
+mfract-convert-truncate
+UrlSuffix(gcc/AVR-Options.html#index-mfract-convert-truncate)
+
+mabsdata
+UrlSuffix(gcc/AVR-Options.html#index-mabsdata)
+
+mdouble=
+UrlSuffix(gcc/AVR-Options.html#index-mdouble)
+
+mlong-double=
+UrlSuffix(gcc/AVR-Options.html#index-mlong-double)
+
+nodevicelib
+UrlSuffix(gcc/AVR-Options.html#index-nodevicelib)
+
+nodevicespecs
+UrlSuffix(gcc/AVR-Options.html#index-nodevicespecs)
+
diff --git a/gcc/config/bfin/bfin.opt.urls b/gcc/config/bfin/bfin.opt.urls
new file mode 100644
index 000000000000..8210fee663fd
--- /dev/null
+++ b/gcc/config/bfin/bfin.opt.urls
@@ -0,0 +1,61 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/bfin/bfin.opt and generated HTML
+
+msim
+UrlSuffix(gcc/Blackfin-Options.html#index-msim)
+
+mcpu=
+UrlSuffix(gcc/Blackfin-Options.html#index-mcpu_003d)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/Blackfin-Options.html#index-momit-leaf-frame-pointer-1)
+
+mlow64k
+UrlSuffix(gcc/Blackfin-Options.html#index-mlow64k)
+
+mcsync-anomaly
+UrlSuffix(gcc/Blackfin-Options.html#index-mcsync-anomaly)
+
+mspecld-anomaly
+UrlSuffix(gcc/Blackfin-Options.html#index-mspecld-anomaly)
+
+mid-shared-library
+UrlSuffix(gcc/Blackfin-Options.html#index-mid-shared-library)
+
+mleaf-id-shared-library
+UrlSuffix(gcc/Blackfin-Options.html#index-mleaf-id-shared-library)
+
+mshared-library-id=
+UrlSuffix(gcc/Blackfin-Options.html#index-mshared-library-id)
+
+msep-data
+UrlSuffix(gcc/Blackfin-Options.html#index-msep-data)
+
+mlong-calls
+UrlSuffix(gcc/Blackfin-Options.html#index-mlong-calls-3)
+
+mfast-fp
+UrlSuffix(gcc/Blackfin-Options.html#index-mfast-fp)
+
+; skipping UrlSuffix for 'mfdpic' due to finding no URLs
+
+minline-plt
+UrlSuffix(gcc/Blackfin-Options.html#index-minline-plt)
+
+mstack-check-l1
+UrlSuffix(gcc/Blackfin-Options.html#index-mstack-check-l1)
+
+mmulticore
+UrlSuffix(gcc/Blackfin-Options.html#index-mmulticore)
+
+mcorea
+UrlSuffix(gcc/Blackfin-Options.html#index-mcorea)
+
+mcoreb
+UrlSuffix(gcc/Blackfin-Options.html#index-mcoreb)
+
+msdram
+UrlSuffix(gcc/Blackfin-Options.html#index-msdram)
+
+micplb
+UrlSuffix(gcc/Blackfin-Options.html#index-micplb)
+
diff --git a/gcc/config/bpf/bpf.opt.urls b/gcc/config/bpf/bpf.opt.urls
new file mode 100644
index 000000000000..8c1e5f86d5cc
--- /dev/null
+++ b/gcc/config/bpf/bpf.opt.urls
@@ -0,0 +1,35 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/bpf/bpf.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/eBPF-Options.html#index-mbig-endian-5)
+
+mlittle-endian
+UrlSuffix(gcc/eBPF-Options.html#index-mlittle-endian-5)
+
+mco-re
+UrlSuffix(gcc/eBPF-Options.html#index-mco-re)
+
+mjmpext
+UrlSuffix(gcc/eBPF-Options.html#index-mjmpext)
+
+malu32
+UrlSuffix(gcc/eBPF-Options.html#index-malu32)
+
+mjmp32
+UrlSuffix(gcc/eBPF-Options.html#index-mjmp32)
+
+mv3-atomics
+UrlSuffix(gcc/eBPF-Options.html#index-mv3-atomics)
+
+mbswap
+UrlSuffix(gcc/eBPF-Options.html#index-mbswap)
+
+msdiv
+UrlSuffix(gcc/eBPF-Options.html#index-msdiv)
+
+msmov
+UrlSuffix(gcc/eBPF-Options.html#index-msmov)
+
+mcpu=
+UrlSuffix(gcc/eBPF-Options.html#index-mcpu-5)
+
diff --git a/gcc/config/c6x/c6x-tables.opt.urls b/gcc/config/c6x/c6x-tables.opt.urls
new file mode 100644
index 000000000000..35d14c753e2c
--- /dev/null
+++ b/gcc/config/c6x/c6x-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x-tables.opt and generated HTML
+
diff --git a/gcc/config/c6x/c6x.opt.urls b/gcc/config/c6x/c6x.opt.urls
new file mode 100644
index 000000000000..5b1c103b43f2
--- /dev/null
+++ b/gcc/config/c6x/c6x.opt.urls
@@ -0,0 +1,18 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/C6X-Options.html#index-mbig-endian-3)
+
+mlittle-endian
+UrlSuffix(gcc/C6X-Options.html#index-mlittle-endian-3)
+
+msim
+UrlSuffix(gcc/C6X-Options.html#index-msim-1)
+
+; skipping UrlSuffix for 'msdata=' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-calls' due to finding no URLs
+
+march=
+UrlSuffix(gcc/C6X-Options.html#index-march-3)
+
diff --git a/gcc/config/cris/cris.opt.urls b/gcc/config/cris/cris.opt.urls
new file mode 100644
index 000000000000..56eeaa25da1c
--- /dev/null
+++ b/gcc/config/cris/cris.opt.urls
@@ -0,0 +1,65 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/cris.opt and generated HTML
+
+mmul-bug-workaround
+UrlSuffix(gcc/CRIS-Options.html#index-mmul-bug-workaround)
+
+metrax4
+UrlSuffix(gcc/CRIS-Options.html#index-metrax4)
+
+metrax100
+UrlSuffix(gcc/CRIS-Options.html#index-metrax100)
+
+mpdebug
+UrlSuffix(gcc/CRIS-Options.html#index-mpdebug)
+
+mcc-init
+UrlSuffix(gcc/CRIS-Options.html#index-mcc-init)
+
+mside-effects
+UrlSuffix(gcc/CRIS-Options.html#index-mside-effects)
+
+mno-side-effects
+UrlSuffix(gcc/CRIS-Options.html#index-mno-side-effects)
+
+mstack-align
+UrlSuffix(gcc/CRIS-Options.html#index-mstack-align)
+
+mno-stack-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-stack-align)
+
+mdata-align
+UrlSuffix(gcc/CRIS-Options.html#index-mdata-align)
+
+mno-data-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-data-align)
+
+mconst-align
+UrlSuffix(gcc/CRIS-Options.html#index-mconst-align)
+
+mno-const-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-const-align)
+
+m32-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m32-bit)
+
+m16-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m16-bit)
+
+m8-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m8-bit)
+
+mprologue-epilogue
+UrlSuffix(gcc/CRIS-Options.html#index-mprologue-epilogue)
+
+mno-prologue-epilogue
+UrlSuffix(gcc/CRIS-Options.html#index-mno-prologue-epilogue)
+
+mcpu=
+UrlSuffix(gcc/CRIS-Options.html#index-mcpu-3)
+
+march=
+UrlSuffix(gcc/CRIS-Options.html#index-march-4)
+
+mtune=
+UrlSuffix(gcc/CRIS-Options.html#index-mtune-5)
+
diff --git a/gcc/config/cris/elf.opt.urls b/gcc/config/cris/elf.opt.urls
new file mode 100644
index 000000000000..bdfa01e97a49
--- /dev/null
+++ b/gcc/config/cris/elf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/elf.opt and generated HTML
+
+melf
+UrlSuffix(gcc/CRIS-Options.html#index-melf)
+
+sim
+UrlSuffix(gcc/CRIS-Options.html#index-sim)
+
diff --git a/gcc/config/csky/csky.opt.urls b/gcc/config/csky/csky.opt.urls
new file mode 100644
index 000000000000..96b0b174f7c9
--- /dev/null
+++ b/gcc/config/csky/csky.opt.urls
@@ -0,0 +1,104 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky.opt and generated HTML
+
+march=
+UrlSuffix(gcc/C-SKY-Options.html#index-march_003d)
+
+mcpu=
+UrlSuffix(gcc/C-SKY-Options.html#index-mcpu_003d-1)
+
+mbig-endian
+UrlSuffix(gcc/C-SKY-Options.html#index-mbig-endian-4)
+
+EB
+UrlSuffix(gcc/C-SKY-Options.html#index-EB-1)
+
+mlittle-endian
+UrlSuffix(gcc/C-SKY-Options.html#index-mlittle-endian-4)
+
+EL
+UrlSuffix(gcc/C-SKY-Options.html#index-EL-1)
+
+mhard-float
+UrlSuffix(gcc/C-SKY-Options.html#index-mhard-float)
+
+msoft-float
+UrlSuffix(gcc/C-SKY-Options.html#index-msoft-float-1)
+
+mfloat-abi=
+UrlSuffix(gcc/C-SKY-Options.html#index-mfloat-abi-1)
+
+mfpu=
+UrlSuffix(gcc/C-SKY-Options.html#index-mfpu_003d)
+
+mdouble-float
+UrlSuffix(gcc/C-SKY-Options.html#index-mdouble-float)
+
+mfdivdu
+UrlSuffix(gcc/C-SKY-Options.html#index-mfdivdu)
+
+melrw
+UrlSuffix(gcc/C-SKY-Options.html#index-melrw)
+
+mistack
+UrlSuffix(gcc/C-SKY-Options.html#index-mistack)
+
+mmp
+UrlSuffix(gcc/C-SKY-Options.html#index-mmp)
+
+mcp
+UrlSuffix(gcc/C-SKY-Options.html#index-mcp)
+
+mcache
+UrlSuffix(gcc/C-SKY-Options.html#index-mcache)
+
+msecurity
+UrlSuffix(gcc/C-SKY-Options.html#index-msecurity)
+
+mtrust
+UrlSuffix(gcc/C-SKY-Options.html#index-mtrust)
+
+mdsp
+UrlSuffix(gcc/C-SKY-Options.html#index-mdsp)
+
+medsp
+UrlSuffix(gcc/C-SKY-Options.html#index-medsp)
+
+mvdsp
+UrlSuffix(gcc/C-SKY-Options.html#index-mvdsp)
+
+mdiv
+UrlSuffix(gcc/C-SKY-Options.html#index-mdiv)
+
+msmart
+UrlSuffix(gcc/C-SKY-Options.html#index-msmart)
+
+mhigh-registers
+UrlSuffix(gcc/C-SKY-Options.html#index-mhigh-registers)
+
+manchor
+UrlSuffix(gcc/C-SKY-Options.html#index-manchor)
+
+mpushpop
+UrlSuffix(gcc/C-SKY-Options.html#index-mpushpop)
+
+mmultiple-stld
+UrlSuffix(gcc/C-SKY-Options.html#index-mmultiple-stld)
+
+mconstpool
+UrlSuffix(gcc/C-SKY-Options.html#index-mconstpool)
+
+mstack-size
+UrlSuffix(gcc/C-SKY-Options.html#index-mstack-size-1)
+
+mccrt
+UrlSuffix(gcc/C-SKY-Options.html#index-mccrt)
+
+mbranch-cost=
+UrlSuffix(gcc/C-SKY-Options.html#index-mbranch-cost_003d)
+
+msched-prolog
+UrlSuffix(gcc/C-SKY-Options.html#index-msched-prolog-1)
+
+msim
+UrlSuffix(gcc/C-SKY-Options.html#index-msim-2)
+
diff --git a/gcc/config/csky/csky_tables.opt.urls b/gcc/config/csky/csky_tables.opt.urls
new file mode 100644
index 000000000000..eaa247bc897c
--- /dev/null
+++ b/gcc/config/csky/csky_tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky_tables.opt and generated HTML
+
diff --git a/gcc/config/darwin.opt.urls b/gcc/config/darwin.opt.urls
new file mode 100644
index 000000000000..e83d183ac161
--- /dev/null
+++ b/gcc/config/darwin.opt.urls
@@ -0,0 +1,224 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/darwin.opt and generated HTML
+
+dependency-file
+UrlSuffix(gcc/Darwin-Options.html#index-dependency-file)
+
+fconstant-cfstrings
+UrlSuffix(gcc/Darwin-Options.html#index-fconstant-cfstrings)
+
+iframework
+UrlSuffix(gcc/Darwin-Options.html#index-iframework)
+
+mconstant-cfstrings
+UrlSuffix(gcc/Darwin-Options.html#index-mconstant-cfstrings)
+
+; skipping UrlSuffix for 'mdynamic-no-pic' due to finding no URLs
+
+mfix-and-continue
+UrlSuffix(gcc/Darwin-Options.html#index-mfix-and-continue)
+
+mkernel
+UrlSuffix(gcc/Darwin-Options.html#index-mkernel)
+
+mmacosx-version-min=
+UrlSuffix(gcc/Darwin-Options.html#index-mmacosx-version-min)
+
+mone-byte-bool
+UrlSuffix(gcc/Darwin-Options.html#index-mone-byte-bool)
+
+all_load
+UrlSuffix(gcc/Darwin-Options.html#index-all_005fload)
+
+allowable_client
+UrlSuffix(gcc/Darwin-Options.html#index-allowable_005fclient)
+
+arch_errors_fatal
+UrlSuffix(gcc/Darwin-Options.html#index-arch_005ferrors_005ffatal)
+
+bind_at_load
+UrlSuffix(gcc/Darwin-Options.html#index-bind_005fat_005fload)
+
+bundle
+UrlSuffix(gcc/Darwin-Options.html#index-bundle)
+
+bundle_loader
+UrlSuffix(gcc/Darwin-Options.html#index-bundle_005floader)
+
+client_name
+UrlSuffix(gcc/Darwin-Options.html#index-client_005fname)
+
+compatibility_version
+UrlSuffix(gcc/Darwin-Options.html#index-compatibility_005fversion)
+
+current_version
+UrlSuffix(gcc/Darwin-Options.html#index-current_005fversion)
+
+dead_strip
+UrlSuffix(gcc/Darwin-Options.html#index-dead_005fstrip)
+
+dylib_file
+UrlSuffix(gcc/Darwin-Options.html#index-dylib_005ffile)
+
+dylinker_install_name
+UrlSuffix(gcc/Darwin-Options.html#index-dylinker_005finstall_005fname)
+
+dynamic
+UrlSuffix(gcc/Darwin-Options.html#index-dynamic)
+
+dynamiclib
+UrlSuffix(gcc/Darwin-Options.html#index-dynamiclib)
+
+exported_symbols_list
+UrlSuffix(gcc/Darwin-Options.html#index-exported_005fsymbols_005flist)
+
+filelist
+UrlSuffix(gcc/Darwin-Options.html#index-filelist)
+
+flat_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-flat_005fnamespace)
+
+force_cpusubtype_ALL
+UrlSuffix(gcc/Darwin-Options.html#index-force_005fcpusubtype_005fALL)
+
+force_flat_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-force_005fflat_005fnamespace)
+
+gfull
+UrlSuffix(gcc/Darwin-Options.html#index-gfull)
+
+gused
+UrlSuffix(gcc/Darwin-Options.html#index-gused)
+
+headerpad_max_install_names
+UrlSuffix(gcc/Darwin-Options.html#index-headerpad_005fmax_005finstall_005fnames)
+
+image_base
+UrlSuffix(gcc/Darwin-Options.html#index-image_005fbase)
+
+init
+UrlSuffix(gcc/Darwin-Options.html#index-init)
+
+install_name
+UrlSuffix(gcc/Darwin-Options.html#index-install_005fname)
+
+keep_private_externs
+UrlSuffix(gcc/Darwin-Options.html#index-keep_005fprivate_005fexterns)
+
+multi_module
+UrlSuffix(gcc/Darwin-Options.html#index-multi_005fmodule)
+
+multiply_defined
+UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined)
+
+multiply_defined_unused
+UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined_005funused)
+
+no_dead_strip_inits_and_terms
+UrlSuffix(gcc/Darwin-Options.html#index-no_005fdead_005fstrip_005finits_005fand_005fterms)
+
+nodefaultrpaths
+UrlSuffix(gcc/Darwin-Options.html#index-nodefaultrpaths)
+
+nofixprebinding
+UrlSuffix(gcc/Darwin-Options.html#index-nofixprebinding)
+
+nomultidefs
+UrlSuffix(gcc/Darwin-Options.html#index-nomultidefs)
+
+noprebind
+UrlSuffix(gcc/Darwin-Options.html#index-noprebind)
+
+noseglinkedit
+UrlSuffix(gcc/Darwin-Options.html#index-noseglinkedit)
+
+pagezero_size
+UrlSuffix(gcc/Darwin-Options.html#index-pagezero_005fsize)
+
+prebind
+UrlSuffix(gcc/Darwin-Options.html#index-prebind)
+
+prebind_all_twolevel_modules
+UrlSuffix(gcc/Darwin-Options.html#index-prebind_005fall_005ftwolevel_005fmodules)
+
+private_bundle
+UrlSuffix(gcc/Darwin-Options.html#index-private_005fbundle)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
+read_only_relocs
+UrlSuffix(gcc/Darwin-Options.html#index-read_005fonly_005frelocs)
+
+sectalign
+UrlSuffix(gcc/Darwin-Options.html#index-sectalign)
+
+sectcreate
+UrlSuffix(gcc/Darwin-Options.html#index-sectcreate)
+
+sectobjectsymbols
+UrlSuffix(gcc/Darwin-Options.html#index-sectobjectsymbols)
+
+sectorder
+UrlSuffix(gcc/Darwin-Options.html#index-sectorder)
+
+seg_addr_table
+UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable)
+
+seg_addr_table_filename
+UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable_005ffilename)
+
+seg1addr
+UrlSuffix(gcc/Darwin-Options.html#index-seg1addr)
+
+segaddr
+UrlSuffix(gcc/Darwin-Options.html#index-segaddr)
+
+seglinkedit
+UrlSuffix(gcc/Darwin-Options.html#index-seglinkedit)
+
+segprot
+UrlSuffix(gcc/Darwin-Options.html#index-segprot)
+
+segs_read_only_addr
+UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fonly_005faddr)
+
+segs_read_write_addr
+UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fwrite_005faddr)
+
+single_module
+UrlSuffix(gcc/Darwin-Options.html#index-single_005fmodule)
+
+sub_library
+UrlSuffix(gcc/Darwin-Options.html#index-sub_005flibrary)
+
+sub_umbrella
+UrlSuffix(gcc/Darwin-Options.html#index-sub_005fumbrella)
+
+twolevel_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-twolevel_005fnamespace)
+
+umbrella
+UrlSuffix(gcc/Darwin-Options.html#index-umbrella)
+
+undefined
+UrlSuffix(gcc/Darwin-Options.html#index-undefined)
+
+unexported_symbols_list
+UrlSuffix(gcc/Darwin-Options.html#index-unexported_005fsymbols_005flist)
+
+weak_reference_mismatches
+UrlSuffix(gcc/Darwin-Options.html#index-weak_005freference_005fmismatches)
+
+whatsloaded
+UrlSuffix(gcc/Darwin-Options.html#index-whatsloaded)
+
+whyload
+UrlSuffix(gcc/Darwin-Options.html#index-whyload)
+
+X
+LangUrlSuffix_D(gdc/Code-Generation.html#index-X)
+
diff --git a/gcc/config/dragonfly.opt.urls b/gcc/config/dragonfly.opt.urls
new file mode 100644
index 000000000000..62e2e21594e1
--- /dev/null
+++ b/gcc/config/dragonfly.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/dragonfly.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/epiphany/epiphany.opt.urls b/gcc/config/epiphany/epiphany.opt.urls
new file mode 100644
index 000000000000..a8e28c46d210
--- /dev/null
+++ b/gcc/config/epiphany/epiphany.opt.urls
@@ -0,0 +1,52 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/epiphany/epiphany.opt and generated HTML
+
+mhalf-reg-file
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mhalf-reg-file)
+
+mprefer-short-insn-regs
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mprefer-short-insn-regs)
+
+mbranch-cost=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mbranch-cost)
+
+mcmove
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mcmove)
+
+mnops=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mnops)
+
+msoft-cmpsf
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msoft-cmpsf)
+
+msplit-lohi
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-lohi)
+
+mstack-offset=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mstack-offset)
+
+mround-nearest
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mround-nearest)
+
+mlong-calls
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mlong-calls)
+
+; skipping UrlSuffix for 'mshort-calls' due to finding no URLs
+
+msmall16
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msmall16)
+
+mfp-mode=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mfp-mode)
+
+mvect-double
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mvect-double)
+
+max-vect-align=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-max-vect-align)
+
+msplit-vecmove-early
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-vecmove-early)
+
+m1reg-
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-m1reg-)
+
diff --git a/gcc/config/fr30/fr30.opt.urls b/gcc/config/fr30/fr30.opt.urls
new file mode 100644
index 000000000000..eabbfbfd9dd3
--- /dev/null
+++ b/gcc/config/fr30/fr30.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/fr30/fr30.opt and generated HTML
+
+msmall-model
+UrlSuffix(gcc/FR30-Options.html#index-msmall-model)
+
+mno-lsim
+UrlSuffix(gcc/FR30-Options.html#index-mno-lsim)
+
diff --git a/gcc/config/freebsd.opt.urls b/gcc/config/freebsd.opt.urls
new file mode 100644
index 000000000000..3be69e4c3e8d
--- /dev/null
+++ b/gcc/config/freebsd.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/freebsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/frv/frv.opt.urls b/gcc/config/frv/frv.opt.urls
new file mode 100644
index 000000000000..d3d3757bb289
--- /dev/null
+++ b/gcc/config/frv/frv.opt.urls
@@ -0,0 +1,111 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/frv/frv.opt and generated HTML
+
+macc-4
+UrlSuffix(gcc/FRV-Options.html#index-macc-4)
+
+macc-8
+UrlSuffix(gcc/FRV-Options.html#index-macc-8)
+
+malign-labels
+UrlSuffix(gcc/FRV-Options.html#index-malign-labels)
+
+malloc-cc
+UrlSuffix(gcc/FRV-Options.html#index-malloc-cc)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mcond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mcond-exec)
+
+mcond-move
+UrlSuffix(gcc/FRV-Options.html#index-mcond-move)
+
+mcpu=
+UrlSuffix(gcc/FRV-Options.html#index-mcpu-6)
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+mdouble
+UrlSuffix(gcc/FRV-Options.html#index-mdouble-1)
+
+mdword
+UrlSuffix(gcc/FRV-Options.html#index-mdword)
+
+mfdpic
+UrlSuffix(gcc/FRV-Options.html#index-mfdpic-1)
+
+mfixed-cc
+UrlSuffix(gcc/FRV-Options.html#index-mfixed-cc)
+
+mfpr-32
+UrlSuffix(gcc/FRV-Options.html#index-mfpr-32)
+
+mfpr-64
+UrlSuffix(gcc/FRV-Options.html#index-mfpr-64)
+
+mgpr-32
+UrlSuffix(gcc/FRV-Options.html#index-mgpr-32)
+
+mgpr-64
+UrlSuffix(gcc/FRV-Options.html#index-mgpr-64)
+
+mgprel-ro
+UrlSuffix(gcc/FRV-Options.html#index-mgprel-ro)
+
+mhard-float
+UrlSuffix(gcc/FRV-Options.html#index-mhard-float-1)
+
+minline-plt
+UrlSuffix(gcc/FRV-Options.html#index-minline-plt-1)
+
+mlibrary-pic
+UrlSuffix(gcc/FRV-Options.html#index-mlibrary-pic)
+
+mlinked-fp
+UrlSuffix(gcc/FRV-Options.html#index-mlinked-fp)
+
+mlong-calls
+UrlSuffix(gcc/FRV-Options.html#index-mlong-calls-4)
+
+mmedia
+UrlSuffix(gcc/FRV-Options.html#index-mmedia)
+
+mmuladd
+UrlSuffix(gcc/FRV-Options.html#index-mmuladd)
+
+mmulti-cond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mmulti-cond-exec)
+
+mnested-cond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mnested-cond-exec)
+
+mno-eflags
+UrlSuffix(gcc/FRV-Options.html#index-mno-eflags)
+
+moptimize-membar
+UrlSuffix(gcc/FRV-Options.html#index-moptimize-membar)
+
+mpack
+UrlSuffix(gcc/FRV-Options.html#index-mpack)
+
+mscc
+UrlSuffix(gcc/FRV-Options.html#index-mscc)
+
+msoft-float
+UrlSuffix(gcc/FRV-Options.html#index-msoft-float-3)
+
+mTLS
+UrlSuffix(gcc/FRV-Options.html#index-mTLS)
+
+mtls
+UrlSuffix(gcc/FRV-Options.html#index-mtls)
+
+mtomcat-stats
+UrlSuffix(gcc/FRV-Options.html#index-mtomcat-stats)
+
+multilib-library-pic
+UrlSuffix(gcc/FRV-Options.html#index-multilib-library-pic)
+
+mvliw-branch
+UrlSuffix(gcc/FRV-Options.html#index-mvliw-branch)
+
diff --git a/gcc/config/ft32/ft32.opt.urls b/gcc/config/ft32/ft32.opt.urls
new file mode 100644
index 000000000000..707cb83010f0
--- /dev/null
+++ b/gcc/config/ft32/ft32.opt.urls
@@ -0,0 +1,20 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ft32/ft32.opt and generated HTML
+
+msim
+UrlSuffix(gcc/FT32-Options.html#index-msim-3)
+
+mlra
+UrlSuffix(gcc/FT32-Options.html#index-mlra-1)
+
+mnodiv
+UrlSuffix(gcc/FT32-Options.html#index-mnodiv)
+
+mft32b
+UrlSuffix(gcc/FT32-Options.html#index-mft32b)
+
+mcompress
+UrlSuffix(gcc/FT32-Options.html#index-mcompress)
+
+mnopm
+UrlSuffix(gcc/FT32-Options.html#index-mnopm)
+
diff --git a/gcc/config/fused-madd.opt.urls b/gcc/config/fused-madd.opt.urls
new file mode 100644
index 000000000000..0bd906cfb643
--- /dev/null
+++ b/gcc/config/fused-madd.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/fused-madd.opt and generated HTML
+
+; skipping UrlSuffix for 'mfused-madd' due to finding no URLs
+
diff --git a/gcc/config/g.opt.urls b/gcc/config/g.opt.urls
new file mode 100644
index 000000000000..4ffd5cbd2cf5
--- /dev/null
+++ b/gcc/config/g.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/g.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
diff --git a/gcc/config/gcn/gcn.opt.urls b/gcc/config/gcn/gcn.opt.urls
new file mode 100644
index 000000000000..7bc0ef41831f
--- /dev/null
+++ b/gcc/config/gcn/gcn.opt.urls
@@ -0,0 +1,23 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/gcn/gcn.opt and generated HTML
+
+march=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-march-1)
+
+mtune=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mtune-1)
+
+; skipping UrlSuffix for 'm32' due to finding no URLs
+
+; skipping UrlSuffix for 'm64' due to finding no URLs
+
+; skipping UrlSuffix for 'mgomp' due to finding no URLs
+
+mstack-size=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mstack-size)
+
+mxnack=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mxnack)
+
+msram-ecc=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-msram-ecc)
+
diff --git a/gcc/config/gnu-user.opt.urls b/gcc/config/gnu-user.opt.urls
new file mode 100644
index 000000000000..42021e1fe3cd
--- /dev/null
+++ b/gcc/config/gnu-user.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/gnu-user.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/h8300/h8300.opt.urls b/gcc/config/h8300/h8300.opt.urls
new file mode 100644
index 000000000000..8cbd7c313b7f
--- /dev/null
+++ b/gcc/config/h8300/h8300.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/h8300/h8300.opt and generated HTML
+
+ms
+UrlSuffix(gcc/H8_002f300-Options.html#index-ms)
+
+ms2600
+UrlSuffix(gcc/H8_002f300-Options.html#index-ms2600)
+
+mint32
+UrlSuffix(gcc/H8_002f300-Options.html#index-mint32)
+
+mrelax
+UrlSuffix(gcc/H8_002f300-Options.html#index-mrelax-1)
+
+mh
+UrlSuffix(gcc/H8_002f300-Options.html#index-mh)
+
+mn
+UrlSuffix(gcc/H8_002f300-Options.html#index-mn)
+
+malign-300
+UrlSuffix(gcc/H8_002f300-Options.html#index-malign-300)
+
+mexr
+UrlSuffix(gcc/H8_002f300-Options.html#index-mexr)
+
+mno-exr
+UrlSuffix(gcc/H8_002f300-Options.html#index-mno-exr)
+
diff --git a/gcc/config/hpux11.opt.urls b/gcc/config/hpux11.opt.urls
new file mode 100644
index 000000000000..84fef2e7919d
--- /dev/null
+++ b/gcc/config/hpux11.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/hpux11.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/i386/cygming.opt.urls b/gcc/config/i386/cygming.opt.urls
new file mode 100644
index 000000000000..87799befe3c4
--- /dev/null
+++ b/gcc/config/i386/cygming.opt.urls
@@ -0,0 +1,30 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygming.opt and generated HTML
+
+mconsole
+UrlSuffix(gcc/x86-Windows-Options.html#index-mconsole)
+
+mdll
+UrlSuffix(gcc/x86-Windows-Options.html#index-mdll)
+
+mnop-fun-dllimport
+UrlSuffix(gcc/x86-Windows-Options.html#index-mnop-fun-dllimport)
+
+; skipping UrlSuffix for 'mthreads' due to multiple URLs:
+;   duplicate: 'gcc/x86-Options.html#index-mthreads'
+;   duplicate: 'gcc/x86-Windows-Options.html#index-mthreads-1'
+
+mwin32
+UrlSuffix(gcc/x86-Windows-Options.html#index-mwin32)
+
+mwindows
+UrlSuffix(gcc/x86-Windows-Options.html#index-mwindows)
+
+mpe-aligned-commons
+UrlSuffix(gcc/x86-Windows-Options.html#index-mpe-aligned-commons)
+
+fset-stack-executable
+UrlSuffix(gcc/x86-Windows-Options.html#index-fno-set-stack-executable)
+
+fwritable-relocated-rdata
+UrlSuffix(gcc/x86-Windows-Options.html#index-fno-writable-relocated-rdata)
+
diff --git a/gcc/config/i386/cygwin.opt.urls b/gcc/config/i386/cygwin.opt.urls
new file mode 100644
index 000000000000..c484efc6fd98
--- /dev/null
+++ b/gcc/config/i386/cygwin.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygwin.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/i386/djgpp.opt.urls b/gcc/config/i386/djgpp.opt.urls
new file mode 100644
index 000000000000..8a723ab0a6dc
--- /dev/null
+++ b/gcc/config/i386/djgpp.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/djgpp.opt and generated HTML
+
diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls
new file mode 100644
index 000000000000..6ee69e35a61b
--- /dev/null
+++ b/gcc/config/i386/i386.opt.urls
@@ -0,0 +1,602 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/i386.opt and generated HTML
+
+m128bit-long-double
+UrlSuffix(gcc/x86-Options.html#index-m128bit-long-double)
+
+m80387
+UrlSuffix(gcc/x86-Options.html#index-m80387)
+
+m96bit-long-double
+UrlSuffix(gcc/x86-Options.html#index-m96bit-long-double)
+
+mlong-double-80
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-80)
+
+mlong-double-64
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-64-1)
+
+mlong-double-128
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-128-1)
+
+maccumulate-outgoing-args
+UrlSuffix(gcc/x86-Options.html#index-maccumulate-outgoing-args-1)
+
+malign-double
+UrlSuffix(gcc/x86-Options.html#index-malign-double)
+
+; skipping UrlSuffix for 'malign-loops=' due to finding no URLs
+
+malign-stringops
+UrlSuffix(gcc/x86-Options.html#index-malign-stringops)
+
+malign-data=
+UrlSuffix(gcc/x86-Options.html#index-malign-data-1)
+
+march=
+UrlSuffix(gcc/x86-Options.html#index-march-16)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mlarge-data-threshold=
+UrlSuffix(gcc/x86-Options.html#index-mlarge-data-threshold)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/x86-Options.html#index-mcpu-14)
+
+mfancy-math-387
+UrlSuffix(gcc/x86-Options.html#index-mfancy-math-387)
+
+mfp-ret-in-387
+UrlSuffix(gcc/x86-Options.html#index-mfp-ret-in-387)
+
+; skipping UrlSuffix for 'mfpmath=' due to multiple URLs:
+;   duplicate: 'gcc/Optimize-Options.html#index-mfpmath'
+;   duplicate: 'gcc/x86-Options.html#index-mfpmath-1'
+
+mhard-float
+UrlSuffix(gcc/x86-Options.html#index-mhard-float-11)
+
+mieee-fp
+UrlSuffix(gcc/x86-Options.html#index-mieee-fp)
+
+minline-all-stringops
+UrlSuffix(gcc/x86-Options.html#index-minline-all-stringops)
+
+minline-stringops-dynamically
+UrlSuffix(gcc/x86-Options.html#index-minline-stringops-dynamically)
+
+mms-bitfields
+UrlSuffix(gcc/x86-Options.html#index-mms-bitfields)
+
+mno-align-stringops
+UrlSuffix(gcc/x86-Options.html#index-mno-align-stringops)
+
+mno-fancy-math-387
+UrlSuffix(gcc/x86-Options.html#index-mno-fancy-math-387)
+
+mno-push-args
+UrlSuffix(gcc/x86-Options.html#index-mno-push-args)
+
+mno-red-zone
+UrlSuffix(gcc/x86-Options.html#index-mno-red-zone)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/x86-Options.html#index-momit-leaf-frame-pointer-2)
+
+mrelax-cmpxchg-loop
+UrlSuffix(gcc/x86-Options.html#index-mrelax-cmpxchg-loop)
+
+mpc32
+UrlSuffix(gcc/x86-Options.html#index-mpc32)
+
+mpc64
+UrlSuffix(gcc/x86-Options.html#index-mpc64)
+
+mpc80
+UrlSuffix(gcc/x86-Options.html#index-mpc80)
+
+mdaz-ftz
+UrlSuffix(gcc/x86-Options.html#index-mdaz-ftz)
+
+mpreferred-stack-boundary=
+UrlSuffix(gcc/x86-Options.html#index-mpreferred-stack-boundary-1)
+
+mincoming-stack-boundary=
+UrlSuffix(gcc/x86-Options.html#index-mincoming-stack-boundary)
+
+mpush-args
+UrlSuffix(gcc/x86-Options.html#index-mpush-args)
+
+mred-zone
+UrlSuffix(gcc/x86-Options.html#index-mred-zone)
+
+mregparm=
+UrlSuffix(gcc/x86-Options.html#index-mregparm)
+
+mrtd
+UrlSuffix(gcc/x86-Options.html#index-mrtd-1)
+
+msoft-float
+UrlSuffix(gcc/x86-Options.html#index-msoft-float-16)
+
+msseregparm
+UrlSuffix(gcc/x86-Options.html#index-msseregparm)
+
+mstackrealign
+UrlSuffix(gcc/x86-Options.html#index-mstackrealign)
+
+mtls-dialect=
+UrlSuffix(gcc/x86-Options.html#index-mtls-dialect-1)
+
+mtls-direct-seg-refs
+UrlSuffix(gcc/x86-Options.html#index-mtls-direct-seg-refs)
+
+mtune=
+UrlSuffix(gcc/x86-Options.html#index-mtune-17)
+
+mno-default
+UrlSuffix(gcc/x86-Options.html#index-mno-default)
+
+mdump-tune-features
+UrlSuffix(gcc/x86-Options.html#index-mdump-tune-features)
+
+miamcu
+UrlSuffix(gcc/x86-Options.html#index-miamcu)
+
+mabi=
+UrlSuffix(gcc/x86-Options.html#index-mabi-6)
+
+mcall-ms2sysv-xlogues
+UrlSuffix(gcc/x86-Options.html#index-mcall-ms2sysv-xlogues)
+
+mveclibabi=
+UrlSuffix(gcc/x86-Options.html#index-mveclibabi-1)
+
+mvect8-ret-in-mem
+UrlSuffix(gcc/x86-Options.html#index-mvect8-ret-in-mem)
+
+mrecip
+UrlSuffix(gcc/x86-Options.html#index-mrecip-1)
+
+mrecip=
+UrlSuffix(gcc/x86-Options.html#index-mrecip-1)
+
+mcld
+UrlSuffix(gcc/x86-Options.html#index-mcld)
+
+mvzeroupper
+UrlSuffix(gcc/x86-Options.html#index-mvzeroupper)
+
+mprefer-avx128
+UrlSuffix(gcc/x86-Options.html#index-mprefer-avx128)
+
+mprefer-vector-width=
+UrlSuffix(gcc/x86-Options.html#index-mprefer-vector-width)
+
+mpartial-vector-fp-math
+UrlSuffix(gcc/x86-Options.html#index-mpartial-vector-fp-math)
+
+mmove-max=
+UrlSuffix(gcc/x86-Options.html#index-mmove-max)
+
+mstore-max=
+UrlSuffix(gcc/x86-Options.html#index-mstore-max)
+
+m32
+UrlSuffix(gcc/x86-Options.html#index-m32-2)
+
+m64
+UrlSuffix(gcc/x86-Options.html#index-m64-4)
+
+mx32
+UrlSuffix(gcc/x86-Options.html#index-mx32)
+
+m16
+UrlSuffix(gcc/x86-Options.html#index-m16)
+
+mmmx
+UrlSuffix(gcc/x86-Options.html#index-mmmx)
+
+m3dnow
+UrlSuffix(gcc/x86-Options.html#index-m3dnow)
+
+m3dnowa
+UrlSuffix(gcc/x86-Options.html#index-m3dnowa)
+
+msse
+UrlSuffix(gcc/x86-Options.html#index-msse)
+
+msse2
+UrlSuffix(gcc/x86-Options.html#index-msse2)
+
+msse3
+UrlSuffix(gcc/x86-Options.html#index-msse3)
+
+mssse3
+UrlSuffix(gcc/x86-Options.html#index-mssse3)
+
+msse4.1
+UrlSuffix(gcc/x86-Options.html#index-msse4_002e1)
+
+msse4.2
+UrlSuffix(gcc/x86-Options.html#index-msse4_002e2)
+
+msse4
+UrlSuffix(gcc/x86-Options.html#index-msse4)
+
+mavx
+UrlSuffix(gcc/x86-Options.html#index-mavx)
+
+mavx2
+UrlSuffix(gcc/x86-Options.html#index-mavx2)
+
+mavx512f
+UrlSuffix(gcc/x86-Options.html#index-mavx512f)
+
+mavx512pf
+UrlSuffix(gcc/x86-Options.html#index-mavx512pf)
+
+mavx512er
+UrlSuffix(gcc/x86-Options.html#index-mavx512er)
+
+mavx512cd
+UrlSuffix(gcc/x86-Options.html#index-mavx512cd)
+
+mavx512dq
+UrlSuffix(gcc/x86-Options.html#index-mavx512dq)
+
+mavx512bw
+UrlSuffix(gcc/x86-Options.html#index-mavx512bw)
+
+mavx512vl
+UrlSuffix(gcc/x86-Options.html#index-mavx512vl)
+
+mavx512ifma
+UrlSuffix(gcc/x86-Options.html#index-mavx512ifma)
+
+mavx512vbmi
+UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi)
+
+mavx5124fmaps
+UrlSuffix(gcc/x86-Options.html#index-mavx5124fmaps)
+
+mavx5124vnniw
+UrlSuffix(gcc/x86-Options.html#index-mavx5124vnniw)
+
+mavx512vpopcntdq
+UrlSuffix(gcc/x86-Options.html#index-mavx512vpopcntdq)
+
+mavx512vbmi2
+UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi2)
+
+mavx512vnni
+UrlSuffix(gcc/x86-Options.html#index-mavx512vnni)
+
+mavx512bitalg
+UrlSuffix(gcc/x86-Options.html#index-mavx512bitalg)
+
+mavx512vp2intersect
+UrlSuffix(gcc/x86-Options.html#index-mavx512vp2intersect)
+
+mfma
+UrlSuffix(gcc/x86-Options.html#index-mfma)
+
+msse4a
+UrlSuffix(gcc/x86-Options.html#index-msse4a)
+
+mfma4
+UrlSuffix(gcc/x86-Options.html#index-mfma4)
+
+mxop
+UrlSuffix(gcc/x86-Options.html#index-mxop)
+
+mlwp
+UrlSuffix(gcc/x86-Options.html#index-mlwp)
+
+mabm
+UrlSuffix(gcc/x86-Options.html#index-mabm)
+
+mpopcnt
+UrlSuffix(gcc/x86-Options.html#index-mpopcnt)
+
+mpconfig
+UrlSuffix(gcc/x86-Options.html#index-mpconfig)
+
+mwbnoinvd
+UrlSuffix(gcc/x86-Options.html#index-mwbnoinvd)
+
+mptwrite
+UrlSuffix(gcc/x86-Options.html#index-mptwrite)
+
+muintr
+UrlSuffix(gcc/x86-Options.html#index-muintr)
+
+msgx
+UrlSuffix(gcc/x86-Options.html#index-msgx)
+
+mrdpid
+UrlSuffix(gcc/x86-Options.html#index-mrdpid)
+
+mgfni
+UrlSuffix(gcc/x86-Options.html#index-mgfni)
+
+mvaes
+UrlSuffix(gcc/x86-Options.html#index-mvaes)
+
+mvpclmulqdq
+UrlSuffix(gcc/x86-Options.html#index-mvpclmulqdq)
+
+mbmi
+UrlSuffix(gcc/x86-Options.html#index-mbmi)
+
+mbmi2
+UrlSuffix(gcc/x86-Options.html#index-mbmi2)
+
+mlzcnt
+UrlSuffix(gcc/x86-Options.html#index-mlzcnt)
+
+mhle
+UrlSuffix(gcc/x86-Options.html#index-mhle)
+
+mrdseed
+UrlSuffix(gcc/x86-Options.html#index-mrdseed)
+
+mprfchw
+UrlSuffix(gcc/x86-Options.html#index-mprfchw)
+
+madx
+UrlSuffix(gcc/x86-Options.html#index-madx)
+
+mclflushopt
+UrlSuffix(gcc/x86-Options.html#index-mclflushopt)
+
+mclwb
+UrlSuffix(gcc/x86-Options.html#index-mclwb)
+
+mfxsr
+UrlSuffix(gcc/x86-Options.html#index-mfxsr)
+
+mxsave
+UrlSuffix(gcc/x86-Options.html#index-mxsave)
+
+mxsaveopt
+UrlSuffix(gcc/x86-Options.html#index-mxsaveopt)
+
+mxsavec
+UrlSuffix(gcc/x86-Options.html#index-mxsavec)
+
+mxsaves
+UrlSuffix(gcc/x86-Options.html#index-mxsaves)
+
+mtbm
+UrlSuffix(gcc/x86-Options.html#index-mtbm)
+
+mcx16
+UrlSuffix(gcc/x86-Options.html#index-mcx16)
+
+msahf
+UrlSuffix(gcc/x86-Options.html#index-msahf)
+
+mmovbe
+UrlSuffix(gcc/x86-Options.html#index-mmovbe)
+
+mcrc32
+UrlSuffix(gcc/x86-Options.html#index-mcrc32)
+
+maes
+UrlSuffix(gcc/x86-Options.html#index-maes)
+
+msha
+UrlSuffix(gcc/x86-Options.html#index-msha)
+
+mpclmul
+UrlSuffix(gcc/x86-Options.html#index-mpclmul)
+
+msse2avx
+UrlSuffix(gcc/x86-Options.html#index-msse2avx)
+
+mfsgsbase
+UrlSuffix(gcc/x86-Options.html#index-mfsgsbase)
+
+mrdrnd
+UrlSuffix(gcc/x86-Options.html#index-mrdrnd)
+
+mf16c
+UrlSuffix(gcc/x86-Options.html#index-mf16c)
+
+mprefetchwt1
+UrlSuffix(gcc/x86-Options.html#index-mprefetchwt1)
+
+mfentry
+UrlSuffix(gcc/x86-Options.html#index-mfentry)
+
+mrecord-mcount
+UrlSuffix(gcc/x86-Options.html#index-mrecord-mcount)
+
+mnop-mcount
+UrlSuffix(gcc/x86-Options.html#index-mnop-mcount)
+
+mfentry-name=
+UrlSuffix(gcc/x86-Options.html#index-mfentry-name)
+
+mfentry-section=
+UrlSuffix(gcc/x86-Options.html#index-mfentry-section)
+
+mskip-rax-setup
+UrlSuffix(gcc/x86-Options.html#index-mskip-rax-setup)
+
+m8bit-idiv
+UrlSuffix(gcc/x86-Options.html#index-m8bit-idiv)
+
+mavx256-split-unaligned-load
+UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-load)
+
+mavx256-split-unaligned-store
+UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-store)
+
+mrtm
+UrlSuffix(gcc/x86-Options.html#index-mrtm)
+
+mmwaitx
+UrlSuffix(gcc/x86-Options.html#index-mmwaitx)
+
+mclzero
+UrlSuffix(gcc/x86-Options.html#index-mclzero)
+
+mpku
+UrlSuffix(gcc/x86-Options.html#index-mpku)
+
+mstack-protector-guard=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-4)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-reg-3)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-offset-4)
+
+; skipping UrlSuffix for 'mstack-protector-guard-symbol=' due to finding no URLs
+
+mgeneral-regs-only
+UrlSuffix(gcc/x86-Options.html#index-mgeneral-regs-only-2)
+
+mshstk
+UrlSuffix(gcc/x86-Options.html#index-mshstk)
+
+mcet-switch
+UrlSuffix(gcc/x86-Options.html#index-mcet-switch)
+
+mmanual-endbr
+UrlSuffix(gcc/x86-Options.html#index-mmanual-endbr)
+
+mforce-indirect-call
+UrlSuffix(gcc/x86-Options.html#index-mforce-indirect-call)
+
+mindirect-branch=
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch)
+
+mfunction-return=
+UrlSuffix(gcc/x86-Options.html#index-mfunction-return)
+
+mindirect-branch-cs-prefix
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-cs-prefix)
+
+mindirect-branch-register
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-register)
+
+mmovdiri
+UrlSuffix(gcc/x86-Options.html#index-mmovdiri)
+
+mmovdir64b
+UrlSuffix(gcc/x86-Options.html#index-mmovdir64b)
+
+mwaitpkg
+UrlSuffix(gcc/x86-Options.html#index-mwaitpkg)
+
+mcldemote
+UrlSuffix(gcc/x86-Options.html#index-mcldemote)
+
+minstrument-return=
+UrlSuffix(gcc/x86-Options.html#index-minstrument-return)
+
+mrecord-return
+UrlSuffix(gcc/x86-Options.html#index-mrecord-return)
+
+mharden-sls=
+UrlSuffix(gcc/x86-Options.html#index-mharden-sls-1)
+
+mavx512bf16
+UrlSuffix(gcc/x86-Options.html#index-mavx512bf16)
+
+menqcmd
+UrlSuffix(gcc/x86-Options.html#index-menqcmd)
+
+mserialize
+UrlSuffix(gcc/x86-Options.html#index-mserialize)
+
+mtsxldtrk
+UrlSuffix(gcc/x86-Options.html#index-mtsxldtrk)
+
+mamx-tile
+UrlSuffix(gcc/x86-Options.html#index-mamx-tile)
+
+mamx-int8
+UrlSuffix(gcc/x86-Options.html#index-mamx-int8)
+
+mamx-bf16
+UrlSuffix(gcc/x86-Options.html#index-mamx-bf16)
+
+mhreset
+UrlSuffix(gcc/x86-Options.html#index-mhreset)
+
+mkl
+UrlSuffix(gcc/x86-Options.html#index-mkl)
+
+mwidekl
+UrlSuffix(gcc/x86-Options.html#index-mwidekl)
+
+mavxvnni
+UrlSuffix(gcc/x86-Options.html#index-mavxvnni)
+
+mneeded
+UrlSuffix(gcc/x86-Options.html#index-mneeded)
+
+mmwait
+UrlSuffix(gcc/x86-Options.html#index-mmwait)
+
+mavx512fp16
+UrlSuffix(gcc/x86-Options.html#index-mavx512fp16)
+
+mdirect-extern-access
+UrlSuffix(gcc/x86-Options.html#index-mdirect-extern-access-1)
+
+mavxifma
+UrlSuffix(gcc/x86-Options.html#index-mavxifma)
+
+mavxvnniint8
+UrlSuffix(gcc/x86-Options.html#index-mavxvnniint8)
+
+mavxneconvert
+UrlSuffix(gcc/x86-Options.html#index-mavxneconvert)
+
+mcmpccxadd
+UrlSuffix(gcc/x86-Options.html#index-mcmpccxadd)
+
+mamx-fp16
+UrlSuffix(gcc/x86-Options.html#index-mamx-fp16)
+
+mprefetchi
+UrlSuffix(gcc/x86-Options.html#index-mprefetchi)
+
+mraoint
+UrlSuffix(gcc/x86-Options.html#index-mraoint)
+
+munroll-only-small-loops
+UrlSuffix(gcc/x86-Options.html#index-munroll-only-small-loops)
+
+mlam=
+UrlSuffix(gcc/x86-Options.html#index-mlam)
+
+mamx-complex
+UrlSuffix(gcc/x86-Options.html#index-mamx-complex)
+
+mavxvnniint16
+UrlSuffix(gcc/x86-Options.html#index-mavxvnniint16)
+
+msm3
+UrlSuffix(gcc/x86-Options.html#index-msm3)
+
+msha512
+UrlSuffix(gcc/x86-Options.html#index-msha512)
+
+msm4
+UrlSuffix(gcc/x86-Options.html#index-msm4)
+
+mapxf
+UrlSuffix(gcc/x86-Options.html#index-mapxf)
+
+musermsr
+UrlSuffix(gcc/x86-Options.html#index-musermsr)
+
diff --git a/gcc/config/i386/mingw-w64.opt.urls b/gcc/config/i386/mingw-w64.opt.urls
new file mode 100644
index 000000000000..6bb53ef29b2b
--- /dev/null
+++ b/gcc/config/i386/mingw-w64.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw-w64.opt and generated HTML
+
+municode
+UrlSuffix(gcc/x86-Windows-Options.html#index-municode)
+
diff --git a/gcc/config/i386/mingw.opt.urls b/gcc/config/i386/mingw.opt.urls
new file mode 100644
index 000000000000..2cbbaadf310d
--- /dev/null
+++ b/gcc/config/i386/mingw.opt.urls
@@ -0,0 +1,12 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw.opt and generated HTML
+
+mcrtdll=
+UrlSuffix(gcc/x86-Windows-Options.html#index-mcrtdll)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+Wpedantic-ms-format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic-ms-format)
+
diff --git a/gcc/config/i386/nto.opt.urls b/gcc/config/i386/nto.opt.urls
new file mode 100644
index 000000000000..37c07a5b88be
--- /dev/null
+++ b/gcc/config/i386/nto.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/nto.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
diff --git a/gcc/config/ia64/ia64.opt.urls b/gcc/config/ia64/ia64.opt.urls
new file mode 100644
index 000000000000..1e1d0631550a
--- /dev/null
+++ b/gcc/config/ia64/ia64.opt.urls
@@ -0,0 +1,122 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ia64.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/IA-64-Options.html#index-mbig-endian-6)
+
+mlittle-endian
+UrlSuffix(gcc/IA-64-Options.html#index-mlittle-endian-6)
+
+mgnu-as
+UrlSuffix(gcc/IA-64-Options.html#index-mgnu-as)
+
+mgnu-ld
+UrlSuffix(gcc/IA-64-Options.html#index-mgnu-ld-1)
+
+mvolatile-asm-stop
+UrlSuffix(gcc/IA-64-Options.html#index-mvolatile-asm-stop)
+
+mregister-names
+UrlSuffix(gcc/IA-64-Options.html#index-mregister-names)
+
+mno-sdata
+UrlSuffix(gcc/IA-64-Options.html#index-mno-sdata-1)
+
+msdata
+UrlSuffix(gcc/IA-64-Options.html#index-msdata-1)
+
+mno-pic
+UrlSuffix(gcc/IA-64-Options.html#index-mno-pic)
+
+mconstant-gp
+UrlSuffix(gcc/IA-64-Options.html#index-mconstant-gp)
+
+mauto-pic
+UrlSuffix(gcc/IA-64-Options.html#index-mauto-pic)
+
+minline-float-divide-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-min-latency)
+
+minline-float-divide-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-max-throughput)
+
+mno-inline-float-divide
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-float-divide)
+
+minline-int-divide-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-min-latency)
+
+minline-int-divide-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-max-throughput)
+
+mno-inline-int-divide
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-int-divide)
+
+minline-sqrt-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-min-latency)
+
+minline-sqrt-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-max-throughput)
+
+mno-inline-sqrt
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-sqrt)
+
+mdwarf2-asm
+UrlSuffix(gcc/IA-64-Options.html#index-mdwarf2-asm)
+
+mearly-stop-bits
+UrlSuffix(gcc/IA-64-Options.html#index-mearly-stop-bits)
+
+mfixed-range=
+UrlSuffix(gcc/IA-64-Options.html#index-mfixed-range-1)
+
+mtls-size=
+UrlSuffix(gcc/IA-64-Options.html#index-mtls-size-1)
+
+mtune=
+UrlSuffix(gcc/IA-64-Options.html#index-mtune-7)
+
+msched-br-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-br-data-spec)
+
+msched-ar-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-data-spec)
+
+msched-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-control-spec)
+
+msched-br-in-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-br-in-data-spec)
+
+msched-ar-in-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-in-data-spec)
+
+msched-in-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-in-control-spec)
+
+msched-spec-ldc
+UrlSuffix(gcc/IA-64-Options.html#index-msched-spec-ldc)
+
+msched-prefer-non-data-spec-insns
+UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-data-spec-insns)
+
+msched-prefer-non-control-spec-insns
+UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-control-spec-insns)
+
+msched-count-spec-in-critical-path
+UrlSuffix(gcc/IA-64-Options.html#index-msched-count-spec-in-critical-path)
+
+msched-stop-bits-after-every-cycle
+UrlSuffix(gcc/IA-64-Options.html#index-msched-stop-bits-after-every-cycle)
+
+msched-fp-mem-deps-zero-cost
+UrlSuffix(gcc/IA-64-Options.html#index-msched-fp-mem-deps-zero-cost)
+
+msched-max-memory-insns=
+UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns)
+
+msched-max-memory-insns-hard-limit
+UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns-hard-limit)
+
+msel-sched-dont-check-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msel-sched-dont-check-control-spec)
+
diff --git a/gcc/config/ia64/ilp32.opt.urls b/gcc/config/ia64/ilp32.opt.urls
new file mode 100644
index 000000000000..07bd47d6d13f
--- /dev/null
+++ b/gcc/config/ia64/ilp32.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ilp32.opt and generated HTML
+
+milp32
+UrlSuffix(gcc/IA-64-Options.html#index-milp32)
+
+mlp64
+UrlSuffix(gcc/IA-64-Options.html#index-mlp64)
+
diff --git a/gcc/config/ia64/vms.opt.urls b/gcc/config/ia64/vms.opt.urls
new file mode 100644
index 000000000000..e7797d9325e7
--- /dev/null
+++ b/gcc/config/ia64/vms.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/vms.opt and generated HTML
+
diff --git a/gcc/config/iq2000/iq2000.opt.urls b/gcc/config/iq2000/iq2000.opt.urls
new file mode 100644
index 000000000000..6aadab6be3af
--- /dev/null
+++ b/gcc/config/iq2000/iq2000.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/iq2000/iq2000.opt and generated HTML
+
+; skipping UrlSuffix for 'march=' due to finding no URLs
+
+; skipping UrlSuffix for 'mcpu=' due to finding no URLs
+
+; skipping UrlSuffix for 'membedded-data' due to finding no URLs
+
+; skipping UrlSuffix for 'mgpopt' due to finding no URLs
+
+; skipping UrlSuffix for 'mno-crt0' due to finding no URLs
+
+; skipping UrlSuffix for 'muninit-const-in-rodata' due to finding no URLs
+
diff --git a/gcc/config/linux-android.opt.urls b/gcc/config/linux-android.opt.urls
new file mode 100644
index 000000000000..48d38e925aa1
--- /dev/null
+++ b/gcc/config/linux-android.opt.urls
@@ -0,0 +1,11 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/linux-android.opt and generated HTML
+
+mandroid
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mandroid)
+
+tno-android-cc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-cc)
+
+tno-android-ld
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-ld)
+
diff --git a/gcc/config/linux.opt.urls b/gcc/config/linux.opt.urls
new file mode 100644
index 000000000000..792a73fb0a69
--- /dev/null
+++ b/gcc/config/linux.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/linux.opt and generated HTML
+
+mbionic
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mbionic)
+
+mglibc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mglibc)
+
+muclibc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-muclibc)
+
+mmusl
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mmusl)
+
diff --git a/gcc/config/lm32/lm32.opt.urls b/gcc/config/lm32/lm32.opt.urls
new file mode 100644
index 000000000000..89c8c47d3f44
--- /dev/null
+++ b/gcc/config/lm32/lm32.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/lm32/lm32.opt and generated HTML
+
+mdivide-enabled
+UrlSuffix(gcc/LM32-Options.html#index-mdivide-enabled)
+
+mbarrel-shift-enabled
+UrlSuffix(gcc/LM32-Options.html#index-mbarrel-shift-enabled)
+
+msign-extend-enabled
+UrlSuffix(gcc/LM32-Options.html#index-msign-extend-enabled)
+
+muser-enabled
+UrlSuffix(gcc/LM32-Options.html#index-muser-enabled)
+
diff --git a/gcc/config/loongarch/loongarch.opt.urls b/gcc/config/loongarch/loongarch.opt.urls
new file mode 100644
index 000000000000..020834f25bcd
--- /dev/null
+++ b/gcc/config/loongarch/loongarch.opt.urls
@@ -0,0 +1,60 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/loongarch/loongarch.opt and generated HTML
+
+mfpu=
+UrlSuffix(gcc/LoongArch-Options.html#index-mfpu-2)
+
+msoft-float
+UrlSuffix(gcc/LoongArch-Options.html#index-msoft-float-5)
+
+msingle-float
+UrlSuffix(gcc/LoongArch-Options.html#index-msingle-float)
+
+mdouble-float
+UrlSuffix(gcc/LoongArch-Options.html#index-mdouble-float-1)
+
+msimd=
+UrlSuffix(gcc/LoongArch-Options.html#index-msimd-1)
+
+march=
+UrlSuffix(gcc/LoongArch-Options.html#index-march-7)
+
+mtune=
+UrlSuffix(gcc/LoongArch-Options.html#index-mtune-8)
+
+mabi=
+UrlSuffix(gcc/LoongArch-Options.html#index-mabi-2)
+
+mbranch-cost=
+UrlSuffix(gcc/LoongArch-Options.html#index-mbranch-cost-2)
+
+mcheck-zero-division
+UrlSuffix(gcc/LoongArch-Options.html#index-mcheck-zero-division)
+
+mcond-move-int
+UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-int)
+
+mcond-move-float
+UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-float)
+
+mmemcpy
+UrlSuffix(gcc/LoongArch-Options.html#index-mmemcpy)
+
+mstrict-align
+UrlSuffix(gcc/LoongArch-Options.html#index-mstrict-align-1)
+
+mmax-inline-memcpy-size=
+UrlSuffix(gcc/LoongArch-Options.html#index-mmax-inline-memcpy-size)
+
+mexplicit-relocs=
+UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
+
+mexplicit-relocs
+UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mdirect-extern-access
+UrlSuffix(gcc/LoongArch-Options.html#index-mdirect-extern-access)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
diff --git a/gcc/config/lynx.opt.urls b/gcc/config/lynx.opt.urls
new file mode 100644
index 000000000000..63e7b9c4b33f
--- /dev/null
+++ b/gcc/config/lynx.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/lynx.opt and generated HTML
+
+mthreads
+UrlSuffix(gcc/x86-Windows-Options.html#index-mthreads-1)
+
diff --git a/gcc/config/m32c/m32c.opt.urls b/gcc/config/m32c/m32c.opt.urls
new file mode 100644
index 000000000000..da1bc024f74a
--- /dev/null
+++ b/gcc/config/m32c/m32c.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m32c/m32c.opt and generated HTML
+
+msim
+UrlSuffix(gcc/M32C-Options.html#index-msim-4)
+
+memregs=
+UrlSuffix(gcc/M32C-Options.html#index-memregs_003d)
+
diff --git a/gcc/config/m32r/m32r.opt.urls b/gcc/config/m32r/m32r.opt.urls
new file mode 100644
index 000000000000..ca33866970d8
--- /dev/null
+++ b/gcc/config/m32r/m32r.opt.urls
@@ -0,0 +1,27 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m32r/m32r.opt and generated HTML
+
+m32rx
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32rx)
+
+m32r2
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r2)
+
+m32r
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r)
+
+malign-loops
+UrlSuffix(gcc/M32R_002fD-Options.html#index-malign-loops)
+
+mdebug
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mdebug)
+
+; skipping UrlSuffix for 'mflush-func=' due to finding no URLs
+
+mno-flush-func
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-func)
+
+mno-flush-trap
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-trap)
+
+; skipping UrlSuffix for 'msdata=' due to finding no URLs
+
diff --git a/gcc/config/m68k/ieee.opt.urls b/gcc/config/m68k/ieee.opt.urls
new file mode 100644
index 000000000000..9c0c0f9b68a7
--- /dev/null
+++ b/gcc/config/m68k/ieee.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/ieee.opt and generated HTML
+
+; skipping UrlSuffix for 'mieee-fp' due to finding no URLs
+
diff --git a/gcc/config/m68k/m68k-tables.opt.urls b/gcc/config/m68k/m68k-tables.opt.urls
new file mode 100644
index 000000000000..380dc4370846
--- /dev/null
+++ b/gcc/config/m68k/m68k-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k-tables.opt and generated HTML
+
diff --git a/gcc/config/m68k/m68k.opt.urls b/gcc/config/m68k/m68k.opt.urls
new file mode 100644
index 000000000000..079fbf4a88e4
--- /dev/null
+++ b/gcc/config/m68k/m68k.opt.urls
@@ -0,0 +1,107 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k.opt and generated HTML
+
+m5200
+UrlSuffix(gcc/M680x0-Options.html#index-m5200)
+
+m5206e
+UrlSuffix(gcc/M680x0-Options.html#index-m5206e)
+
+m528x
+UrlSuffix(gcc/M680x0-Options.html#index-m528x)
+
+m5307
+UrlSuffix(gcc/M680x0-Options.html#index-m5307)
+
+m5407
+UrlSuffix(gcc/M680x0-Options.html#index-m5407)
+
+m68000
+UrlSuffix(gcc/M680x0-Options.html#index-m68000)
+
+m68010
+UrlSuffix(gcc/M680x0-Options.html#index-m68010)
+
+m68020
+UrlSuffix(gcc/M680x0-Options.html#index-m68020)
+
+m68020-40
+UrlSuffix(gcc/M680x0-Options.html#index-m68020-40)
+
+m68020-60
+UrlSuffix(gcc/M680x0-Options.html#index-m68020-60)
+
+m68030
+UrlSuffix(gcc/M680x0-Options.html#index-m68030)
+
+m68040
+UrlSuffix(gcc/M680x0-Options.html#index-m68040)
+
+m68060
+UrlSuffix(gcc/M680x0-Options.html#index-m68060)
+
+m68881
+UrlSuffix(gcc/M680x0-Options.html#index-m68881)
+
+malign-int
+UrlSuffix(gcc/M680x0-Options.html#index-malign-int)
+
+march=
+UrlSuffix(gcc/M680x0-Options.html#index-march-8)
+
+mbitfield
+UrlSuffix(gcc/M680x0-Options.html#index-mbitfield)
+
+mc68000
+UrlSuffix(gcc/M680x0-Options.html#index-mc68000)
+
+mc68020
+UrlSuffix(gcc/M680x0-Options.html#index-mc68020)
+
+mcfv4e
+UrlSuffix(gcc/M680x0-Options.html#index-mcfv4e)
+
+mcpu=
+UrlSuffix(gcc/M680x0-Options.html#index-mcpu-7)
+
+mcpu32
+UrlSuffix(gcc/M680x0-Options.html#index-mcpu32)
+
+mdiv
+UrlSuffix(gcc/M680x0-Options.html#index-mdiv-1)
+
+mhard-float
+UrlSuffix(gcc/M680x0-Options.html#index-mhard-float-2)
+
+; skipping UrlSuffix for 'mid-shared-library' due to finding no URLs
+
+mlong-jump-table-offsets
+UrlSuffix(gcc/M680x0-Options.html#index-mlong-jump-table-offsets)
+
+mnobitfield
+UrlSuffix(gcc/M680x0-Options.html#index-mnobitfield)
+
+mpcrel
+UrlSuffix(gcc/M680x0-Options.html#index-mpcrel)
+
+mrtd
+UrlSuffix(gcc/M680x0-Options.html#index-mrtd)
+
+; skipping UrlSuffix for 'msep-data' due to finding no URLs
+
+; skipping UrlSuffix for 'mshared-library-id=' due to finding no URLs
+
+mshort
+UrlSuffix(gcc/M680x0-Options.html#index-mshort)
+
+msoft-float
+UrlSuffix(gcc/M680x0-Options.html#index-msoft-float-6)
+
+mstrict-align
+UrlSuffix(gcc/M680x0-Options.html#index-mstrict-align-2)
+
+mtune=
+UrlSuffix(gcc/M680x0-Options.html#index-mtune-9)
+
+mxgot
+UrlSuffix(gcc/M680x0-Options.html#index-mxgot)
+
diff --git a/gcc/config/m68k/uclinux.opt.urls b/gcc/config/m68k/uclinux.opt.urls
new file mode 100644
index 000000000000..3fd1392f88a6
--- /dev/null
+++ b/gcc/config/m68k/uclinux.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/uclinux.opt and generated HTML
+
diff --git a/gcc/config/mcore/mcore.opt.urls b/gcc/config/mcore/mcore.opt.urls
new file mode 100644
index 000000000000..a876c8c13eff
--- /dev/null
+++ b/gcc/config/mcore/mcore.opt.urls
@@ -0,0 +1,38 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mcore/mcore.opt and generated HTML
+
+m210
+UrlSuffix(gcc/MCore-Options.html#index-m210)
+
+m340
+UrlSuffix(gcc/MCore-Options.html#index-m340)
+
+m4byte-functions
+UrlSuffix(gcc/MCore-Options.html#index-m4byte-functions)
+
+mbig-endian
+UrlSuffix(gcc/MCore-Options.html#index-mbig-endian-7)
+
+mcallgraph-data
+UrlSuffix(gcc/MCore-Options.html#index-mcallgraph-data)
+
+mdiv
+UrlSuffix(gcc/MCore-Options.html#index-mdiv-2)
+
+mhardlit
+UrlSuffix(gcc/MCore-Options.html#index-mhardlit)
+
+mlittle-endian
+UrlSuffix(gcc/MCore-Options.html#index-mlittle-endian-7)
+
+mno-lsim
+UrlSuffix(gcc/MCore-Options.html#index-mno-lsim-1)
+
+mslow-bytes
+UrlSuffix(gcc/MCore-Options.html#index-mslow-bytes)
+
+mstack-increment=
+UrlSuffix(gcc/MCore-Options.html#index-mstack-increment)
+
+mwide-bitfields
+UrlSuffix(gcc/MCore-Options.html#index-mwide-bitfields)
+
diff --git a/gcc/config/microblaze/microblaze.opt.urls b/gcc/config/microblaze/microblaze.opt.urls
new file mode 100644
index 000000000000..33b13b84e2c2
--- /dev/null
+++ b/gcc/config/microblaze/microblaze.opt.urls
@@ -0,0 +1,59 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/microblaze/microblaze.opt and generated HTML
+
+msoft-float
+UrlSuffix(gcc/MicroBlaze-Options.html#index-msoft-float-7)
+
+mhard-float
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mhard-float-3)
+
+msmall-divides
+UrlSuffix(gcc/MicroBlaze-Options.html#index-msmall-divides)
+
+mcpu=
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mcpu_003d-3)
+
+mmemcpy
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mmemcpy-1)
+
+mbig-endian
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mbig-endian-8)
+
+mlittle-endian
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mlittle-endian-8)
+
+mxl-soft-mul
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-mul)
+
+mxl-reorder
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-reorder)
+
+mxl-soft-div
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-div)
+
+mxl-barrel-shift
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-barrel-shift)
+
+mxl-pattern-compare
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-pattern-compare)
+
+mxl-stack-check
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-stack-check)
+
+mxl-gp-opt
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-gp-opt)
+
+mno-clearbss
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mno-clearbss)
+
+mxl-multiply-high
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-multiply-high)
+
+mxl-float-convert
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-convert)
+
+mxl-float-sqrt
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-sqrt)
+
+mpic-data-is-text-relative
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mpic-data-is-text-relative-1)
+
diff --git a/gcc/config/mips/mips-tables.opt.urls b/gcc/config/mips/mips-tables.opt.urls
new file mode 100644
index 000000000000..3b2a77f2ea9c
--- /dev/null
+++ b/gcc/config/mips/mips-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips-tables.opt and generated HTML
+
diff --git a/gcc/config/mips/mips.opt.urls b/gcc/config/mips/mips.opt.urls
new file mode 100644
index 000000000000..ff2f0aee0e37
--- /dev/null
+++ b/gcc/config/mips/mips.opt.urls
@@ -0,0 +1,269 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips.opt and generated HTML
+
+EB
+UrlSuffix(gcc/MIPS-Options.html#index-EB-2)
+
+EL
+UrlSuffix(gcc/MIPS-Options.html#index-EL-2)
+
+; skipping UrlSuffix for 'mabi=' due to finding no URLs
+
+mabicalls
+UrlSuffix(gcc/MIPS-Options.html#index-mabicalls)
+
+mmad
+UrlSuffix(gcc/MIPS-Options.html#index-mmad)
+
+mimadd
+UrlSuffix(gcc/MIPS-Options.html#index-mimadd)
+
+march=
+UrlSuffix(gcc/MIPS-Options.html#index-march-9)
+
+mbranch-cost=
+UrlSuffix(gcc/MIPS-Options.html#index-mbranch-cost-3)
+
+mbranch-likely
+UrlSuffix(gcc/MIPS-Options.html#index-mbranch-likely)
+
+mflip-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mflip-mips16)
+
+mcheck-zero-division
+UrlSuffix(gcc/MIPS-Options.html#index-mcheck-zero-division-1)
+
+mcode-readable=
+UrlSuffix(gcc/MIPS-Options.html#index-mcode-readable)
+
+mdivide-breaks
+UrlSuffix(gcc/MIPS-Options.html#index-mdivide-breaks)
+
+mdivide-traps
+UrlSuffix(gcc/MIPS-Options.html#index-mdivide-traps)
+
+mdmx
+UrlSuffix(gcc/MIPS-Options.html#index-mdmx)
+
+mdouble-float
+UrlSuffix(gcc/MIPS-Options.html#index-mdouble-float-2)
+
+mdsp
+UrlSuffix(gcc/MIPS-Options.html#index-mdsp-1)
+
+mdspr2
+UrlSuffix(gcc/MIPS-Options.html#index-mdspr2)
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+; skipping UrlSuffix for 'meb' due to finding no URLs
+
+; skipping UrlSuffix for 'mel' due to finding no URLs
+
+membedded-data
+UrlSuffix(gcc/MIPS-Options.html#index-membedded-data)
+
+meva
+UrlSuffix(gcc/MIPS-Options.html#index-meva)
+
+mexplicit-relocs
+UrlSuffix(gcc/MIPS-Options.html#index-mexplicit-relocs-2)
+
+mextern-sdata
+UrlSuffix(gcc/MIPS-Options.html#index-mextern-sdata)
+
+mfix-24k
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-24k)
+
+mfix-r4000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4000)
+
+mfix-r4400
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4400)
+
+mfix-r5900
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r5900)
+
+mfix-rm7000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-rm7000)
+
+mfix-r10000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r10000)
+
+mfix-sb1
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-sb1)
+
+mfix-vr4120
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4120)
+
+mfix-vr4130
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4130)
+
+mfp-exceptions
+UrlSuffix(gcc/MIPS-Options.html#index-mfp-exceptions)
+
+mfp32
+UrlSuffix(gcc/MIPS-Options.html#index-mfp32)
+
+mfpxx
+UrlSuffix(gcc/MIPS-Options.html#index-mfpxx)
+
+mfp64
+UrlSuffix(gcc/MIPS-Options.html#index-mfp64)
+
+mflush-func=
+UrlSuffix(gcc/MIPS-Options.html#index-mflush-func)
+
+mgp32
+UrlSuffix(gcc/MIPS-Options.html#index-mgp32)
+
+mgp64
+UrlSuffix(gcc/MIPS-Options.html#index-mgp64)
+
+mgpopt
+UrlSuffix(gcc/MIPS-Options.html#index-mgpopt)
+
+mplt
+UrlSuffix(gcc/MIPS-Options.html#index-mplt)
+
+mhard-float
+UrlSuffix(gcc/MIPS-Options.html#index-mhard-float-4)
+
+minterlink-compressed
+UrlSuffix(gcc/MIPS-Options.html#index-minterlink-compressed)
+
+minterlink-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-minterlink-mips16)
+
+mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mips16)
+
+mips3d
+UrlSuffix(gcc/MIPS-Options.html#index-mips3d)
+
+mllsc
+UrlSuffix(gcc/MIPS-Options.html#index-mllsc)
+
+mlocal-sdata
+UrlSuffix(gcc/MIPS-Options.html#index-mlocal-sdata)
+
+mlong-calls
+UrlSuffix(gcc/MIPS-Options.html#index-mlong-calls-6)
+
+mlong32
+UrlSuffix(gcc/MIPS-Options.html#index-mlong32)
+
+mlong64
+UrlSuffix(gcc/MIPS-Options.html#index-mlong64)
+
+mmcount-ra-address
+UrlSuffix(gcc/MIPS-Options.html#index-mmcount-ra-address)
+
+mmemcpy
+UrlSuffix(gcc/MIPS-Options.html#index-mmemcpy-2)
+
+mmicromips
+UrlSuffix(gcc/MIPS-Options.html#index-mmicromips)
+
+mmt
+UrlSuffix(gcc/MIPS-Options.html#index-mmt)
+
+mno-float
+UrlSuffix(gcc/MIPS-Options.html#index-mno-float)
+
+mmcu
+UrlSuffix(gcc/MIPS-Options.html#index-mmcu-1)
+
+; skipping UrlSuffix for 'mno-flush-func' due to finding no URLs
+
+mno-mdmx
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mdmx)
+
+mno-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mips16)
+
+mno-mips3d
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mips3d)
+
+mpaired-single
+UrlSuffix(gcc/MIPS-Options.html#index-mpaired-single)
+
+mr10k-cache-barrier=
+UrlSuffix(gcc/MIPS-Options.html#index-mr10k-cache-barrier)
+
+mrelax-pic-calls
+UrlSuffix(gcc/MIPS-Options.html#index-mrelax-pic-calls)
+
+msingle-float
+UrlSuffix(gcc/MIPS-Options.html#index-msingle-float-1)
+
+msmartmips
+UrlSuffix(gcc/MIPS-Options.html#index-msmartmips)
+
+msoft-float
+UrlSuffix(gcc/MIPS-Options.html#index-msoft-float-8)
+
+msplit-addresses
+UrlSuffix(gcc/MIPS-Options.html#index-msplit-addresses)
+
+mmips16e2
+UrlSuffix(gcc/MIPS-Options.html#index-mmips16e2)
+
+msym32
+UrlSuffix(gcc/MIPS-Options.html#index-msym32)
+
+msynci
+UrlSuffix(gcc/MIPS-Options.html#index-msynci)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mlxc1-sxc1
+UrlSuffix(gcc/MIPS-Options.html#index-mlxc1-sxc1)
+
+mmadd4
+UrlSuffix(gcc/MIPS-Options.html#index-mmadd4)
+
+mtune=
+UrlSuffix(gcc/MIPS-Options.html#index-mtune-10)
+
+munaligned-access
+UrlSuffix(gcc/MIPS-Options.html#index-munaligned-access-1)
+
+muninit-const-in-rodata
+UrlSuffix(gcc/MIPS-Options.html#index-muninit-const-in-rodata)
+
+mvirt
+UrlSuffix(gcc/MIPS-Options.html#index-mvirt)
+
+mxpa
+UrlSuffix(gcc/MIPS-Options.html#index-mxpa)
+
+mcrc
+UrlSuffix(gcc/MIPS-Options.html#index-mcrc)
+
+mginv
+UrlSuffix(gcc/MIPS-Options.html#index-mginv)
+
+mvr4130-align
+UrlSuffix(gcc/MIPS-Options.html#index-mvr4130-align)
+
+mxgot
+UrlSuffix(gcc/MIPS-Options.html#index-mxgot-1)
+
+modd-spreg
+UrlSuffix(gcc/MIPS-Options.html#index-modd-spreg)
+
+mframe-header-opt
+UrlSuffix(gcc/MIPS-Options.html#index-mframe-header-opt)
+
+mload-store-pairs
+UrlSuffix(gcc/MIPS-Options.html#index-mload-store-pairs)
+
+mloongson-mmi
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-mmi)
+
+mloongson-ext
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext)
+
+mloongson-ext2
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext2)
+
diff --git a/gcc/config/mips/sde.opt.urls b/gcc/config/mips/sde.opt.urls
new file mode 100644
index 000000000000..2a3d290545f0
--- /dev/null
+++ b/gcc/config/mips/sde.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/sde.opt and generated HTML
+
diff --git a/gcc/config/mmix/mmix.opt.urls b/gcc/config/mmix/mmix.opt.urls
new file mode 100644
index 000000000000..6722f9e4e01d
--- /dev/null
+++ b/gcc/config/mmix/mmix.opt.urls
@@ -0,0 +1,44 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mmix/mmix.opt and generated HTML
+
+mlibfuncs
+UrlSuffix(gcc/MMIX-Options.html#index-mlibfuncs)
+
+mabi=mmixware
+UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dmmixware)
+
+mabi=gnu
+UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dgnu)
+
+mepsilon
+UrlSuffix(gcc/MMIX-Options.html#index-mepsilon)
+
+mzero-extend
+UrlSuffix(gcc/MMIX-Options.html#index-mzero-extend)
+
+mknuthdiv
+UrlSuffix(gcc/MMIX-Options.html#index-mknuthdiv)
+
+mtoplevel-symbols
+UrlSuffix(gcc/MMIX-Options.html#index-mtoplevel-symbols)
+
+melf
+UrlSuffix(gcc/MMIX-Options.html#index-melf-1)
+
+mbranch-predict
+UrlSuffix(gcc/MMIX-Options.html#index-mbranch-predict)
+
+mno-branch-predict
+UrlSuffix(gcc/MMIX-Options.html#index-mno-branch-predict)
+
+mbase-addresses
+UrlSuffix(gcc/MMIX-Options.html#index-mbase-addresses)
+
+mno-base-addresses
+UrlSuffix(gcc/MMIX-Options.html#index-mno-base-addresses)
+
+msingle-exit
+UrlSuffix(gcc/MMIX-Options.html#index-msingle-exit)
+
+mno-single-exit
+UrlSuffix(gcc/MMIX-Options.html#index-mno-single-exit)
+
diff --git a/gcc/config/mn10300/mn10300.opt.urls b/gcc/config/mn10300/mn10300.opt.urls
new file mode 100644
index 000000000000..396ca4aa2e60
--- /dev/null
+++ b/gcc/config/mn10300/mn10300.opt.urls
@@ -0,0 +1,32 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mn10300/mn10300.opt and generated HTML
+
+mam33
+UrlSuffix(gcc/MN10300-Options.html#index-mam33)
+
+mam33-2
+UrlSuffix(gcc/MN10300-Options.html#index-mam33-2)
+
+mam34
+UrlSuffix(gcc/MN10300-Options.html#index-mam34)
+
+mtune=
+UrlSuffix(gcc/MN10300-Options.html#index-mtune-11)
+
+mmult-bug
+UrlSuffix(gcc/MN10300-Options.html#index-mmult-bug)
+
+mno-crt0
+UrlSuffix(gcc/MN10300-Options.html#index-mno-crt0)
+
+mrelax
+UrlSuffix(gcc/MN10300-Options.html#index-mrelax-2)
+
+mreturn-pointer-on-d0
+UrlSuffix(gcc/MN10300-Options.html#index-mreturn-pointer-on-d0)
+
+mliw
+UrlSuffix(gcc/MN10300-Options.html#index-mliw)
+
+msetlb
+UrlSuffix(gcc/MN10300-Options.html#index-msetlb)
+
diff --git a/gcc/config/moxie/moxie.opt.urls b/gcc/config/moxie/moxie.opt.urls
new file mode 100644
index 000000000000..a1b8b8a7a767
--- /dev/null
+++ b/gcc/config/moxie/moxie.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/moxie/moxie.opt and generated HTML
+
+meb
+UrlSuffix(gcc/Moxie-Options.html#index-meb)
+
+mel
+UrlSuffix(gcc/Moxie-Options.html#index-mel)
+
+mmul.x
+UrlSuffix(gcc/Moxie-Options.html#index-mmul_002ex)
+
+mno-crt0
+UrlSuffix(gcc/Moxie-Options.html#index-mno-crt0-1)
+
diff --git a/gcc/config/msp430/msp430.opt.urls b/gcc/config/msp430/msp430.opt.urls
new file mode 100644
index 000000000000..420c1c50f13e
--- /dev/null
+++ b/gcc/config/msp430/msp430.opt.urls
@@ -0,0 +1,53 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/msp430/msp430.opt and generated HTML
+
+msim
+UrlSuffix(gcc/MSP430-Options.html#index-msim-5)
+
+mtiny-printf
+UrlSuffix(gcc/MSP430-Options.html#index-mtiny-printf)
+
+masm-hex
+UrlSuffix(gcc/MSP430-Options.html#index-masm-hex)
+
+mmcu=
+UrlSuffix(gcc/MSP430-Options.html#index-mmcu_003d)
+
+mwarn-mcu
+UrlSuffix(gcc/MSP430-Options.html#index-mwarn-mcu)
+
+mwarn-devices-csv
+UrlSuffix(gcc/MSP430-Options.html#index-mwarn-devices-csv)
+
+mcpu=
+UrlSuffix(gcc/MSP430-Options.html#index-mcpu_003d-4)
+
+mlarge
+UrlSuffix(gcc/MSP430-Options.html#index-mlarge)
+
+msmall
+UrlSuffix(gcc/MSP430-Options.html#index-msmall)
+
+mrelax
+UrlSuffix(gcc/MSP430-Options.html#index-mrelax-3)
+
+minrt
+UrlSuffix(gcc/MSP430-Options.html#index-minrt)
+
+mhwmult=
+UrlSuffix(gcc/MSP430-Options.html#index-mhwmult_003d)
+
+mcode-region=
+UrlSuffix(gcc/MSP430-Options.html#index-mcode-region)
+
+mdata-region=
+UrlSuffix(gcc/MSP430-Options.html#index-mdata-region)
+
+msilicon-errata=
+UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata)
+
+msilicon-errata-warn=
+UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata-warn)
+
+mmax-inline-shift=
+UrlSuffix(gcc/MSP430-Options.html#index-mmax-inline-shift_003d)
+
diff --git a/gcc/config/nds32/nds32-elf.opt.urls b/gcc/config/nds32/nds32-elf.opt.urls
new file mode 100644
index 000000000000..5399afba7d3d
--- /dev/null
+++ b/gcc/config/nds32/nds32-elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-elf.opt and generated HTML
+
+mcmodel=
+UrlSuffix(gcc/NDS32-Options.html#index-mcmodel)
+
diff --git a/gcc/config/nds32/nds32-linux.opt.urls b/gcc/config/nds32/nds32-linux.opt.urls
new file mode 100644
index 000000000000..27d39f04ad95
--- /dev/null
+++ b/gcc/config/nds32/nds32-linux.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-linux.opt and generated HTML
+
+mcmodel=
+UrlSuffix(gcc/NDS32-Options.html#index-mcmodel)
+
diff --git a/gcc/config/nds32/nds32.opt.urls b/gcc/config/nds32/nds32.opt.urls
new file mode 100644
index 000000000000..e34512d69ba9
--- /dev/null
+++ b/gcc/config/nds32/nds32.opt.urls
@@ -0,0 +1,57 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32.opt and generated HTML
+
+; skipping UrlSuffix for 'EB' due to finding no URLs
+
+; skipping UrlSuffix for 'EL' due to finding no URLs
+
+; skipping UrlSuffix for 'mabi=' due to finding no URLs
+
+mreduced-regs
+UrlSuffix(gcc/NDS32-Options.html#index-mreduced-regs)
+
+mfull-regs
+UrlSuffix(gcc/NDS32-Options.html#index-mfull-regs)
+
+mbig-endian
+UrlSuffix(gcc/NDS32-Options.html#index-mbig-endian-9)
+
+mlittle-endian
+UrlSuffix(gcc/NDS32-Options.html#index-mlittle-endian-9)
+
+mcmov
+UrlSuffix(gcc/NDS32-Options.html#index-mcmov)
+
+mext-perf
+UrlSuffix(gcc/NDS32-Options.html#index-mext-perf)
+
+mext-perf2
+UrlSuffix(gcc/NDS32-Options.html#index-mext-perf2)
+
+mext-string
+UrlSuffix(gcc/NDS32-Options.html#index-mext-string)
+
+mv3push
+UrlSuffix(gcc/NDS32-Options.html#index-mv3push)
+
+m16-bit
+UrlSuffix(gcc/NDS32-Options.html#index-m16-bit-1)
+
+misr-vector-size=
+UrlSuffix(gcc/NDS32-Options.html#index-misr-vector-size)
+
+mcache-block-size=
+UrlSuffix(gcc/NDS32-Options.html#index-mcache-block-size)
+
+march=
+UrlSuffix(gcc/NDS32-Options.html#index-march-10)
+
+; skipping UrlSuffix for 'mcpu=' due to finding no URLs
+
+mctor-dtor
+UrlSuffix(gcc/NDS32-Options.html#index-mctor-dtor)
+
+mrelax
+UrlSuffix(gcc/NDS32-Options.html#index-mrelax-4)
+
+; skipping UrlSuffix for 'munaligned-access' due to finding no URLs
+
diff --git a/gcc/config/netbsd-elf.opt.urls b/gcc/config/netbsd-elf.opt.urls
new file mode 100644
index 000000000000..c0e791c3a35f
--- /dev/null
+++ b/gcc/config/netbsd-elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd-elf.opt and generated HTML
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/netbsd.opt.urls b/gcc/config/netbsd.opt.urls
new file mode 100644
index 000000000000..513bf9b7cba6
--- /dev/null
+++ b/gcc/config/netbsd.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/nios2/elf.opt.urls b/gcc/config/nios2/elf.opt.urls
new file mode 100644
index 000000000000..1367c6ba50cf
--- /dev/null
+++ b/gcc/config/nios2/elf.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/elf.opt and generated HTML
+
+msmallc
+UrlSuffix(gcc/Nios-II-Options.html#index-msmallc)
+
+msys-lib=
+UrlSuffix(gcc/Nios-II-Options.html#index-msys-lib)
+
+msys-crt0=
+UrlSuffix(gcc/Nios-II-Options.html#index-msys-crt0)
+
+mhal
+UrlSuffix(gcc/Nios-II-Options.html#index-mhal)
+
diff --git a/gcc/config/nios2/nios2.opt.urls b/gcc/config/nios2/nios2.opt.urls
new file mode 100644
index 000000000000..a38ea285a6e2
--- /dev/null
+++ b/gcc/config/nios2/nios2.opt.urls
@@ -0,0 +1,50 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/nios2.opt and generated HTML
+
+mhw-div
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-div)
+
+mhw-mul
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mul)
+
+mhw-mulx
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mulx)
+
+mfast-sw-div
+UrlSuffix(gcc/Nios-II-Options.html#index-mfast-sw-div)
+
+mbypass-cache
+UrlSuffix(gcc/Nios-II-Options.html#index-mbypass-cache)
+
+mno-cache-volatile
+UrlSuffix(gcc/Nios-II-Options.html#index-mno-cache-volatile)
+
+mcache-volatile
+UrlSuffix(gcc/Nios-II-Options.html#index-mcache-volatile)
+
+mgpopt=
+UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1)
+
+mgpopt
+UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1)
+
+mno-gpopt
+UrlSuffix(gcc/Nios-II-Options.html#index-mno-gpopt-1)
+
+meb
+UrlSuffix(gcc/Nios-II-Options.html#index-meb-1)
+
+mel
+UrlSuffix(gcc/Nios-II-Options.html#index-mel-1)
+
+mcustom-fpu-cfg=
+UrlSuffix(gcc/Nios-II-Options.html#index-mcustom-fpu-cfg)
+
+march=
+UrlSuffix(gcc/Nios-II-Options.html#index-march-11)
+
+mgprel-sec=
+UrlSuffix(gcc/Nios-II-Options.html#index-mgprel-sec)
+
+mr0rel-sec=
+UrlSuffix(gcc/Nios-II-Options.html#index-mr0rel-sec)
+
diff --git a/gcc/config/nvptx/nvptx-gen.opt.urls b/gcc/config/nvptx/nvptx-gen.opt.urls
new file mode 100644
index 000000000000..7ea132489aad
--- /dev/null
+++ b/gcc/config/nvptx/nvptx-gen.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx-gen.opt and generated HTML
+
diff --git a/gcc/config/nvptx/nvptx.opt.urls b/gcc/config/nvptx/nvptx.opt.urls
new file mode 100644
index 000000000000..5c8942ca7522
--- /dev/null
+++ b/gcc/config/nvptx/nvptx.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx.opt and generated HTML
+
+m64
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-m64)
+
+mmainkernel
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mmainkernel)
+
+moptimize
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-moptimize)
+
+msoft-stack
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-msoft-stack)
+
+muniform-simt
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-muniform-simt)
+
+mgomp
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mgomp)
+
+misa=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-misa)
+
+march=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-march-12)
+
+mptx=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mptx)
+
diff --git a/gcc/config/openbsd.opt.urls b/gcc/config/openbsd.opt.urls
new file mode 100644
index 000000000000..d7ea1ae26e43
--- /dev/null
+++ b/gcc/config/openbsd.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/openbsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/or1k/elf.opt.urls b/gcc/config/or1k/elf.opt.urls
new file mode 100644
index 000000000000..ea3d5d76ac7d
--- /dev/null
+++ b/gcc/config/or1k/elf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/elf.opt and generated HTML
+
+mboard=
+UrlSuffix(gcc/OpenRISC-Options.html#index-mboard)
+
+mnewlib
+UrlSuffix(gcc/OpenRISC-Options.html#index-mnewlib)
+
diff --git a/gcc/config/or1k/or1k.opt.urls b/gcc/config/or1k/or1k.opt.urls
new file mode 100644
index 000000000000..2016ea622cfc
--- /dev/null
+++ b/gcc/config/or1k/or1k.opt.urls
@@ -0,0 +1,46 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/or1k.opt and generated HTML
+
+mhard-div
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-div)
+
+msoft-div
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-div)
+
+mhard-mul
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-mul)
+
+msoft-mul
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-mul)
+
+msoft-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-float-9)
+
+mhard-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-float-5)
+
+mdouble-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-mdouble-float-3)
+
+munordered-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-munordered-float)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mcmov
+UrlSuffix(gcc/OpenRISC-Options.html#index-mcmov-1)
+
+mror
+UrlSuffix(gcc/OpenRISC-Options.html#index-mror)
+
+mrori
+UrlSuffix(gcc/OpenRISC-Options.html#index-mrori)
+
+msext
+UrlSuffix(gcc/OpenRISC-Options.html#index-msext)
+
+msfimm
+UrlSuffix(gcc/OpenRISC-Options.html#index-msfimm)
+
+mshftimm
+UrlSuffix(gcc/OpenRISC-Options.html#index-mshftimm)
+
diff --git a/gcc/config/pa/pa-hpux.opt.urls b/gcc/config/pa/pa-hpux.opt.urls
new file mode 100644
index 000000000000..6a52dd08e482
--- /dev/null
+++ b/gcc/config/pa/pa-hpux.opt.urls
@@ -0,0 +1,11 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux.opt and generated HTML
+
+msio
+UrlSuffix(gcc/HPPA-Options.html#index-msio)
+
+nolibdld
+UrlSuffix(gcc/HPPA-Options.html#index-nolibdld)
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/pa/pa-hpux1010.opt.urls b/gcc/config/pa/pa-hpux1010.opt.urls
new file mode 100644
index 000000000000..9b96cafbf065
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1010.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1010.opt and generated HTML
+
diff --git a/gcc/config/pa/pa-hpux1111.opt.urls b/gcc/config/pa/pa-hpux1111.opt.urls
new file mode 100644
index 000000000000..706e63c534bd
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1111.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1111.opt and generated HTML
+
diff --git a/gcc/config/pa/pa-hpux1131.opt.urls b/gcc/config/pa/pa-hpux1131.opt.urls
new file mode 100644
index 000000000000..497c49d186f3
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1131.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1131.opt and generated HTML
+
diff --git a/gcc/config/pa/pa.opt.urls b/gcc/config/pa/pa.opt.urls
new file mode 100644
index 000000000000..5b8bcebdd0da
--- /dev/null
+++ b/gcc/config/pa/pa.opt.urls
@@ -0,0 +1,71 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa.opt and generated HTML
+
+matomic-libcalls
+UrlSuffix(gcc/HPPA-Options.html#index-matomic-libcalls)
+
+mbig-switch
+UrlSuffix(gcc/HPPA-Options.html#index-mbig-switch)
+
+mcaller-copies
+UrlSuffix(gcc/HPPA-Options.html#index-mcaller-copies)
+
+mcoherent-ldcw
+UrlSuffix(gcc/HPPA-Options.html#index-mcoherent-ldcw)
+
+mdisable-fpregs
+UrlSuffix(gcc/HPPA-Options.html#index-mdisable-fpregs)
+
+mdisable-indexing
+UrlSuffix(gcc/HPPA-Options.html#index-mdisable-indexing)
+
+mfast-indirect-calls
+UrlSuffix(gcc/HPPA-Options.html#index-mfast-indirect-calls)
+
+mfixed-range=
+UrlSuffix(gcc/HPPA-Options.html#index-mfixed-range)
+
+mgas
+UrlSuffix(gcc/HPPA-Options.html#index-mgas)
+
+mjump-in-delay
+UrlSuffix(gcc/HPPA-Options.html#index-mjump-in-delay)
+
+mlinker-opt
+UrlSuffix(gcc/HPPA-Options.html#index-mlinker-opt)
+
+mlong-calls
+UrlSuffix(gcc/HPPA-Options.html#index-mlong-calls-5)
+
+mlong-load-store
+UrlSuffix(gcc/HPPA-Options.html#index-mlong-load-store)
+
+mno-space-regs
+UrlSuffix(gcc/HPPA-Options.html#index-mno-space-regs)
+
+mordered
+UrlSuffix(gcc/HPPA-Options.html#index-mordered)
+
+mpa-risc-1-0
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-0)
+
+mpa-risc-1-1
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-1)
+
+mpa-risc-2-0
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-2-0)
+
+mportable-runtime
+UrlSuffix(gcc/HPPA-Options.html#index-mportable-runtime)
+
+mschedule=
+UrlSuffix(gcc/HPPA-Options.html#index-mschedule)
+
+msoft-float
+UrlSuffix(gcc/HPPA-Options.html#index-msoft-float-4)
+
+msoft-mult
+UrlSuffix(gcc/HPPA-Options.html#index-msoft-mult)
+
+mspace-regs
+UrlSuffix(gcc/HPPA-Options.html#index-mspace-regs)
+
diff --git a/gcc/config/pa/pa64-hpux.opt.urls b/gcc/config/pa/pa64-hpux.opt.urls
new file mode 100644
index 000000000000..9ebf02759520
--- /dev/null
+++ b/gcc/config/pa/pa64-hpux.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa64-hpux.opt and generated HTML
+
+mgnu-ld
+UrlSuffix(gcc/HPPA-Options.html#index-mgnu-ld)
+
+mhp-ld
+UrlSuffix(gcc/HPPA-Options.html#index-mhp-ld)
+
diff --git a/gcc/config/pdp11/pdp11.opt.urls b/gcc/config/pdp11/pdp11.opt.urls
new file mode 100644
index 000000000000..f0544ca84f69
--- /dev/null
+++ b/gcc/config/pdp11/pdp11.opt.urls
@@ -0,0 +1,41 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pdp11/pdp11.opt and generated HTML
+
+m10
+UrlSuffix(gcc/PDP-11-Options.html#index-m10)
+
+m40
+UrlSuffix(gcc/PDP-11-Options.html#index-m40)
+
+m45
+UrlSuffix(gcc/PDP-11-Options.html#index-m45)
+
+mac0
+UrlSuffix(gcc/PDP-11-Options.html#index-mac0)
+
+mdec-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-mdec-asm)
+
+mgnu-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-mgnu-asm)
+
+mfpu
+UrlSuffix(gcc/PDP-11-Options.html#index-mfpu-3)
+
+mint16
+UrlSuffix(gcc/PDP-11-Options.html#index-mint16)
+
+mint32
+UrlSuffix(gcc/PDP-11-Options.html#index-mint32-1)
+
+msoft-float
+UrlSuffix(gcc/PDP-11-Options.html#index-msoft-float-10)
+
+msplit
+UrlSuffix(gcc/PDP-11-Options.html#index-msplit)
+
+munix-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-munix-asm)
+
+mlra
+UrlSuffix(gcc/PDP-11-Options.html#index-mlra-2)
+
diff --git a/gcc/config/pru/pru.opt.urls b/gcc/config/pru/pru.opt.urls
new file mode 100644
index 000000000000..373b02d5aedc
--- /dev/null
+++ b/gcc/config/pru/pru.opt.urls
@@ -0,0 +1,17 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pru/pru.opt and generated HTML
+
+minrt
+UrlSuffix(gcc/PRU-Options.html#index-minrt-1)
+
+mmcu=
+UrlSuffix(gcc/PRU-Options.html#index-mmcu-2)
+
+mno-relax
+UrlSuffix(gcc/PRU-Options.html#index-mno-relax)
+
+mloop
+UrlSuffix(gcc/PRU-Options.html#index-mloop)
+
+mabi=
+UrlSuffix(gcc/PRU-Options.html#index-mabi-3)
+
diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls
new file mode 100644
index 000000000000..668384910109
--- /dev/null
+++ b/gcc/config/riscv/riscv.opt.urls
@@ -0,0 +1,88 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/riscv/riscv.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/RISC-V-Options.html#index-mbig-endian-10)
+
+mlittle-endian
+UrlSuffix(gcc/RISC-V-Options.html#index-mlittle-endian-10)
+
+mbranch-cost=
+UrlSuffix(gcc/RISC-V-Options.html#index-mbranch-cost-4)
+
+; skipping UrlSuffix for 'mplt' due to finding no URLs
+
+mabi=
+UrlSuffix(gcc/RISC-V-Options.html#index-mabi-4)
+
+mpreferred-stack-boundary=
+UrlSuffix(gcc/RISC-V-Options.html#index-mpreferred-stack-boundary)
+
+mfdiv
+UrlSuffix(gcc/RISC-V-Options.html#index-mfdiv)
+
+mdiv
+UrlSuffix(gcc/RISC-V-Options.html#index-mdiv-3)
+
+march=
+UrlSuffix(gcc/RISC-V-Options.html#index-march-14)
+
+mtune=
+UrlSuffix(gcc/RISC-V-Options.html#index-mtune-12)
+
+mcpu=
+UrlSuffix(gcc/RISC-V-Options.html#index-mcpu-8)
+
+msmall-data-limit=
+UrlSuffix(gcc/RISC-V-Options.html#index-msmall-data-limit-1)
+
+msave-restore
+UrlSuffix(gcc/RISC-V-Options.html#index-msave-restore)
+
+mshorten-memrefs
+UrlSuffix(gcc/RISC-V-Options.html#index-mshorten-memrefs)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mstrict-align
+UrlSuffix(gcc/RISC-V-Options.html#index-mstrict-align-3)
+
+; skipping UrlSuffix for 'mexplicit-relocs' due to finding no URLs
+
+mrelax
+UrlSuffix(gcc/RISC-V-Options.html#index-mrelax-5)
+
+mcsr-check
+UrlSuffix(gcc/RISC-V-Options.html#index-mcsr-check)
+
+; skipping UrlSuffix for 'momit-leaf-frame-pointer' due to finding no URLs
+
+mriscv-attribute
+UrlSuffix(gcc/RISC-V-Options.html#index-mriscv-attribute)
+
+malign-data=
+UrlSuffix(gcc/RISC-V-Options.html#index-malign-data)
+
+mstack-protector-guard=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-2)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-reg-1)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-offset-2)
+
+misa-spec=
+UrlSuffix(gcc/RISC-V-Options.html#index-misa-spec)
+
+minline-atomics
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-atomics)
+
+minline-strcmp
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strcmp)
+
+minline-strncmp
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strncmp)
+
+minline-strlen
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strlen)
+
diff --git a/gcc/config/rl78/rl78.opt.urls b/gcc/config/rl78/rl78.opt.urls
new file mode 100644
index 000000000000..96eff5f72041
--- /dev/null
+++ b/gcc/config/rl78/rl78.opt.urls
@@ -0,0 +1,31 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rl78/rl78.opt and generated HTML
+
+msim
+UrlSuffix(gcc/RL78-Options.html#index-msim-6)
+
+mmul=
+UrlSuffix(gcc/RL78-Options.html#index-mmul)
+
+mallregs
+UrlSuffix(gcc/RL78-Options.html#index-mallregs)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/RL78-Options.html#index-mcpu-9)
+
+mg10
+UrlSuffix(gcc/RL78-Options.html#index-mg10)
+
+mg13
+UrlSuffix(gcc/RL78-Options.html#index-mg13)
+
+mg14
+UrlSuffix(gcc/RL78-Options.html#index-mg14)
+
+mrl78
+UrlSuffix(gcc/RL78-Options.html#index-mrl78)
+
+msave-mduc-in-interrupts
+UrlSuffix(gcc/RL78-Options.html#index-msave-mduc-in-interrupts)
+
diff --git a/gcc/config/rpath.opt.urls b/gcc/config/rpath.opt.urls
new file mode 100644
index 000000000000..249dfdfb762d
--- /dev/null
+++ b/gcc/config/rpath.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rpath.opt and generated HTML
+
diff --git a/gcc/config/rs6000/476.opt.urls b/gcc/config/rs6000/476.opt.urls
new file mode 100644
index 000000000000..cecf72200a51
--- /dev/null
+++ b/gcc/config/rs6000/476.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/476.opt and generated HTML
+
diff --git a/gcc/config/rs6000/aix64.opt.urls b/gcc/config/rs6000/aix64.opt.urls
new file mode 100644
index 000000000000..89600bb27956
--- /dev/null
+++ b/gcc/config/rs6000/aix64.opt.urls
@@ -0,0 +1,23 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/aix64.opt and generated HTML
+
+maix64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix64)
+
+maix32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix32)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mpe
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpe)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
diff --git a/gcc/config/rs6000/darwin.opt.urls b/gcc/config/rs6000/darwin.opt.urls
new file mode 100644
index 000000000000..3b7fa1a80f80
--- /dev/null
+++ b/gcc/config/rs6000/darwin.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/darwin.opt and generated HTML
+
+ffix-and-continue
+UrlSuffix(gcc/Darwin-Options.html#index-ffix-and-continue)
+
+findirect-data
+UrlSuffix(gcc/Darwin-Options.html#index-findirect-data)
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
diff --git a/gcc/config/rs6000/linux64.opt.urls b/gcc/config/rs6000/linux64.opt.urls
new file mode 100644
index 000000000000..eb81aa17fd2b
--- /dev/null
+++ b/gcc/config/rs6000/linux64.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/linux64.opt and generated HTML
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
diff --git a/gcc/config/rs6000/rs6000-tables.opt.urls b/gcc/config/rs6000/rs6000-tables.opt.urls
new file mode 100644
index 000000000000..a44ce0d7aaa3
--- /dev/null
+++ b/gcc/config/rs6000/rs6000-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000-tables.opt and generated HTML
+
diff --git a/gcc/config/rs6000/rs6000.opt.urls b/gcc/config/rs6000/rs6000.opt.urls
new file mode 100644
index 000000000000..fdc33fc759bb
--- /dev/null
+++ b/gcc/config/rs6000/rs6000.opt.urls
@@ -0,0 +1,214 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000.opt and generated HTML
+
+mpowerpc64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc64)
+
+mpowerpc-gpopt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gpopt)
+
+mpowerpc-gfxopt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gfxopt)
+
+mmfcrf
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmfcrf)
+
+mpopcntb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntb)
+
+mfprnd
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfprnd)
+
+mcmpb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcmpb)
+
+maltivec
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maltivec)
+
+mhard-dfp
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-dfp)
+
+mmulhw
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmulhw)
+
+mdlmzb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mdlmzb)
+
+mmultiple
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmultiple)
+
+msoft-float
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msoft-float-11)
+
+mhard-float
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-float-6)
+
+mpopcntd
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntd)
+
+mfriz
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfriz)
+
+mveclibabi=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mveclibabi)
+
+mvsx
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvsx)
+
+mno-update
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-update)
+
+mupdate
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mupdate)
+
+msingle-pic-base
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msingle-pic-base-1)
+
+mavoid-indexed-addresses
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mavoid-indexed-addresses)
+
+; skipping UrlSuffix for 'msched-prolog' due to finding no URLs
+
+maix-struct-return
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix-struct-return)
+
+msvr4-struct-return
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msvr4-struct-return)
+
+mxl-compat
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mxl-compat)
+
+mrecip
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip)
+
+mrecip=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip)
+
+mrecip-precision
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-precision)
+
+mno-fp-in-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-fp-in-toc)
+
+mno-sum-in-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-sum-in-toc)
+
+mminimal-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mminimal-toc)
+
+mfull-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfull-toc)
+
+mvrsave
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvrsave)
+
+mblock-move-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-move-inline-limit)
+
+mblock-compare-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-limit)
+
+mblock-compare-inline-loop-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-loop-limit)
+
+mstring-compare-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstring-compare-inline-limit)
+
+misel
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-misel)
+
+; skipping UrlSuffix for 'mdebug=' due to finding no URLs
+
+mabi=elfv1
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv1)
+
+mabi=elfv2
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv2)
+
+mabi=ieeelongdouble
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dieeelongdouble)
+
+mabi=ibmlongdouble
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dibmlongdouble)
+
+mcpu=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcpu-10)
+
+mtune=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtune-13)
+
+mtraceback=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtraceback)
+
+mlongcall
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlongcall)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+msched-costly-dep=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msched-costly-dep)
+
+minsert-sched-nops=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-minsert-sched-nops)
+
+mprioritize-restricted-insns=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprioritize-restricted-insns)
+
+mpointers-to-nested-functions
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpointers-to-nested-functions)
+
+msave-toc-indirect
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msave-toc-indirect)
+
+mpower8-fusion
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-fusion)
+
+mpower8-vector
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-vector)
+
+mcrypto
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcrypto)
+
+mhtm
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhtm)
+
+mquad-memory
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory)
+
+mquad-memory-atomic
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory-atomic)
+
+mcompat-align-parm
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcompat-align-parm)
+
+; skipping UrlSuffix for 'munroll-only-small-loops' due to finding no URLs
+
+mfloat128
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128)
+
+mfloat128-hardware
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128-hardware)
+
+mstack-protector-guard=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-3)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-reg-2)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-offset-3)
+
+mprefixed
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprefixed)
+
+mpcrel
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpcrel-1)
+
+mmma
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmma)
+
+mrop-protect
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrop-protect)
+
+mprivileged
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprivileged)
+
diff --git a/gcc/config/rs6000/sysv4.opt.urls b/gcc/config/rs6000/sysv4.opt.urls
new file mode 100644
index 000000000000..f8d58d6602cd
--- /dev/null
+++ b/gcc/config/rs6000/sysv4.opt.urls
@@ -0,0 +1,87 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/sysv4.opt and generated HTML
+
+msdata=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2)
+
+mreadonly-in-sdata
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mreadonly-in-sdata)
+
+; skipping UrlSuffix for 'mtls-size=' due to finding no URLs
+
+mbit-align
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbit-align)
+
+mstrict-align
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstrict-align-4)
+
+mrelocatable
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable)
+
+mrelocatable-lib
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable-lib)
+
+mlittle-endian
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle-endian-11)
+
+mlittle
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle)
+
+mbig-endian
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig-endian-11)
+
+mbig
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig)
+
+mno-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-toc)
+
+mtoc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtoc)
+
+mprototype
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprototype)
+
+meabi
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-meabi)
+
+mregnames
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mregnames)
+
+msdata
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2)
+
+msim
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msim-7)
+
+mads
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mads)
+
+myellowknife
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-myellowknife)
+
+mmvme
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmvme)
+
+memb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-memb)
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
+; skipping UrlSuffix for 'mnewlib' due to finding no URLs
+
+msecure-plt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msecure-plt)
+
+mbss-plt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbss-plt)
+
+mpltseq
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpltseq)
+
+mgnu-attribute
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mgnu-attribute)
+
diff --git a/gcc/config/rtems.opt.urls b/gcc/config/rtems.opt.urls
new file mode 100644
index 000000000000..211a70d46ef3
--- /dev/null
+++ b/gcc/config/rtems.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rtems.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/rx/elf.opt.urls b/gcc/config/rx/elf.opt.urls
new file mode 100644
index 000000000000..c43973a9d490
--- /dev/null
+++ b/gcc/config/rx/elf.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/elf.opt and generated HTML
+
+msim
+UrlSuffix(gcc/RX-Options.html#index-msim-8)
+
+mas100-syntax
+UrlSuffix(gcc/RX-Options.html#index-mas100-syntax)
+
+mint-register=
+UrlSuffix(gcc/RX-Options.html#index-mint-register)
+
+msave-acc-in-interrupts
+UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts)
+
diff --git a/gcc/config/rx/rx.opt.urls b/gcc/config/rx/rx.opt.urls
new file mode 100644
index 000000000000..4cb037313b49
--- /dev/null
+++ b/gcc/config/rx/rx.opt.urls
@@ -0,0 +1,54 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/rx.opt and generated HTML
+
+m64bit-doubles
+UrlSuffix(gcc/RX-Options.html#index-m64bit-doubles-1)
+
+m32bit-doubles
+UrlSuffix(gcc/RX-Options.html#index-m32bit-doubles-1)
+
+nofpu
+UrlSuffix(gcc/RX-Options.html#index-nofpu)
+
+fpu
+UrlSuffix(gcc/RX-Options.html#index-fpu)
+
+mcpu=
+UrlSuffix(gcc/RX-Options.html#index-mcpu-11)
+
+mbig-endian-data
+UrlSuffix(gcc/RX-Options.html#index-mbig-endian-data)
+
+mlittle-endian-data
+UrlSuffix(gcc/RX-Options.html#index-mlittle-endian-data)
+
+msmall-data-limit=
+UrlSuffix(gcc/RX-Options.html#index-msmall-data-limit-2)
+
+mrelax
+UrlSuffix(gcc/RX-Options.html#index-mrelax-6)
+
+mmax-constant-size=
+UrlSuffix(gcc/RX-Options.html#index-mmax-constant-size)
+
+mint-register=
+UrlSuffix(gcc/RX-Options.html#index-mint-register)
+
+msave-acc-in-interrupts
+UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts)
+
+mpid
+UrlSuffix(gcc/RX-Options.html#index-mpid)
+
+mwarn-multiple-fast-interrupts
+UrlSuffix(gcc/RX-Options.html#index-mwarn-multiple-fast-interrupts)
+
+; skipping UrlSuffix for 'mgcc-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mallow-string-insns
+UrlSuffix(gcc/RX-Options.html#index-mallow-string-insns)
+
+mjsr
+UrlSuffix(gcc/RX-Options.html#index-mjsr)
+
diff --git a/gcc/config/s390/s390.opt.urls b/gcc/config/s390/s390.opt.urls
new file mode 100644
index 000000000000..ab1e761efa88
--- /dev/null
+++ b/gcc/config/s390/s390.opt.urls
@@ -0,0 +1,92 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/s390.opt and generated HTML
+
+m31
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m31)
+
+m64
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m64-2)
+
+march=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-march-15)
+
+mbackchain
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mbackchain)
+
+mdebug
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mdebug-1)
+
+mesa
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mesa)
+
+mhard-dfp
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-dfp-1)
+
+mhard-float
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-float-7)
+
+mhotpatch=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhotpatch)
+
+mlong-double-128
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-128)
+
+mlong-double-64
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-64)
+
+mhtm
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhtm-1)
+
+mvx
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mvx)
+
+mpacked-stack
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mpacked-stack)
+
+msmall-exec
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msmall-exec)
+
+msoft-float
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msoft-float-12)
+
+mstack-guard=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-guard)
+
+mstack-size=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-size-2)
+
+mtune=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtune-14)
+
+mmvcle
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mmvcle)
+
+mzvector
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzvector)
+
+mwarn-dynamicstack
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-dynamicstack)
+
+mwarn-framesize=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-framesize)
+
+mzarch
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzarch)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+; skipping UrlSuffix for 'mpic-data-is-text-relative' due to finding no URLs
+
+; skipping UrlSuffix for 'mindirect-branch=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfunction-return=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfentry' due to finding no URLs
+
+; skipping UrlSuffix for 'mrecord-mcount' due to finding no URLs
+
+; skipping UrlSuffix for 'mnop-mcount' due to finding no URLs
+
+; skipping UrlSuffix for 'munroll-only-small-loops' due to finding no URLs
+
diff --git a/gcc/config/s390/tpf.opt.urls b/gcc/config/s390/tpf.opt.urls
new file mode 100644
index 000000000000..8322d7eaa001
--- /dev/null
+++ b/gcc/config/s390/tpf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/tpf.opt and generated HTML
+
+mtpf-trace
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace)
+
+mtpf-trace-skip
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace-skip)
+
diff --git a/gcc/config/sh/sh.opt.urls b/gcc/config/sh/sh.opt.urls
new file mode 100644
index 000000000000..2c3bc0699ec5
--- /dev/null
+++ b/gcc/config/sh/sh.opt.urls
@@ -0,0 +1,174 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/sh.opt and generated HTML
+
+m1
+UrlSuffix(gcc/SH-Options.html#index-m1)
+
+m2
+UrlSuffix(gcc/SH-Options.html#index-m2)
+
+m2a
+UrlSuffix(gcc/SH-Options.html#index-m2a)
+
+m2a-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m2a-nofpu)
+
+m2a-single
+UrlSuffix(gcc/SH-Options.html#index-m2a-single)
+
+m2a-single-only
+UrlSuffix(gcc/SH-Options.html#index-m2a-single-only)
+
+m3
+UrlSuffix(gcc/SH-Options.html#index-m3)
+
+m3e
+UrlSuffix(gcc/SH-Options.html#index-m3e)
+
+m4
+UrlSuffix(gcc/SH-Options.html#index-m4)
+
+m4-100
+UrlSuffix(gcc/SH-Options.html#index-m4-100)
+
+m4-200
+UrlSuffix(gcc/SH-Options.html#index-m4-200)
+
+m4-300
+UrlSuffix(gcc/SH-Options.html#index-m4-300)
+
+m4-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-nofpu)
+
+m4-100-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-100-nofpu)
+
+m4-200-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-200-nofpu)
+
+m4-300-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-300-nofpu)
+
+m4-340
+UrlSuffix(gcc/SH-Options.html#index-m4-340)
+
+m4-500
+UrlSuffix(gcc/SH-Options.html#index-m4-500)
+
+m4-single
+UrlSuffix(gcc/SH-Options.html#index-m4-single)
+
+m4-100-single
+UrlSuffix(gcc/SH-Options.html#index-m4-100-single)
+
+m4-200-single
+UrlSuffix(gcc/SH-Options.html#index-m4-200-single)
+
+m4-300-single
+UrlSuffix(gcc/SH-Options.html#index-m4-300-single)
+
+m4-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-single-only)
+
+m4-100-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-100-single-only)
+
+m4-200-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-200-single-only)
+
+m4-300-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-300-single-only)
+
+m4a
+UrlSuffix(gcc/SH-Options.html#index-m4a)
+
+m4a-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4a-nofpu)
+
+m4a-single
+UrlSuffix(gcc/SH-Options.html#index-m4a-single)
+
+m4a-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4a-single-only)
+
+m4al
+UrlSuffix(gcc/SH-Options.html#index-m4al)
+
+maccumulate-outgoing-args
+UrlSuffix(gcc/SH-Options.html#index-maccumulate-outgoing-args)
+
+mb
+UrlSuffix(gcc/SH-Options.html#index-mb)
+
+mbigtable
+UrlSuffix(gcc/SH-Options.html#index-mbigtable)
+
+mbitops
+UrlSuffix(gcc/SH-Options.html#index-mbitops)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mzdcbranch
+UrlSuffix(gcc/SH-Options.html#index-mzdcbranch)
+
+mcbranch-force-delay-slot
+UrlSuffix(gcc/SH-Options.html#index-mcbranch-force-delay-slot)
+
+mdalign
+UrlSuffix(gcc/SH-Options.html#index-mdalign)
+
+; skipping UrlSuffix for 'mdiv=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfdpic' due to finding no URLs
+
+mfmovd
+UrlSuffix(gcc/SH-Options.html#index-mfmovd)
+
+mfixed-range=
+UrlSuffix(gcc/SH-Options.html#index-mfixed-range-2)
+
+mieee
+UrlSuffix(gcc/SH-Options.html#index-mieee-1)
+
+minline-ic_invalidate
+UrlSuffix(gcc/SH-Options.html#index-minline-ic_005finvalidate)
+
+misize
+UrlSuffix(gcc/SH-Options.html#index-misize-1)
+
+ml
+UrlSuffix(gcc/SH-Options.html#index-ml)
+
+mnomacsave
+UrlSuffix(gcc/SH-Options.html#index-mnomacsave)
+
+mpadstruct
+UrlSuffix(gcc/SH-Options.html#index-mpadstruct)
+
+mprefergot
+UrlSuffix(gcc/SH-Options.html#index-mprefergot)
+
+mrelax
+UrlSuffix(gcc/SH-Options.html#index-mrelax-7)
+
+mrenesas
+UrlSuffix(gcc/SH-Options.html#index-mrenesas)
+
+mtas
+UrlSuffix(gcc/SH-Options.html#index-mtas)
+
+; skipping UrlSuffix for 'multcost=' due to finding no URLs
+
+musermode
+UrlSuffix(gcc/SH-Options.html#index-musermode)
+
+mpretend-cmove
+UrlSuffix(gcc/SH-Options.html#index-mpretend-cmove)
+
+mfsca
+UrlSuffix(gcc/SH-Options.html#index-mfsca)
+
+mfsrra
+UrlSuffix(gcc/SH-Options.html#index-mfsrra)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
diff --git a/gcc/config/sh/superh.opt.urls b/gcc/config/sh/superh.opt.urls
new file mode 100644
index 000000000000..c098ec12c276
--- /dev/null
+++ b/gcc/config/sh/superh.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/superh.opt and generated HTML
+
+; skipping UrlSuffix for 'mboard=' due to finding no URLs
+
diff --git a/gcc/config/sol2.opt.urls b/gcc/config/sol2.opt.urls
new file mode 100644
index 000000000000..ef64d47d65ee
--- /dev/null
+++ b/gcc/config/sol2.opt.urls
@@ -0,0 +1,21 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sol2.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
+mclear-hwcap
+UrlSuffix(gcc/Solaris-2-Options.html#index-mclear-hwcap)
+
+mimpure-text
+UrlSuffix(gcc/Solaris-2-Options.html#index-mimpure-text)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+pthreads
+UrlSuffix(gcc/Solaris-2-Options.html#index-pthreads)
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/sparc/long-double-switch.opt.urls b/gcc/config/sparc/long-double-switch.opt.urls
new file mode 100644
index 000000000000..62f5738f756c
--- /dev/null
+++ b/gcc/config/sparc/long-double-switch.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/long-double-switch.opt and generated HTML
+
+; skipping UrlSuffix for 'mlong-double-128' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-double-64' due to finding no URLs
+
diff --git a/gcc/config/sparc/sparc.opt.urls b/gcc/config/sparc/sparc.opt.urls
new file mode 100644
index 000000000000..79774678984f
--- /dev/null
+++ b/gcc/config/sparc/sparc.opt.urls
@@ -0,0 +1,108 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/sparc.opt and generated HTML
+
+mfpu
+UrlSuffix(gcc/SPARC-Options.html#index-mfpu-4)
+
+mhard-float
+UrlSuffix(gcc/SPARC-Options.html#index-mhard-float-8)
+
+msoft-float
+UrlSuffix(gcc/SPARC-Options.html#index-msoft-float-13)
+
+mflat
+UrlSuffix(gcc/SPARC-Options.html#index-mflat)
+
+munaligned-doubles
+UrlSuffix(gcc/SPARC-Options.html#index-munaligned-doubles)
+
+mapp-regs
+UrlSuffix(gcc/SPARC-Options.html#index-mapp-regs)
+
+mhard-quad-float
+UrlSuffix(gcc/SPARC-Options.html#index-mhard-quad-float)
+
+msoft-quad-float
+UrlSuffix(gcc/SPARC-Options.html#index-msoft-quad-float)
+
+mlra
+UrlSuffix(gcc/SPARC-Options.html#index-mlra-3)
+
+mv8plus
+UrlSuffix(gcc/SPARC-Options.html#index-mv8plus)
+
+mvis
+UrlSuffix(gcc/SPARC-Options.html#index-mvis)
+
+mvis2
+UrlSuffix(gcc/SPARC-Options.html#index-mvis2)
+
+mvis3
+UrlSuffix(gcc/SPARC-Options.html#index-mvis3)
+
+mvis4
+UrlSuffix(gcc/SPARC-Options.html#index-mvis4)
+
+mvis4b
+UrlSuffix(gcc/SPARC-Options.html#index-mvis4b)
+
+mcbcond
+UrlSuffix(gcc/SPARC-Options.html#index-mcbcond)
+
+mfmaf
+UrlSuffix(gcc/SPARC-Options.html#index-mfmaf)
+
+mfsmuld
+UrlSuffix(gcc/SPARC-Options.html#index-mfsmuld)
+
+mpopc
+UrlSuffix(gcc/SPARC-Options.html#index-mpopc)
+
+msubxc
+UrlSuffix(gcc/SPARC-Options.html#index-msubxc)
+
+m64
+UrlSuffix(gcc/SPARC-Options.html#index-m64-3)
+
+m32
+UrlSuffix(gcc/SPARC-Options.html#index-m32-1)
+
+mstack-bias
+UrlSuffix(gcc/SPARC-Options.html#index-mstack-bias)
+
+mfaster-structs
+UrlSuffix(gcc/SPARC-Options.html#index-mfaster-structs)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+muser-mode
+UrlSuffix(gcc/SPARC-Options.html#index-muser-mode)
+
+mcpu=
+UrlSuffix(gcc/SPARC-Options.html#index-mcpu-12)
+
+mtune=
+UrlSuffix(gcc/SPARC-Options.html#index-mtune-15)
+
+mcmodel=
+UrlSuffix(gcc/SPARC-Options.html#index-mcmodel-1)
+
+; skipping UrlSuffix for 'mdebug=' due to finding no URLs
+
+mstd-struct-return
+UrlSuffix(gcc/SPARC-Options.html#index-mstd-struct-return)
+
+mfix-at697f
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-at697f)
+
+mfix-ut699
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut699)
+
+mfix-ut700
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut700)
+
+mfix-gr712rc
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-gr712rc)
+
+mmemory-model=
+UrlSuffix(gcc/SPARC-Options.html#index-mmemory-model)
+
diff --git a/gcc/config/stormy16/stormy16.opt.urls b/gcc/config/stormy16/stormy16.opt.urls
new file mode 100644
index 000000000000..6f47d4c5c180
--- /dev/null
+++ b/gcc/config/stormy16/stormy16.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/stormy16/stormy16.opt and generated HTML
+
+msim
+UrlSuffix(gcc/Xstormy16-Options.html#index-msim-10)
+
diff --git a/gcc/config/v850/v850.opt.urls b/gcc/config/v850/v850.opt.urls
new file mode 100644
index 000000000000..dc5a83107b3b
--- /dev/null
+++ b/gcc/config/v850/v850.opt.urls
@@ -0,0 +1,60 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/v850/v850.opt and generated HTML
+
+; skipping UrlSuffix for 'mapp-regs' due to finding no URLs
+
+; skipping UrlSuffix for 'mbig-switch' due to finding no URLs
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+; skipping UrlSuffix for 'mdisable-callt' due to finding no URLs
+
+; skipping UrlSuffix for 'mep' due to finding no URLs
+
+; skipping UrlSuffix for 'mghs' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-calls' due to finding no URLs
+
+; skipping UrlSuffix for 'mprolog-function' due to finding no URLs
+
+; skipping UrlSuffix for 'msda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mspace' due to finding no URLs
+
+; skipping UrlSuffix for 'mtda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mno-strict-align' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e1' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850es' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2v3' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e3v5' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2v4' due to finding no URLs
+
+; skipping UrlSuffix for 'mloop' due to finding no URLs
+
+; skipping UrlSuffix for 'mzda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-jumps' due to finding no URLs
+
+; skipping UrlSuffix for 'msoft-float' due to finding no URLs
+
+; skipping UrlSuffix for 'mhard-float' due to finding no URLs
+
+; skipping UrlSuffix for 'mrh850-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'mgcc-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'm8byte-align' due to finding no URLs
+
diff --git a/gcc/config/vax/elf.opt.urls b/gcc/config/vax/elf.opt.urls
new file mode 100644
index 000000000000..0903513694b9
--- /dev/null
+++ b/gcc/config/vax/elf.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/elf.opt and generated HTML
+
diff --git a/gcc/config/vax/vax.opt.urls b/gcc/config/vax/vax.opt.urls
new file mode 100644
index 000000000000..c6b1c418b617
--- /dev/null
+++ b/gcc/config/vax/vax.opt.urls
@@ -0,0 +1,10 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/vax.opt and generated HTML
+
+; skipping UrlSuffix for 'mg' due to finding no URLs
+
+; skipping UrlSuffix for 'mgnu' due to finding no URLs
+
+; skipping UrlSuffix for 'munix' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
diff --git a/gcc/config/visium/visium.opt.urls b/gcc/config/visium/visium.opt.urls
new file mode 100644
index 000000000000..38ba88dfe612
--- /dev/null
+++ b/gcc/config/visium/visium.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/visium/visium.opt and generated HTML
+
+mdebug
+UrlSuffix(gcc/Visium-Options.html#index-mdebug-2)
+
+msim
+UrlSuffix(gcc/Visium-Options.html#index-msim-9)
+
+mfpu
+UrlSuffix(gcc/Visium-Options.html#index-mfpu-5)
+
+mhard-float
+UrlSuffix(gcc/Visium-Options.html#index-mhard-float-10)
+
+msoft-float
+UrlSuffix(gcc/Visium-Options.html#index-msoft-float-15)
+
+mcpu=
+UrlSuffix(gcc/Visium-Options.html#index-mcpu-13)
+
+mtune=
+UrlSuffix(gcc/Visium-Options.html#index-mtune-16)
+
+msv-mode
+UrlSuffix(gcc/Visium-Options.html#index-msv-mode)
+
+muser-mode
+UrlSuffix(gcc/Visium-Options.html#index-muser-mode-1)
+
diff --git a/gcc/config/vms/vms.opt.urls b/gcc/config/vms/vms.opt.urls
new file mode 100644
index 000000000000..177b281cc774
--- /dev/null
+++ b/gcc/config/vms/vms.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vms/vms.opt and generated HTML
+
+mmalloc64
+UrlSuffix(gcc/VMS-Options.html#index-mmalloc64)
+
+mvms-return-codes
+UrlSuffix(gcc/VMS-Options.html#index-mvms-return-codes)
+
diff --git a/gcc/config/vxworks-smp.opt.urls b/gcc/config/vxworks-smp.opt.urls
new file mode 100644
index 000000000000..0a91011000f8
--- /dev/null
+++ b/gcc/config/vxworks-smp.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks-smp.opt and generated HTML
+
+msmp
+UrlSuffix(gcc/VxWorks-Options.html#index-msmp)
+
diff --git a/gcc/config/vxworks.opt.urls b/gcc/config/vxworks.opt.urls
new file mode 100644
index 000000000000..52888d0d91de
--- /dev/null
+++ b/gcc/config/vxworks.opt.urls
@@ -0,0 +1,20 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks.opt and generated HTML
+
+Bdynamic
+UrlSuffix(gcc/VxWorks-Options.html#index-Bdynamic)
+
+Bstatic
+UrlSuffix(gcc/VxWorks-Options.html#index-Bstatic)
+
+Xbind-lazy
+UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-lazy)
+
+Xbind-now
+UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-now)
+
+mrtp
+UrlSuffix(gcc/VxWorks-Options.html#index-mrtp)
+
+non-static
+UrlSuffix(gcc/VxWorks-Options.html#index-non-static)
+
diff --git a/gcc/config/xtensa/elf.opt.urls b/gcc/config/xtensa/elf.opt.urls
new file mode 100644
index 000000000000..6774adadbf7a
--- /dev/null
+++ b/gcc/config/xtensa/elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/elf.opt and generated HTML
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/xtensa/uclinux.opt.urls b/gcc/config/xtensa/uclinux.opt.urls
new file mode 100644
index 000000000000..bd69ce56d4c6
--- /dev/null
+++ b/gcc/config/xtensa/uclinux.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/uclinux.opt and generated HTML
+
diff --git a/gcc/config/xtensa/xtensa.opt.urls b/gcc/config/xtensa/xtensa.opt.urls
new file mode 100644
index 000000000000..146db23d1e30
--- /dev/null
+++ b/gcc/config/xtensa/xtensa.opt.urls
@@ -0,0 +1,37 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/xtensa.opt and generated HTML
+
+mconst16
+UrlSuffix(gcc/Xtensa-Options.html#index-mconst16)
+
+mforce-no-pic
+UrlSuffix(gcc/Xtensa-Options.html#index-mforce-no-pic)
+
+mlongcalls
+UrlSuffix(gcc/Xtensa-Options.html#index-mlongcalls)
+
+mextra-l32r-costs=
+UrlSuffix(gcc/Xtensa-Options.html#index-mextra-l32r-costs)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mtarget-align
+UrlSuffix(gcc/Xtensa-Options.html#index-mtarget-align)
+
+mtext-section-literals
+UrlSuffix(gcc/Xtensa-Options.html#index-mtext-section-literals)
+
+mauto-litpools
+UrlSuffix(gcc/Xtensa-Options.html#index-mauto-litpools)
+
+mserialize-volatile
+UrlSuffix(gcc/Xtensa-Options.html#index-mserialize-volatile)
+
+mabi=call0
+UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dcall0)
+
+mabi=windowed
+UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dwindowed)
+
+mstrict-align
+UrlSuffix(gcc/Xtensa-Options.html#index-mstrict-align-5)
+
diff --git a/gcc/d/lang.opt.urls b/gcc/d/lang.opt.urls
new file mode 100644
index 000000000000..09b2a261e254
--- /dev/null
+++ b/gcc/d/lang.opt.urls
@@ -0,0 +1,223 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/d/lang.opt and generated HTML
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+Hd
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Hd)
+
+Hf
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Hf)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+J
+LangUrlSuffix_D(gdc/Directory-Options.html#index-J)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+Waddress
+UrlSuffix(gcc/Warning-Options.html#index-Waddress)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Walloca
+UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca)
+
+Walloca-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
+
+Wbuiltin-declaration-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
+
+Wcast-result
+LangUrlSuffix_D(gdc/Warnings.html#index-Wcast-result)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wmismatched-special-enum
+LangUrlSuffix_D(gdc/Warnings.html#index-Wmismatched-special-enum)
+
+Wspeculative
+LangUrlSuffix_D(gdc/Warnings.html#index-Wno-speculative)
+
+Wunknown-pragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
+
+Wvarargs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-varargs)
+
+X
+LangUrlSuffix_D(gdc/Code-Generation.html#index-X)
+
+Xf
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Xf)
+
+debuglib=
+LangUrlSuffix_D(gdc/Linking.html#index-debuglib_003d)
+
+defaultlib=
+LangUrlSuffix_D(gdc/Linking.html#index-defaultlib_003d)
+
+fall-instantiations
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fall-instantiations)
+
+fassert
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fassert)
+
+fbounds-check
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+fbounds-check=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+; skipping UrlSuffix for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
+;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
+;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
+; skipping LangUrlSuffix_D for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gdc/Other-Builtins.html#index-fno-builtin-1'
+;   duplicate: 'gdc/Runtime-Options.html#index-fbuiltin'
+
+fcheckaction=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fcheckaction)
+
+fdebug
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdebug)
+
+fdebug=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdebug)
+
+fdoc
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc)
+
+fdoc-dir=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-dir)
+
+fdoc-file=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-file)
+
+fdoc-inc=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-inc)
+
+fdruntime
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdruntime)
+
+fdump-d-original
+LangUrlSuffix_D(gdc/Developer-Options.html#index-fdump-d-original)
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fextern-std=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fextern-std)
+
+fignore-unknown-pragmas
+LangUrlSuffix_D(gdc/Warnings.html#index-fignore-unknown-pragmas)
+
+finvariants
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-finvariants)
+
+fmain
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fmain)
+
+fmodule-file=
+LangUrlSuffix_D(gdc/Directory-Options.html#index-fmodule-file)
+
+fmoduleinfo
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fmoduleinfo)
+
+fonly=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fonly)
+
+fpostconditions
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-postconditions)
+
+fpreconditions
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-preconditions)
+
+frelease
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-release)
+
+frtti
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti) LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-rtti)
+
+fsave-mixins=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fsave-mixins)
+
+fswitch-errors
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-switch-errors)
+
+funittest
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-unittest)
+
+fversion=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+fweak-templates
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-weak-templates)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+nophoboslib
+LangUrlSuffix_D(gdc/Linking.html#index-nophoboslib)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+static-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-static-libphobos)
+
+shared-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-shared-libphobos)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
diff --git a/gcc/fortran/lang.opt.urls b/gcc/fortran/lang.opt.urls
new file mode 100644
index 000000000000..a7d9bdc142c5
--- /dev/null
+++ b/gcc/fortran/lang.opt.urls
@@ -0,0 +1,161 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/fortran/lang.opt and generated HTML
+
+A
+UrlSuffix(gcc/Preprocessor-Options.html#index-A)
+
+C
+UrlSuffix(gcc/Preprocessor-Options.html#index-C)
+
+CC
+UrlSuffix(gcc/Preprocessor-Options.html#index-CC)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+J
+LangUrlSuffix_D(gdc/Directory-Options.html#index-J)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+U
+UrlSuffix(gcc/Preprocessor-Options.html#index-U)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wdate-time
+UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
+
+Wconversion
+UrlSuffix(gcc/Warning-Options.html#index-Wconversion)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wmissing-include-dirs
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
+
+Wopenacc-parallelism
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
+
+Wopenmp-simd
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+; skipping UrlSuffix for 'nocpp' due to finding no URLs
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+ff2c
+LangUrlSuffix_Fortran(gfortran/Code-Gen-Options.html#index-ff2c)
+
+fopenacc
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc)
+
+fopenacc-dim=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
+
+fopenmp
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp)
+
+fopenmp-simd
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd)
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
diff --git a/gcc/go/lang.opt.urls b/gcc/go/lang.opt.urls
new file mode 100644
index 000000000000..34d3154f2c50
--- /dev/null
+++ b/gcc/go/lang.opt.urls
@@ -0,0 +1,17 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/go/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
diff --git a/gcc/lto/lang.opt.urls b/gcc/lto/lang.opt.urls
new file mode 100644
index 000000000000..f7509c8211ec
--- /dev/null
+++ b/gcc/lto/lang.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/lto/lang.opt and generated HTML
+
+flinker-output=
+UrlSuffix(gcc/Link-Options.html#index-flinker-output)
+
+help
+UrlSuffix(gcc/Overall-Options.html#index-help)
+
diff --git a/gcc/m2/lang.opt.urls b/gcc/m2/lang.opt.urls
new file mode 100644
index 000000000000..8e8feb13a96a
--- /dev/null
+++ b/gcc/m2/lang.opt.urls
@@ -0,0 +1,115 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/m2/lang.opt and generated HTML
+
+fversion
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter)
+
+B
+UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+Mno-modules
+UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+; skipping UrlSuffix for 'ansi' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
+;   duplicate: 'gcc/Non-bugs.html#index-ansi-3'
+;   duplicate: 'gcc/Other-Builtins.html#index-ansi-2'
+;   duplicate: 'gcc/Standards.html#index-ansi'
+
+; skipping UrlSuffix for 'c' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-c-1'
+;   duplicate: 'gcc/Overall-Options.html#index-c'
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+save-temps
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+save-temps=
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+traditional-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp)
+
diff --git a/gcc/params.opt.urls b/gcc/params.opt.urls
new file mode 100644
index 000000000000..e76310c6ac04
--- /dev/null
+++ b/gcc/params.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/params.opt and generated HTML
+
diff --git a/gcc/rust/lang.opt.urls b/gcc/rust/lang.opt.urls
new file mode 100644
index 000000000000..9cf8987e7344
--- /dev/null
+++ b/gcc/rust/lang.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/rust/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-result
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
-- 
2.26.3


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

* [PATCH 3/4] opts: add logic to generate options-urls.cc
  2023-11-16 14:28       ` [PATCH 0/4] v2 of " David Malcolm
  2023-11-16 14:28         ` [PATCH 1/4] options: add gcc/regenerate-opt-urls.py David Malcolm
  2023-11-16 14:28         ` [PATCH 2/4] Add generated .opt.urls files David Malcolm
@ 2023-11-16 14:28         ` David Malcolm
  2023-11-16 14:28         ` [PATCH 4/4] options: wire up options-urls.cc into gcc_urlifier David Malcolm
  2023-11-21  1:09         ` [PATCH 0/4] v2 of Option handling: add documentation URLs Hans-Peter Nilsson
  4 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-16 14:28 UTC (permalink / raw)
  To: Joseph Myers; +Cc: gcc-patches, David Malcolm

Changed in v2:
- split out from the code that uses this
- now handles lang-specific URLs, as well as generic URLs
- the generated options-urls.cc now contains a function with a
  switch statement, rather than an array, to support
  lang-specific URLs:

const char *
get_opt_url_suffix (int option_index, unsigned lang_mask)
{
  switch (option_index)
    {
     [...snip...]
     case OPT_B:
       if (lang_mask & CL_D)
         return "gdc/Directory-Options.html#index-B";
       return "gcc/Directory-Options.html#index-B";
    [...snip...]
  return nullptr;
}

gcc/ChangeLog:
	* Makefile.in (ALL_OPT_URL_FILES): New.
	(GCC_OBJS): Add options-urls.o.
	(OBJS): Likewise.
	(OBJS-libcommon): Likewise.
	(s-options): Depend on $(ALL_OPT_URL_FILES), and add this to
	inputs to opt-gather.awk.
	(options-urls.cc): New Makefile target.
	* opt-functions.awk (url_suffix): New function.
	(lang_url_suffix): New function.
	* options-urls-cc-gen.awk: New file.
	* opts.h (get_opt_url_suffix): New decl.
---
 gcc/Makefile.in             |  18 +++++--
 gcc/opt-functions.awk       |  15 ++++++
 gcc/options-urls-cc-gen.awk | 105 ++++++++++++++++++++++++++++++++++++
 gcc/opts.h                  |   4 ++
 4 files changed, 138 insertions(+), 4 deletions(-)
 create mode 100644 gcc/options-urls-cc-gen.awk

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index f3b79b8a2663..72daf907c530 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1272,6 +1272,8 @@ FLAGS_TO_PASS = \
 # All option source files
 ALL_OPT_FILES=$(lang_opt_files) $(extra_opt_files)
 
+ALL_OPT_URL_FILES=$(patsubst %, %.urls, $(ALL_OPT_FILES))
+
 # Target specific, C specific object file
 C_TARGET_OBJS=@c_target_objs@
 
@@ -1288,7 +1290,7 @@ FORTRAN_TARGET_OBJS=@fortran_target_objs@
 RUST_TARGET_OBJS=@rust_target_objs@
 
 # Object files for gcc many-languages driver.
-GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o
+GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o options-urls.o
 
 c-family-warn = $(STRICT_WARN)
 
@@ -1608,6 +1610,7 @@ OBJS = \
 	optinfo.o \
 	optinfo-emit-json.o \
 	options-save.o \
+	options-urls.o \
 	opts-global.o \
 	ordered-hash-map-tests.o \
 	passes.o \
@@ -1834,7 +1837,8 @@ OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
 # compiler and containing target-dependent code.
 OBJS-libcommon-target = $(common_out_object_file) prefix.o \
 	opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \
-	hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o
+	hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o \
+	options-urls.o
 
 # This lists all host objects for the front ends.
 ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS))
@@ -2437,9 +2441,9 @@ s-specs : Makefile
 	$(STAMP) s-specs
 
 optionlist: s-options ; @true
-s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
+s-options: $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) Makefile $(srcdir)/opt-gather.awk
 	LC_ALL=C ; export LC_ALL ; \
-	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) > tmp-optionlist
+	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) > tmp-optionlist
 	$(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist
 	$(STAMP) s-options
 
@@ -2455,6 +2459,12 @@ options-save.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
 	       -f $(srcdir)/optc-save-gen.awk \
 	       -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
 
+options-urls.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
+    $(srcdir)/options-urls-cc-gen.awk
+	$(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/opt-read.awk \
+	       -f $(srcdir)/options-urls-cc-gen.awk \
+	       -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
+
 options.h: s-options-h ; @true
 s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
     $(srcdir)/opth-gen.awk
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
index a58e93815e30..c31e66f2105a 100644
--- a/gcc/opt-functions.awk
+++ b/gcc/opt-functions.awk
@@ -193,6 +193,21 @@ function var_name(flags)
 	return nth_arg(0, opt_args("Var", flags))
 }
 
+# If FLAGS includes a UrlSuffix flag, return the value it specifies.
+# Return the empty string otherwise.
+function url_suffix(flags)
+{
+	return nth_arg(0, opt_args("UrlSuffix", flags))
+}
+
+# If FLAGS includes a LangUrlSuffix_LANG flag, return the
+# value it specifies.
+# Return the empty string otherwise.
+function lang_url_suffix(flags, lang)
+{
+	return nth_arg(0, opt_args("LangUrlSuffix_" lang, flags))
+}
+
 # Return the name of the variable if FLAGS has a HOST_WIDE_INT variable. 
 # Return the empty string otherwise.
 function host_wide_int_var_name(flags)
diff --git a/gcc/options-urls-cc-gen.awk b/gcc/options-urls-cc-gen.awk
new file mode 100644
index 000000000000..e021e7c3f1bc
--- /dev/null
+++ b/gcc/options-urls-cc-gen.awk
@@ -0,0 +1,105 @@
+#  Copyright (C) 2023 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3, or (at your option) any
+# later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# This Awk script reads in the option records generated from 
+# opt-gather.awk, and generates a C++ file containing an array
+# of URL suffixes (possibly NULL), one per option.
+
+# This program uses functions from opt-functions.awk and code from
+# opt-read.awk.
+#
+# Usage: awk -f opt-functions.awk -f opt-read.awk -f options-urls-cc-gen.awk \
+#            [-v header_name=header.h] < inputfile > options-urls.cc
+
+END {
+
+
+print "/* This file is auto-generated by options-urls-cc-gen.awk.  */"
+print ""
+n_headers = split(header_name, headers, " ")
+for (i = 1; i <= n_headers; i++)
+	print "#include " quote headers[i] quote
+print "#include " quote "opts.h" quote
+print "#include " quote "intl.h" quote
+print "#include " quote "insn-attr-common.h" quote
+print ""
+
+if (n_extra_c_includes > 0) {
+	for (i = 0; i < n_extra_c_includes; i++) {
+		print "#include " quote extra_c_includes[i] quote
+	}
+	print ""
+}
+
+print "const char *"
+print "get_opt_url_suffix (int option_index, unsigned lang_mask)"
+print "{"
+print "  switch (option_index)"
+print "    {"
+
+
+optindex = 0
+for (i = 0; i < n_opts; i++) {
+	# Combine the flags of identical switches.  Switches
+	# appear many times if they are handled by many front
+	# ends, for example.
+	while( i + 1 != n_opts && opts[i] == opts[i + 1] ) {
+		flags[i + 1] = flags[i] " " flags[i + 1];
+		i++;
+	}
+
+	len = length (opts[i]);
+	enum = opt_enum(opts[i])
+
+	# Aliases do not get enumeration names.
+	if ((flag_set_p("Alias.*", flags[i]) \
+	     && !flag_set_p("SeparateAlias", flags[i])) \
+	    || flag_set_p("Ignore", flags[i])) {
+	    show_case = 0;
+	} else {
+	    show_case = 1;
+	}
+
+	if (show_case) {
+	    printf("     case %s:\n", opt_enum(opts[i]))
+
+	    # Handle any lang-specific LangUrlSuffix directives:
+	    for (lang_idx = 0; lang_idx < n_langs; lang_idx++) {
+		lang_name = lang_sanitized_name(langs[lang_idx])
+		u = lang_url_suffix(flags[i], lang_name)
+		if (u != "") {
+		    printf("       if (lang_mask & CL_%s)\n", lang_name)
+		    printf("         return \"%s\";\n", u)
+		}
+	    }
+
+	    # Use any language-independent UrlSuffix directive:
+	    u = url_suffix(flags[i])
+	    if (u != "") {
+		printf("       return \"%s\";\n", u)
+	    } else {
+		printf("       break;\n")
+	    }
+	}
+
+	# Bump up the informational option index.
+	++optindex
+ }
+
+print "    }"
+print "  return nullptr;"
+print "}"
+}
diff --git a/gcc/opts.h b/gcc/opts.h
index 00f377f9ca7e..0e47d3425604 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -152,6 +152,10 @@ struct cl_option_state {
 
 extern const struct cl_option cl_options[];
 extern const unsigned int cl_options_count;
+
+extern const char *
+get_opt_url_suffix (int option_index, unsigned lang_mask);
+
 #ifdef ENABLE_PLUGIN
 extern const struct cl_var cl_vars[];
 #endif
-- 
2.26.3


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

* [PATCH 4/4] options: wire up options-urls.cc into gcc_urlifier
  2023-11-16 14:28       ` [PATCH 0/4] v2 of " David Malcolm
                           ` (2 preceding siblings ...)
  2023-11-16 14:28         ` [PATCH 3/4] opts: add logic to generate options-urls.cc David Malcolm
@ 2023-11-16 14:28         ` David Malcolm
  2023-11-21  1:09         ` [PATCH 0/4] v2 of Option handling: add documentation URLs Hans-Peter Nilsson
  4 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-16 14:28 UTC (permalink / raw)
  To: Joseph Myers; +Cc: gcc-patches, David Malcolm

Changed in v2:
- split out from the code that generates options-urls.cc
- call the generated function, rather than use a generated array
- pass around lang_mask

gcc/ChangeLog:
	* diagnostic.h (diagnostic_make_option_url_cb): Add lang_mask
	param.
	(diagnostic_context::make_option_url): Update for lang_mask param.
	* gcc-urlifier.cc: Include "opts.h" and "options.h".
	(gcc_urlifier::gcc_urlifier): Add lang_mask param.
	(gcc_urlifier::m_lang_mask): New field.
	(doc_urls): Make static.
	(gcc_urlifier::get_url_for_quoted_text): Use label_text.
	(gcc_urlifier::get_url_suffix_for_quoted_text): Use label_text.
	Look for an option by name before trying a binary search in
	doc_urls.
	(gcc_urlifier::get_url_suffix_for_quoted_text): Use label_text.
	(gcc_urlifier::get_url_suffix_for_option): New.
	(make_gcc_urlifier): Add lang_mask param.
	(selftest::gcc_urlifier_cc_tests): Update for above changes.
	Verify that a URL is found for "-fpack-struct".
	* gcc-urlifier.def: Drop options "--version" and "-fpack-struct".
	* gcc-urlifier.h (make_gcc_urlifier): Add lang_mask param.
	* gcc.cc (driver::global_initializations): Pass 0 for lang_mask
	to make_gcc_urlifier.
	* opts-diagnostic.h (get_option_url): Add lang_mask param.
	* opts.cc (get_option_html_page): Remove special-casing for
	analyzer and LTO.
	(get_option_url_suffix): New.
	(get_option_url): Reimplement.
	(selftest::test_get_option_html_page): Rename to...
	(selftest::test_get_option_url_suffix): ...this and update for
	above changes.
	(selftest::opts_cc_tests): Update for renaming.
	* opts.h (get_option_url_suffix): New decl.

gcc/testsuite/ChangeLog:
	* lib/gcc-dg.exp: Set TERM to xterm.

gcc/ChangeLog:
	* toplev.cc (general_init): Pass lang_mask to urlifier.
---
 gcc/diagnostic.h             |   6 +-
 gcc/gcc-urlifier.cc          | 106 ++++++++++++++++++++++++++++-------
 gcc/gcc-urlifier.def         |   2 -
 gcc/gcc-urlifier.h           |   2 +-
 gcc/gcc.cc                   |   2 +-
 gcc/opts-diagnostic.h        |   3 +-
 gcc/opts.cc                  |  95 ++++++++++++++++++++-----------
 gcc/opts.h                   |   3 +
 gcc/testsuite/lib/gcc-dg.exp |   6 ++
 gcc/toplev.cc                |   5 +-
 10 files changed, 168 insertions(+), 62 deletions(-)

diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index dbf972d25875..ce6f95880e51 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -185,7 +185,8 @@ typedef char *(*diagnostic_make_option_name_cb) (const diagnostic_context *,
 						 diagnostic_t,
 						 diagnostic_t);
 typedef char *(*diagnostic_make_option_url_cb) (const diagnostic_context *,
-						int);
+						int,
+						unsigned);
 
 class edit_context;
 namespace json { class value; }
@@ -525,7 +526,8 @@ public:
   {
     if (!m_option_callbacks.m_make_option_url_cb)
       return nullptr;
-    return m_option_callbacks.m_make_option_url_cb (this, option_index);
+    return m_option_callbacks.m_make_option_url_cb (this, option_index,
+						    get_lang_mask ());
   }
 
   void
diff --git a/gcc/gcc-urlifier.cc b/gcc/gcc-urlifier.cc
index 0dbff9853132..ae762a45f4a1 100644
--- a/gcc/gcc-urlifier.cc
+++ b/gcc/gcc-urlifier.cc
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "pretty-print.h"
 #include "pretty-print-urlifier.h"
 #include "gcc-urlifier.h"
+#include "opts.h"
+#include "options.h"
 #include "selftest.h"
 
 namespace {
@@ -34,23 +36,34 @@ namespace {
 class gcc_urlifier : public urlifier
 {
 public:
+  gcc_urlifier (unsigned int lang_mask)
+  : m_lang_mask (lang_mask)
+  {}
+
   char *get_url_for_quoted_text (const char *p, size_t sz) const final override;
 
-  const char *get_url_suffix_for_quoted_text (const char *p, size_t sz) const;
+  label_text get_url_suffix_for_quoted_text (const char *p, size_t sz) const;
   /* We use ATTRIBUTE_UNUSED as this helper is called only from ASSERTs.  */
-  const char *get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED;
+  label_text get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED;
 
 private:
+  label_text get_url_suffix_for_option (const char *p, size_t sz) const;
+
   static char *
   make_doc_url (const char *doc_url_suffix);
+
+  unsigned int m_lang_mask;
 };
 
 /* class gcc_urlifier : public urlifier.  */
 
+/* Manage a hard-coded mapping from quoted string to URL suffixes
+   in gcc-urlifier.def  */
+
 #define DOC_URL(QUOTED_TEXT, URL_SUFFIX) \
   { (QUOTED_TEXT), (URL_SUFFIX) }
 
-const struct
+static const struct
 {
   const char *quoted_text;
   const char *url_suffix;
@@ -60,32 +73,53 @@ const struct
 
 };
 
+/* Implementation of urlifier::get_url_for_quoted_text vfunc for GCC
+   diagnostics.  */
+
 char *
 gcc_urlifier::get_url_for_quoted_text (const char *p, size_t sz) const
 {
-  if (const char *url_suffix = get_url_suffix_for_quoted_text (p, sz))
-    return make_doc_url (url_suffix);
+  label_text url_suffix = get_url_suffix_for_quoted_text (p, sz);
+  if (url_suffix.get ())
+    return make_doc_url (url_suffix.get ());
   return nullptr;
 }
 
-const char *
+/* Look for a URL for the quoted string (P, SZ).
+   Return the url suffix if found, or nullptr otherwise.  */
+
+label_text
 gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const
 {
-  /* Binary search.  This assumes that the quoted_text fields of doc_urls
+  if (sz == 0)
+    return label_text ();
+
+  /* If this is an option, look up the option and see if we have
+     a URL for it.  */
+  if (p[0] == '-')
+    {
+      label_text suffix = get_url_suffix_for_option (p, sz);
+      if (suffix.get ())
+	return suffix;
+    }
+
+  /* Otherwise, look within the hard-coded data table in gcc-urlifier.def.
+
+     Binary search.  This assumes that the quoted_text fields of doc_urls
      are in sorted order.  */
   int min = 0;
   int max = ARRAY_SIZE (doc_urls) - 1;
   while (true)
     {
       if (min > max)
-	return nullptr;
+	return label_text ();
       int midpoint = (min + max) / 2;
       gcc_assert ((size_t)midpoint < ARRAY_SIZE (doc_urls));
       int cmp = strncmp (p, doc_urls[midpoint].quoted_text, sz);
       if (cmp == 0)
 	{
 	  if (doc_urls[midpoint].quoted_text[sz] == '\0')
-	    return doc_urls[midpoint].url_suffix;
+	    return label_text::borrow (doc_urls[midpoint].url_suffix);
 	  else
 	    max = midpoint - 1;
 	}
@@ -94,15 +128,45 @@ gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const
       else
 	min = midpoint + 1;
     }
-  return nullptr;
+
+  /* Not found.  */
+  return label_text ();
 }
 
-const char *
+/* For use in selftests.  */
+
+label_text
 gcc_urlifier::get_url_suffix_for_quoted_text (const char *p) const
 {
   return get_url_suffix_for_quoted_text (p, strlen (p));
 }
 
+/* Look for a URL for the quoted string (P, SZ) that appears to be
+   an option.
+   Return the url suffix if found, or nullptr otherwise.  */
+
+label_text
+gcc_urlifier::get_url_suffix_for_option (const char *p, size_t sz) const
+{
+  /* Look up this option
+
+     find_opt does a binary search, taking a 0-terminated string,
+     and skipping the leading '-'.
+
+     We have a (pointer,size) pair that doesn't necessarily have a
+     terminator, so create a 0-terminated clone of the string.  */
+  gcc_assert (sz > 0);
+  char *tmp = xstrndup (p + 1, sz - 1); // skip the leading '-'
+  size_t opt = find_opt (tmp, m_lang_mask);
+  free (tmp);
+
+  if (opt >= N_OPTS)
+    /* Option not recognized.  */
+    return label_text ();
+
+  return get_option_url_suffix (opt, m_lang_mask);
+}
+
 char *
 gcc_urlifier::make_doc_url (const char *doc_url_suffix)
 {
@@ -115,9 +179,9 @@ gcc_urlifier::make_doc_url (const char *doc_url_suffix)
 } // anonymous namespace
 
 urlifier *
-make_gcc_urlifier ()
+make_gcc_urlifier (unsigned int lang_mask)
 {
-  return new gcc_urlifier ();
+  return new gcc_urlifier (lang_mask);
 }
 
 #if CHECKING_P
@@ -137,22 +201,26 @@ gcc_urlifier_cc_tests ()
 			doc_urls[idx].quoted_text)
 		< 0);
 
-  gcc_urlifier u;
+  gcc_urlifier u (0);
 
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text (""), nullptr);
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text (")"), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("").get (), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text (")").get (), nullptr);
 
-  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message"),
+  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message").get (),
 		"gcc/Diagnostic-Pragmas.html");
 
   // Incomplete prefix of a quoted_text
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess"), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess").get (), nullptr);
 
   /* Check that every element is findable.  */
   for (size_t idx = 0; idx < ARRAY_SIZE (doc_urls); idx++)
     ASSERT_STREQ
-      (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text),
+      (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text).get (),
        doc_urls[idx].url_suffix);
+
+  /* Check an option.  */
+  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("-fpack-struct").get (),
+		"gcc/Code-Gen-Options.html#index-fpack-struct");
 }
 
 } // namespace selftest
diff --git a/gcc/gcc-urlifier.def b/gcc/gcc-urlifier.def
index 360de930e9ec..de6d9a3eb962 100644
--- a/gcc/gcc-urlifier.def
+++ b/gcc/gcc-urlifier.def
@@ -16,5 +16,3 @@ DOC_URL ("#pragma pack", "gcc/Structure-Layout-Pragmas.html"),
 DOC_URL ("#pragma redefine_extname", "gcc/Symbol-Renaming-Pragmas.html"),
 DOC_URL ("#pragma scalar_storage_order", "gcc/Structure-Layout-Pragmas.html"),
 DOC_URL ("#pragma weak", "gcc/Weak-Pragmas.html"),
-DOC_URL ("--version", "gcc/Overall-Options.html#index-version"),
-DOC_URL ("-fpack-struct", "gcc/Code-Gen-Options.html#index-fpack-struct"),
diff --git a/gcc/gcc-urlifier.h b/gcc/gcc-urlifier.h
index 614e1c64b94d..77eb13463928 100644
--- a/gcc/gcc-urlifier.h
+++ b/gcc/gcc-urlifier.h
@@ -21,6 +21,6 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_GCC_URLIFIER_H
 #define GCC_GCC_URLIFIER_H
 
-extern urlifier *make_gcc_urlifier ();
+extern urlifier *make_gcc_urlifier (unsigned int lang_mask);
 
 #endif /* GCC_GCC_URLIFIER_H */
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 51120c1489e3..781cb343f18b 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -8292,7 +8292,7 @@ driver::global_initializations ()
   diagnostic_initialize (global_dc, 0);
   diagnostic_color_init (global_dc);
   diagnostic_urls_init (global_dc);
-  global_dc->set_urlifier (make_gcc_urlifier ());
+  global_dc->set_urlifier (make_gcc_urlifier (0));
 
 #ifdef GCC_DRIVER_HOST_INITIALIZATION
   /* Perform host dependent initialization when needed.  */
diff --git a/gcc/opts-diagnostic.h b/gcc/opts-diagnostic.h
index 8c3b695f07a2..5bede4ef48f3 100644
--- a/gcc/opts-diagnostic.h
+++ b/gcc/opts-diagnostic.h
@@ -24,6 +24,7 @@ extern char *option_name (const diagnostic_context *context, int option_index,
 			  diagnostic_t orig_diag_kind, diagnostic_t diag_kind);
 
 extern char *get_option_url (const diagnostic_context *context,
-			     int option_index);
+			     int option_index,
+			     unsigned lang_mask);
 
 #endif
diff --git a/gcc/opts.cc b/gcc/opts.cc
index 33165c9e74ff..72413a2bd643 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -3647,14 +3647,6 @@ get_option_html_page (int option_index)
 {
   const cl_option *cl_opt = &cl_options[option_index];
 
-  /* Analyzer options are on their own page.  */
-  if (strstr (cl_opt->opt_text, "analyzer-"))
-    return "gcc/Static-Analyzer-Options.html";
-
-  /* Handle -flto= option.  */
-  if (strstr (cl_opt->opt_text, "flto"))
-    return "gcc/Optimize-Options.html";
-
 #ifdef CL_Fortran
   if ((cl_opt->flags & CL_Fortran) != 0
       /* If it is option common to both C/C++ and Fortran, it is documented
@@ -3667,32 +3659,49 @@ get_option_html_page (int option_index)
     return "gfortran/Error-and-Warning-Options.html";
 #endif
 
-  return "gcc/Warning-Options.html";
+  return nullptr;
+}
+
+/* Get the url within the documentation for this option, or NULL.  */
+
+label_text
+get_option_url_suffix (int option_index, unsigned lang_mask)
+{
+  if (const char *url = get_opt_url_suffix (option_index, lang_mask))
+
+    return label_text::borrow (url);
+
+  /* Fallback code for some options that aren't handled byt opt_url_suffixes
+     e.g. links below "gfortran/".  */
+  if (const char *html_page = get_option_html_page (option_index))
+    return label_text::take
+      (concat (html_page,
+	       /* Expect an anchor of the form "index-Wfoo" e.g.
+		  <a name="index-Wformat"></a>, and thus an id within
+		  the page of "#index-Wformat".  */
+	       "#index",
+	       cl_options[option_index].opt_text,
+	       NULL));
+
+  return label_text ();
 }
 
 /* Return malloced memory for a URL describing the option OPTION_INDEX
    which enabled a diagnostic (context CONTEXT).  */
 
 char *
-get_option_url (const diagnostic_context *, int option_index)
+get_option_url (const diagnostic_context *,
+		int option_index,
+		unsigned lang_mask)
 {
   if (option_index)
-    return concat (/* DOCUMENTATION_ROOT_URL should be supplied via
-		      #include "config.h" (see --with-documentation-root-url),
-		      and should have a trailing slash.  */
-		   DOCUMENTATION_ROOT_URL,
-
-		   /* get_option_html_page will return something like
-		      "gcc/Warning-Options.html".  */
-		   get_option_html_page (option_index),
-
-		   /* Expect an anchor of the form "index-Wfoo" e.g.
-		      <a name="index-Wformat"></a>, and thus an id within
-		      the URL of "#index-Wformat".  */
-		   "#index", cl_options[option_index].opt_text,
-		   NULL);
-  else
-    return NULL;
+    {
+      label_text url_suffix = get_option_url_suffix (option_index, lang_mask);
+      if (url_suffix.get ())
+	return concat (DOCUMENTATION_ROOT_URL, url_suffix.get (), nullptr);
+    }
+
+  return nullptr;
 }
 
 /* Return a heap allocated producer with command line options.  */
@@ -3823,17 +3832,35 @@ gen_producer_string (const char *language_string, cl_decoded_option *options,
 
 namespace selftest {
 
-/* Verify that get_option_html_page works as expected.  */
+/* Verify that get_option_url_suffix works as expected.  */
 
 static void
-test_get_option_html_page ()
+test_get_option_url_suffix ()
 {
-  ASSERT_STREQ (get_option_html_page (OPT_Wcpp), "gcc/Warning-Options.html");
-  ASSERT_STREQ (get_option_html_page (OPT_Wanalyzer_double_free),
-	     "gcc/Static-Analyzer-Options.html");
+  ASSERT_STREQ (get_option_url_suffix (OPT_Wcpp, 0).get (),
+		"gcc/Warning-Options.html#index-Wcpp");
+  ASSERT_STREQ (get_option_url_suffix (OPT_Wanalyzer_double_free, 0).get (),
+		"gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free");
+
+  /* Test of a D-specific option.  */
+#ifdef CL_D
+  ASSERT_EQ (get_option_url_suffix (OPT_fbounds_check_, 0).get (), nullptr);
+  ASSERT_STREQ (get_option_url_suffix (OPT_fbounds_check_, CL_D).get (),
+		"gdc/Runtime-Options.html#index-fbounds-check");
+
+  /* Test of a D-specific override to an option URL.  */
+  /* Generic URL.  */
+  ASSERT_STREQ (get_option_url_suffix (OPT_fmax_errors_, 0).get (),
+		"gcc/Warning-Options.html#index-fmax-errors");
+  /* D-specific URL.  */
+  ASSERT_STREQ (get_option_url_suffix (OPT_fmax_errors_, CL_D).get (),
+		"gdc/Warnings.html#index-fmax-errors");
+#endif
+
 #ifdef CL_Fortran
-  ASSERT_STREQ (get_option_html_page (OPT_Wline_truncation),
-		"gfortran/Error-and-Warning-Options.html");
+  ASSERT_STREQ
+    (get_option_url_suffix (OPT_Wline_truncation, CL_Fortran).get (),
+     "gfortran/Error-and-Warning-Options.html#index-Wline-truncation");
 #endif
 }
 
@@ -3896,7 +3923,7 @@ test_enum_sets ()
 void
 opts_cc_tests ()
 {
-  test_get_option_html_page ();
+  test_get_option_url_suffix ();
   test_enum_sets ();
 }
 
diff --git a/gcc/opts.h b/gcc/opts.h
index 0e47d3425604..3f662f81a0ad 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -568,4 +568,7 @@ struct switchstr
   bool ordering;
 };
 
+extern label_text
+get_option_url_suffix (int option_index, unsigned lang_mask);
+
 #endif
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 28529f57ef60..30642a72b756 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -46,6 +46,12 @@ if { [ishost "*-*-cygwin*"] } {
   setenv LANG C.ASCII
 }
 
+# Set TERM to xterm to ensure that URL escapes are disabled.
+# This avoids issues where a diagnostic which could embed a URL
+# is emitted before -fdiagnostics-plain-output is handled, where
+# otherwise the output could be affected by the environment.
+setenv TERM xterm
+
 # Avoid sporadic data-losses with expect
 match_max -d 10000
 
diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index 8c3fcd337bee..fc65b6f46fa1 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -1044,12 +1044,13 @@ general_init (const char *argv0, bool init_signals)
   global_dc->m_show_column
     = global_options_init.x_flag_show_column;
   global_dc->m_internal_error = internal_error_function;
+  const unsigned lang_mask = lang_hooks.option_lang_mask ();
   global_dc->set_option_hooks (option_enabled,
 			       &global_options,
 			       option_name,
 			       get_option_url,
-			       lang_hooks.option_lang_mask ());
-  global_dc->set_urlifier (make_gcc_urlifier ());
+			       lang_mask);
+  global_dc->set_urlifier (make_gcc_urlifier (lang_mask));
 
   if (init_signals)
     {
-- 
2.26.3


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

* Re: [PATCH 0/4] v2 of Option handling: add documentation URLs
  2023-11-16 14:28       ` [PATCH 0/4] v2 of " David Malcolm
                           ` (3 preceding siblings ...)
  2023-11-16 14:28         ` [PATCH 4/4] options: wire up options-urls.cc into gcc_urlifier David Malcolm
@ 2023-11-21  1:09         ` Hans-Peter Nilsson
  2023-11-21 13:57           ` David Malcolm
  4 siblings, 1 reply; 47+ messages in thread
From: Hans-Peter Nilsson @ 2023-11-21  1:09 UTC (permalink / raw)
  To: David Malcolm; +Cc: joseph, gcc-patches, dmalcolm

> From: David Malcolm <dmalcolm@redhat.com>
> Date: Thu, 16 Nov 2023 09:28:54 -0500

> How is this looking for trunk?
> 
> Thanks
> Dave
> 
> 
> David Malcolm (4):
>   options: add gcc/regenerate-opt-urls.py
>   Add generated .opt.urls files
>   opts: add logic to generate options-urls.cc
>   options: wire up options-urls.cc into gcc_urlifier
> 
>  gcc/Makefile.in                              |   29 +-
>  gcc/ada/gcc-interface/lang.opt.urls          |   30 +
>  gcc/analyzer/analyzer.opt.urls               |  206 ++
>  gcc/c-family/c.opt.urls                      | 1409 ++++++++++++++
>  gcc/common.opt.urls                          | 1832 ++++++++++++++++++
>  gcc/config/aarch64/aarch64.opt.urls          |   84 +
>  gcc/config/alpha/alpha.opt.urls              |   76 +
>  gcc/config/alpha/elf.opt.urls                |    2 +
>  gcc/config/arc/arc-tables.opt.urls           |    2 +

[... etc .opt.urls particularly in gcc/config/*
autogenerated for each *.opt ...]

Sorry for barging in though I did try finding the relevant
discussion, but is committing this generated stuff necessary?
Is it because we don't want to depend on Python being
present at build time?

If nothing else, can you add a few lines to the commit
message why this can't be/is preferably not done at build
time?

brgds, H-P

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

* Re: [PATCH 0/4] v2 of Option handling: add documentation URLs
  2023-11-21  1:09         ` [PATCH 0/4] v2 of Option handling: add documentation URLs Hans-Peter Nilsson
@ 2023-11-21 13:57           ` David Malcolm
  2023-11-21 14:12             ` Tobias Burnus
  0 siblings, 1 reply; 47+ messages in thread
From: David Malcolm @ 2023-11-21 13:57 UTC (permalink / raw)
  To: Hans-Peter Nilsson; +Cc: joseph, gcc-patches

On Tue, 2023-11-21 at 02:09 +0100, Hans-Peter Nilsson wrote:
> > From: David Malcolm <dmalcolm@redhat.com>
> > Date: Thu, 16 Nov 2023 09:28:54 -0500
> 
> > How is this looking for trunk?
> > 
> > Thanks
> > Dave
> > 
> > 
> > David Malcolm (4):
> >   options: add gcc/regenerate-opt-urls.py
> >   Add generated .opt.urls files
> >   opts: add logic to generate options-urls.cc
> >   options: wire up options-urls.cc into gcc_urlifier
> > 
> >  gcc/Makefile.in                              |   29 +-
> >  gcc/ada/gcc-interface/lang.opt.urls          |   30 +
> >  gcc/analyzer/analyzer.opt.urls               |  206 ++
> >  gcc/c-family/c.opt.urls                      | 1409 ++++++++++++++
> >  gcc/common.opt.urls                          | 1832
> > ++++++++++++++++++
> >  gcc/config/aarch64/aarch64.opt.urls          |   84 +
> >  gcc/config/alpha/alpha.opt.urls              |   76 +
> >  gcc/config/alpha/elf.opt.urls                |    2 +
> >  gcc/config/arc/arc-tables.opt.urls           |    2 +
> 
> [... etc .opt.urls particularly in gcc/config/*
> autogenerated for each *.opt ...]
> 
> Sorry for barging in though I did try finding the relevant
> discussion, but is committing this generated stuff necessary?
> Is it because we don't want to depend on Python being
> present at build time?

Partly, yes, but also because this information is generated from the
generated HTML for the user manuals: gcc, gdc, and gfortran, and it
gets used to generate "optionlist", which is a dependency for all of
the rest of the "gcc" subdirectory.  Doing it automatically would make
the generation of the HTML docs for gcc, d and gfortran be a hard
dependency early on in the build, which seems to me to be a bad idea -
better to have this rarely-changing and non-critical information be
regenerated when it's needed, and not impose the requirement to build
the HTML docs for all these langs on all builds of gcc.

> 
> If nothing else, can you add a few lines to the commit
> message why this can't be/is preferably not done at build
> time?

The wording here:
https://gcc.gnu.org/pipermail/gcc-patches/2023-November/636060.html
may be what you're looking for.

Maybe that text (or something like it) should go in as a big comment at
the top of regenerate-opt-urls.py ?

Hope this clarifies things
Dave


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

* Re: [PATCH 0/4] v2 of Option handling: add documentation URLs
  2023-11-21 13:57           ` David Malcolm
@ 2023-11-21 14:12             ` Tobias Burnus
  2023-11-21 15:23               ` David Malcolm
  2023-11-21 23:43               ` Joseph Myers
  0 siblings, 2 replies; 47+ messages in thread
From: Tobias Burnus @ 2023-11-21 14:12 UTC (permalink / raw)
  To: David Malcolm, gcc-patches

On 21.11.23 14:57, David Malcolm wrote:
> On Tue, 2023-11-21 at 02:09 +0100, Hans-Peter Nilsson wrote:
>> Sorry for barging in though I did try finding the relevant
>> discussion, but is committing this generated stuff necessary?
>> Is it because we don't want to depend on Python being
>> present at build time?
> Partly, yes, [...]

I wonder how to ensure that this remains up to date. Should there be an
item at

https://gcc.gnu.org/branching.html and/or
https://gcc.gnu.org/releasing.html similar to the .pot generation?

Tobias

-----------------
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] 47+ messages in thread

* Re: [PATCH 0/4] v2 of Option handling: add documentation URLs
  2023-11-21 14:12             ` Tobias Burnus
@ 2023-11-21 15:23               ` David Malcolm
  2023-11-21 23:43               ` Joseph Myers
  1 sibling, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-11-21 15:23 UTC (permalink / raw)
  To: Tobias Burnus, gcc-patches

On Tue, 2023-11-21 at 15:12 +0100, Tobias Burnus wrote:
> On 21.11.23 14:57, David Malcolm wrote:
> > On Tue, 2023-11-21 at 02:09 +0100, Hans-Peter Nilsson wrote:
> > > Sorry for barging in though I did try finding the relevant
> > > discussion, but is committing this generated stuff necessary?
> > > Is it because we don't want to depend on Python being
> > > present at build time?
> > Partly, yes, [...]
> 
> I wonder how to ensure that this remains up to date. Should there be
> an
> item at
> 
> https://gcc.gnu.org/branching.html and/or
> https://gcc.gnu.org/releasing.html similar to the .pot generation?

Good point; the releasing.html's Preparations could have as point 6:

  Regenerate the .opt.urls files by running "make regenerate-opt-urls"
in the build/gcc directory.

or similar.

We should also probably recommend that people do that when adding a new
option; is there a documentation page for that?

Dave


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

* Re: [PATCH 0/4] v2 of Option handling: add documentation URLs
  2023-11-21 14:12             ` Tobias Burnus
  2023-11-21 15:23               ` David Malcolm
@ 2023-11-21 23:43               ` Joseph Myers
  2023-12-08 23:35                 ` David Malcolm
  1 sibling, 1 reply; 47+ messages in thread
From: Joseph Myers @ 2023-11-21 23:43 UTC (permalink / raw)
  To: Tobias Burnus; +Cc: David Malcolm, gcc-patches

On Tue, 21 Nov 2023, Tobias Burnus wrote:

> On 21.11.23 14:57, David Malcolm wrote:
> > On Tue, 2023-11-21 at 02:09 +0100, Hans-Peter Nilsson wrote:
> > > Sorry for barging in though I did try finding the relevant
> > > discussion, but is committing this generated stuff necessary?
> > > Is it because we don't want to depend on Python being
> > > present at build time?
> > Partly, yes, [...]
> 
> I wonder how to ensure that this remains up to date. Should there be an
> item at
> 
> https://gcc.gnu.org/branching.html and/or
> https://gcc.gnu.org/releasing.html similar to the .pot generation?

My suggestion earlier in the discussion was that it should be added to the 
post-commit CI discussed starting at 
<https://gcc.gnu.org/pipermail/gcc/2023-November/242835.html> (I think 
that CI is now in operation).  These are generated files that ought to be 
kept up to date with each commit that affects .opt files, unlike the .pot 
files where the expectation is that they should be up to date for releases 
and updated from time to time at other times for submission to the TP.

-- 
Joseph S. Myers
joseph@codesourcery.com

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

* Re: [PATCH 0/4] v2 of Option handling: add documentation URLs
  2023-11-21 23:43               ` Joseph Myers
@ 2023-12-08 23:35                 ` David Malcolm
  2023-12-10 23:35                   ` Mark Wielaard
  0 siblings, 1 reply; 47+ messages in thread
From: David Malcolm @ 2023-12-08 23:35 UTC (permalink / raw)
  To: Joseph Myers, Tobias Burnus, Mark Wielaard; +Cc: gcc-patches

On Tue, 2023-11-21 at 23:43 +0000, Joseph Myers wrote:
> On Tue, 21 Nov 2023, Tobias Burnus wrote:
> 
> > On 21.11.23 14:57, David Malcolm wrote:
> > > On Tue, 2023-11-21 at 02:09 +0100, Hans-Peter Nilsson wrote:
> > > > Sorry for barging in though I did try finding the relevant
> > > > discussion, but is committing this generated stuff necessary?
> > > > Is it because we don't want to depend on Python being
> > > > present at build time?
> > > Partly, yes, [...]
> > 
> > I wonder how to ensure that this remains up to date. Should there
> > be an
> > item at
> > 
> > https://gcc.gnu.org/branching.html and/or
> > https://gcc.gnu.org/releasing.html similar to the .pot generation?
> 
> My suggestion earlier in the discussion was that it should be added
> to the 
> post-commit CI discussed starting at 
> <https://gcc.gnu.org/pipermail/gcc/2023-November/242835.html> (I
> think 
> that CI is now in operation).  These are generated files that ought
> to be 
> kept up to date with each commit that affects .opt files, unlike the
> .pot 
> files where the expectation is that they should be up to date for
> releases 
> and updated from time to time at other times for submission to the
> TP.

I had a go at scripting the testing of this, but I am terrible at shell
scripts (maybe I should use Python?).  Here's what I have so far:

$ cat contrib/regenerate-index-urls.sh

set -x

SRC_DIR=$1
BUILD_DIR=$2
NUM_JOBS=$3

# FIXME: error-checking!

mkdir -p $BUILD_DIR || exit 1
cd $BUILD_DIR
$SRC_DIR/configure --disable-bootstrap --enable-languages=c,d,fortran || exit 2
make html-gcc -j$NUM_JOBS || exit 3
cd gcc || exit 4
make regenerate-opt-urls || exit 5
cd $SRC_DIR
(git diff $1 > /dev/null ) && echo "regenerate-opt-urls needs to be run and the results committed" || exit 6

# e.g.
#  time bash contrib/regenerate-index-urls.sh $(pwd) $(pwd)/../build-ci 64

This takes about 100 seconds of wallclock on my 64-core box (mostly
configuring gcc, which as well as the usual sequence of unparallelized
tests seems to require building libiberty and lto-plugin).  Is that
something we want to do on every commit?  Is implementing the CI a
blocker for getting the patches in? (if so, I'll likely need some help)

As it turned out, I hadn't regenerated the .opt.urls in my working copy
for a couple of weeks, leading to a correct-looking patch containing
things like:

@@ -154,8 +157,8 @@ UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlS
 Wbuiltin-macro-redefined
 UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-macro-redefined)
 
-Wc11-c2x-compat
-UrlSuffix(gcc/Warning-Options.html#index-Wc11-c2x-compat)
+Wc11-c23-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc11-c23-compat)
 
 Wc90-c99-compat
 UrlSuffix(gcc/Warning-Options.html#index-Wc90-c99-compat)

so I think the idea works; and the only issue for not regenerating was
some missing/out-of-date URLs.

Dave



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

* Re: [PATCH 0/4] v2 of Option handling: add documentation URLs
  2023-12-08 23:35                 ` David Malcolm
@ 2023-12-10 23:35                   ` Mark Wielaard
  2023-12-14 15:01                     ` [PATCH 0/4] v3 of: " David Malcolm
  0 siblings, 1 reply; 47+ messages in thread
From: Mark Wielaard @ 2023-12-10 23:35 UTC (permalink / raw)
  To: David Malcolm; +Cc: Joseph Myers, Tobias Burnus, gcc-patches

Hi David,

On Fri, Dec 08, 2023 at 06:35:56PM -0500, David Malcolm wrote:
> On Tue, 2023-11-21 at 23:43 +0000, Joseph Myers wrote:
> > On Tue, 21 Nov 2023, Tobias Burnus wrote:
> > 
> > > On 21.11.23 14:57, David Malcolm wrote:
> > > > On Tue, 2023-11-21 at 02:09 +0100, Hans-Peter Nilsson wrote:
> > > > > Sorry for barging in though I did try finding the relevant
> > > > > discussion, but is committing this generated stuff necessary?
> > > > > Is it because we don't want to depend on Python being
> > > > > present at build time?
> > > > Partly, yes, [...]
> > > 
> > > I wonder how to ensure that this remains up to date. Should there
> > > be an item at
> > > 
> > > https://gcc.gnu.org/branching.html and/or
> > > https://gcc.gnu.org/releasing.html similar to the .pot generation?
> >
> > My suggestion earlier in the discussion was that it should be
> > added to the post-commit CI discussed starting at
> > <https://gcc.gnu.org/pipermail/gcc/2023-November/242835.html> (I
> > think that CI is now in operation).  These are generated files
> > that ought to be kept up to date with each commit that affects
> > .opt files, unlike the .pot files where the expectation is that
> > they should be up to date for releases and updated from time to
> > time at other times for submission to the TP.
> > 
> I had a go at scripting the testing of this, but I am terrible at shell
> scripts (maybe I should use Python?).  Here's what I have so far:
> 
> $ cat contrib/regenerate-index-urls.sh
> 
> set -x
> 
> SRC_DIR=$1
> BUILD_DIR=$2
> NUM_JOBS=$3
> 
> # FIXME: error-checking!
> 
> mkdir -p $BUILD_DIR || exit 1
> cd $BUILD_DIR
> $SRC_DIR/configure --disable-bootstrap --enable-languages=c,d,fortran || exit 2
> make html-gcc -j$NUM_JOBS || exit 3
> cd gcc || exit 4
> make regenerate-opt-urls || exit 5
> cd $SRC_DIR
> (git diff $1 > /dev/null ) && echo "regenerate-opt-urls needs to be run and the results committed" || exit 6
> 
> # e.g.
> #  time bash contrib/regenerate-index-urls.sh $(pwd) $(pwd)/../build-ci 64
> 
> This takes about 100 seconds of wallclock on my 64-core box (mostly
> configuring gcc, which as well as the usual sequence of unparallelized
> tests seems to require building libiberty and lto-plugin).  Is that
> something we want to do on every commit?  Is implementing the CI a
> blocker for getting the patches in? (if so, I'll likely need some help)

The CI builers don't have 64-cores, but a couple of hundred seconds
shouldn't be an issue to do on each commit (OSUOSL just got us a
second x86_64 container builder for larger jobs). The above can easily
be added to the existing gcc-autoregen builder:
https://builder.sourceware.org/buildbot/#/builders/gcc-autoregen
https://sourceware.org/cgit/builder/tree/builder/master.cfg#n3453

Once your patch is in please feel free to sent an email to
buildbot@sourceware.org
https://sourceware.org/mailman/listinfo/buildbot
And we'll add the above build steps and update the autotools
Containerfile to include the fortran (gfortran?) and d (gdc?) build
dependencies.

Cheers,

Mark

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

* [PATCH 0/4] v3 of: Option handling: add documentation URLs
  2023-12-10 23:35                   ` Mark Wielaard
@ 2023-12-14 15:01                     ` David Malcolm
  2023-12-14 15:01                       ` [PATCH 1/4; v3] options: add gcc/regenerate-opt-urls.py David Malcolm
                                         ` (5 more replies)
  0 siblings, 6 replies; 47+ messages in thread
From: David Malcolm @ 2023-12-14 15:01 UTC (permalink / raw)
  To: Joseph Myers; +Cc: Mark Wielaard, Tobias Burnus, gcc-patches, David Malcolm

> Hi David,
> 
> On Fri, Dec 08, 2023 at 06:35:56PM -0500, David Malcolm wrote:
> > On Tue, 2023-11-21 at 23:43 +0000, Joseph Myers wrote:
> > > On Tue, 21 Nov 2023, Tobias Burnus wrote:
> > > 
> > > > On 21.11.23 14:57, David Malcolm wrote:
> > > > > On Tue, 2023-11-21 at 02:09 +0100, Hans-Peter Nilsson wrote:
> > > > > > Sorry for barging in though I did try finding the relevant
> > > > > > discussion, but is committing this generated stuff necessary?
> > > > > > Is it because we don't want to depend on Python being
> > > > > > present at build time?
> > > > > Partly, yes, [...]
> > > > 
> > > > I wonder how to ensure that this remains up to date. Should there
> > > > be an item at
> > > > 
> > > > https://gcc.gnu.org/branching.html and/or
> > > > https://gcc.gnu.org/releasing.html similar to the .pot generation?
> > >
> > > My suggestion earlier in the discussion was that it should be
> > > added to the post-commit CI discussed starting at
> > > <https://gcc.gnu.org/pipermail/gcc/2023-November/242835.html> (I
> > > think that CI is now in operation).  These are generated files
> > > that ought to be kept up to date with each commit that affects
> > > .opt files, unlike the .pot files where the expectation is that
> > > they should be up to date for releases and updated from time to
> > > time at other times for submission to the TP.
> > > 
> > I had a go at scripting the testing of this, but I am terrible at shell
> > scripts (maybe I should use Python?).  Here's what I have so far:
> > 
> > $ cat contrib/regenerate-index-urls.sh
> > 
> > set -x
> > 
> > SRC_DIR=$1
> > BUILD_DIR=$2
> > NUM_JOBS=$3
> > 
> > # FIXME: error-checking!
> > 
> > mkdir -p $BUILD_DIR || exit 1
> > cd $BUILD_DIR
> > $SRC_DIR/configure --disable-bootstrap --enable-languages=c,d,fortran || exit 2
> > make html-gcc -j$NUM_JOBS || exit 3
> > cd gcc || exit 4
> > make regenerate-opt-urls || exit 5
> > cd $SRC_DIR
> > (git diff $1 > /dev/null ) && echo "regenerate-opt-urls needs to be run and the results committed" || exit 6
> > 
> > # e.g.
> > #  time bash contrib/regenerate-index-urls.sh $(pwd) $(pwd)/../build-ci 64
> > 
> > This takes about 100 seconds of wallclock on my 64-core box (mostly
> > configuring gcc, which as well as the usual sequence of unparallelized
> > tests seems to require building libiberty and lto-plugin).  Is that
> > something we want to do on every commit?  Is implementing the CI a
> > blocker for getting the patches in? (if so, I'll likely need some help)
> 
> The CI builers don't have 64-cores, but a couple of hundred seconds
> shouldn't be an issue to do on each commit (OSUOSL just got us a
> second x86_64 container builder for larger jobs). The above can easily
> be added to the existing gcc-autoregen builder:
> https://builder.sourceware.org/buildbot/#/builders/gcc-autoregen
> https://sourceware.org/cgit/builder/tree/builder/master.cfg#n3453
> 
> Once your patch is in please feel free to sent an email to
> buildbot@sourceware.org
> https://sourceware.org/mailman/listinfo/buildbot
> And we'll add the above build steps and update the autotools
> Containerfile to include the fortran (gfortran?) and d (gdc?) build
> dependencies.
> 
> Cheers,
> 
> Mark

Thanks Mark.

Joseph: it seems that we have a way to add CI for this.

I refreshed the patches and successfully bootstrapped & regrtested them
on x86_64-pc-linux-gnu; here's the v3 version of them.

Are these OK for trunk, assuming I followup with adding CI for this?
(that said, I disappear for the rest of 2023 at the end of this week, so
I'd work on the CI in early January)

Thanks
Dave


David Malcolm (4):
  options: add gcc/regenerate-opt-urls.py
  Add generated .opt.urls files
  opts: add logic to generate options-urls.cc
  options: wire up options-urls.cc into gcc_urlifier

 gcc/Makefile.in                              |   34 +-
 gcc/ada/gcc-interface/lang.opt.urls          |   30 +
 gcc/analyzer/analyzer.opt.urls               |  206 ++
 gcc/c-family/c.opt.urls                      | 1409 ++++++++++++++
 gcc/common.opt.urls                          | 1832 ++++++++++++++++++
 gcc/config/aarch64/aarch64.opt.urls          |   84 +
 gcc/config/alpha/alpha.opt.urls              |   76 +
 gcc/config/alpha/elf.opt.urls                |    2 +
 gcc/config/arc/arc-tables.opt.urls           |    2 +
 gcc/config/arc/arc.opt.urls                  |  260 +++
 gcc/config/arm/arm-tables.opt.urls           |    2 +
 gcc/config/arm/arm.opt.urls                  |  149 ++
 gcc/config/arm/vxworks.opt.urls              |    2 +
 gcc/config/avr/avr.opt.urls                  |   71 +
 gcc/config/bfin/bfin.opt.urls                |   61 +
 gcc/config/bpf/bpf.opt.urls                  |   35 +
 gcc/config/c6x/c6x-tables.opt.urls           |    2 +
 gcc/config/c6x/c6x.opt.urls                  |   18 +
 gcc/config/cris/cris.opt.urls                |   65 +
 gcc/config/cris/elf.opt.urls                 |    8 +
 gcc/config/csky/csky.opt.urls                |  104 +
 gcc/config/csky/csky_tables.opt.urls         |    2 +
 gcc/config/darwin.opt.urls                   |  224 +++
 gcc/config/dragonfly.opt.urls                |    9 +
 gcc/config/epiphany/epiphany.opt.urls        |   52 +
 gcc/config/fr30/fr30.opt.urls                |    8 +
 gcc/config/freebsd.opt.urls                  |    9 +
 gcc/config/frv/frv.opt.urls                  |  111 ++
 gcc/config/ft32/ft32.opt.urls                |   20 +
 gcc/config/fused-madd.opt.urls               |    4 +
 gcc/config/g.opt.urls                        |    5 +
 gcc/config/gcn/gcn.opt.urls                  |   23 +
 gcc/config/gnu-user.opt.urls                 |    9 +
 gcc/config/h8300/h8300.opt.urls              |   29 +
 gcc/config/hpux11.opt.urls                   |    6 +
 gcc/config/i386/cygming.opt.urls             |   30 +
 gcc/config/i386/cygwin.opt.urls              |    6 +
 gcc/config/i386/djgpp.opt.urls               |    2 +
 gcc/config/i386/i386.opt.urls                |  602 ++++++
 gcc/config/i386/mingw-w64.opt.urls           |    5 +
 gcc/config/i386/mingw.opt.urls               |   12 +
 gcc/config/i386/nto.opt.urls                 |    5 +
 gcc/config/ia64/ia64.opt.urls                |  122 ++
 gcc/config/ia64/ilp32.opt.urls               |    8 +
 gcc/config/ia64/vms.opt.urls                 |    2 +
 gcc/config/iq2000/iq2000.opt.urls            |   14 +
 gcc/config/linux-android.opt.urls            |   11 +
 gcc/config/linux.opt.urls                    |   14 +
 gcc/config/lm32/lm32.opt.urls                |   14 +
 gcc/config/loongarch/loongarch.opt.urls      |   64 +
 gcc/config/lynx.opt.urls                     |    5 +
 gcc/config/m32c/m32c.opt.urls                |    8 +
 gcc/config/m32r/m32r.opt.urls                |   27 +
 gcc/config/m68k/ieee.opt.urls                |    4 +
 gcc/config/m68k/m68k-tables.opt.urls         |    2 +
 gcc/config/m68k/m68k.opt.urls                |  107 +
 gcc/config/m68k/uclinux.opt.urls             |    2 +
 gcc/config/mcore/mcore.opt.urls              |   38 +
 gcc/config/microblaze/microblaze.opt.urls    |   59 +
 gcc/config/mips/mips-tables.opt.urls         |    2 +
 gcc/config/mips/mips.opt.urls                |  269 +++
 gcc/config/mips/sde.opt.urls                 |    2 +
 gcc/config/mmix/mmix.opt.urls                |   44 +
 gcc/config/mn10300/mn10300.opt.urls          |   32 +
 gcc/config/moxie/moxie.opt.urls              |   14 +
 gcc/config/msp430/msp430.opt.urls            |   53 +
 gcc/config/nds32/nds32-elf.opt.urls          |    5 +
 gcc/config/nds32/nds32-linux.opt.urls        |    5 +
 gcc/config/nds32/nds32.opt.urls              |   57 +
 gcc/config/netbsd-elf.opt.urls               |    5 +
 gcc/config/netbsd.opt.urls                   |    6 +
 gcc/config/nios2/elf.opt.urls                |   14 +
 gcc/config/nios2/nios2.opt.urls              |   50 +
 gcc/config/nvptx/nvptx-gen.opt.urls          |    2 +
 gcc/config/nvptx/nvptx.opt.urls              |   29 +
 gcc/config/openbsd.opt.urls                  |    6 +
 gcc/config/or1k/elf.opt.urls                 |    8 +
 gcc/config/or1k/or1k.opt.urls                |   46 +
 gcc/config/pa/pa-hpux.opt.urls               |   11 +
 gcc/config/pa/pa-hpux1010.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1111.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1131.opt.urls           |    2 +
 gcc/config/pa/pa.opt.urls                    |   71 +
 gcc/config/pa/pa64-hpux.opt.urls             |    8 +
 gcc/config/pdp11/pdp11.opt.urls              |   41 +
 gcc/config/pru/pru.opt.urls                  |   17 +
 gcc/config/riscv/riscv.opt.urls              |   88 +
 gcc/config/rl78/rl78.opt.urls                |   31 +
 gcc/config/rpath.opt.urls                    |    2 +
 gcc/config/rs6000/476.opt.urls               |    2 +
 gcc/config/rs6000/aix64.opt.urls             |   23 +
 gcc/config/rs6000/darwin.opt.urls            |   14 +
 gcc/config/rs6000/linux64.opt.urls           |    4 +
 gcc/config/rs6000/rs6000-tables.opt.urls     |    2 +
 gcc/config/rs6000/rs6000.opt.urls            |  214 ++
 gcc/config/rs6000/sysv4.opt.urls             |   87 +
 gcc/config/rtems.opt.urls                    |    6 +
 gcc/config/rx/elf.opt.urls                   |   14 +
 gcc/config/rx/rx.opt.urls                    |   54 +
 gcc/config/s390/s390.opt.urls                |   92 +
 gcc/config/s390/tpf.opt.urls                 |    8 +
 gcc/config/sh/sh.opt.urls                    |  174 ++
 gcc/config/sh/superh.opt.urls                |    4 +
 gcc/config/sol2.opt.urls                     |   21 +
 gcc/config/sparc/long-double-switch.opt.urls |    6 +
 gcc/config/sparc/sparc.opt.urls              |  108 ++
 gcc/config/stormy16/stormy16.opt.urls        |    5 +
 gcc/config/v850/v850.opt.urls                |   60 +
 gcc/config/vax/elf.opt.urls                  |    2 +
 gcc/config/vax/vax.opt.urls                  |   10 +
 gcc/config/visium/visium.opt.urls            |   29 +
 gcc/config/vms/vms.opt.urls                  |    8 +
 gcc/config/vxworks-smp.opt.urls              |    5 +
 gcc/config/vxworks.opt.urls                  |   20 +
 gcc/config/xtensa/elf.opt.urls               |    5 +
 gcc/config/xtensa/uclinux.opt.urls           |    2 +
 gcc/config/xtensa/xtensa.opt.urls            |   37 +
 gcc/d/lang.opt.urls                          |  223 +++
 gcc/diagnostic.h                             |    6 +-
 gcc/doc/options.texi                         |   26 +
 gcc/doc/sourcebuild.texi                     |    4 +
 gcc/fortran/lang.opt.urls                    |  161 ++
 gcc/gcc-urlifier.cc                          |  106 +-
 gcc/gcc-urlifier.def                         |    2 -
 gcc/gcc-urlifier.h                           |    2 +-
 gcc/gcc.cc                                   |    2 +-
 gcc/go/lang.opt.urls                         |   17 +
 gcc/lto/lang.opt.urls                        |    8 +
 gcc/m2/lang.opt.urls                         |  118 ++
 gcc/opt-functions.awk                        |   15 +
 gcc/options-urls-cc-gen.awk                  |  105 +
 gcc/opts-diagnostic.h                        |    3 +-
 gcc/opts.cc                                  |   95 +-
 gcc/opts.h                                   |    8 +
 gcc/params.opt.urls                          |    2 +
 gcc/regenerate-opt-urls.py                   |  408 ++++
 gcc/rust/lang.opt.urls                       |   29 +
 gcc/testsuite/lib/gcc-dg.exp                 |    6 +
 gcc/toplev.cc                                |    5 +-
 139 files changed, 9351 insertions(+), 66 deletions(-)
 create mode 100644 gcc/ada/gcc-interface/lang.opt.urls
 create mode 100644 gcc/analyzer/analyzer.opt.urls
 create mode 100644 gcc/c-family/c.opt.urls
 create mode 100644 gcc/common.opt.urls
 create mode 100644 gcc/config/aarch64/aarch64.opt.urls
 create mode 100644 gcc/config/alpha/alpha.opt.urls
 create mode 100644 gcc/config/alpha/elf.opt.urls
 create mode 100644 gcc/config/arc/arc-tables.opt.urls
 create mode 100644 gcc/config/arc/arc.opt.urls
 create mode 100644 gcc/config/arm/arm-tables.opt.urls
 create mode 100644 gcc/config/arm/arm.opt.urls
 create mode 100644 gcc/config/arm/vxworks.opt.urls
 create mode 100644 gcc/config/avr/avr.opt.urls
 create mode 100644 gcc/config/bfin/bfin.opt.urls
 create mode 100644 gcc/config/bpf/bpf.opt.urls
 create mode 100644 gcc/config/c6x/c6x-tables.opt.urls
 create mode 100644 gcc/config/c6x/c6x.opt.urls
 create mode 100644 gcc/config/cris/cris.opt.urls
 create mode 100644 gcc/config/cris/elf.opt.urls
 create mode 100644 gcc/config/csky/csky.opt.urls
 create mode 100644 gcc/config/csky/csky_tables.opt.urls
 create mode 100644 gcc/config/darwin.opt.urls
 create mode 100644 gcc/config/dragonfly.opt.urls
 create mode 100644 gcc/config/epiphany/epiphany.opt.urls
 create mode 100644 gcc/config/fr30/fr30.opt.urls
 create mode 100644 gcc/config/freebsd.opt.urls
 create mode 100644 gcc/config/frv/frv.opt.urls
 create mode 100644 gcc/config/ft32/ft32.opt.urls
 create mode 100644 gcc/config/fused-madd.opt.urls
 create mode 100644 gcc/config/g.opt.urls
 create mode 100644 gcc/config/gcn/gcn.opt.urls
 create mode 100644 gcc/config/gnu-user.opt.urls
 create mode 100644 gcc/config/h8300/h8300.opt.urls
 create mode 100644 gcc/config/hpux11.opt.urls
 create mode 100644 gcc/config/i386/cygming.opt.urls
 create mode 100644 gcc/config/i386/cygwin.opt.urls
 create mode 100644 gcc/config/i386/djgpp.opt.urls
 create mode 100644 gcc/config/i386/i386.opt.urls
 create mode 100644 gcc/config/i386/mingw-w64.opt.urls
 create mode 100644 gcc/config/i386/mingw.opt.urls
 create mode 100644 gcc/config/i386/nto.opt.urls
 create mode 100644 gcc/config/ia64/ia64.opt.urls
 create mode 100644 gcc/config/ia64/ilp32.opt.urls
 create mode 100644 gcc/config/ia64/vms.opt.urls
 create mode 100644 gcc/config/iq2000/iq2000.opt.urls
 create mode 100644 gcc/config/linux-android.opt.urls
 create mode 100644 gcc/config/linux.opt.urls
 create mode 100644 gcc/config/lm32/lm32.opt.urls
 create mode 100644 gcc/config/loongarch/loongarch.opt.urls
 create mode 100644 gcc/config/lynx.opt.urls
 create mode 100644 gcc/config/m32c/m32c.opt.urls
 create mode 100644 gcc/config/m32r/m32r.opt.urls
 create mode 100644 gcc/config/m68k/ieee.opt.urls
 create mode 100644 gcc/config/m68k/m68k-tables.opt.urls
 create mode 100644 gcc/config/m68k/m68k.opt.urls
 create mode 100644 gcc/config/m68k/uclinux.opt.urls
 create mode 100644 gcc/config/mcore/mcore.opt.urls
 create mode 100644 gcc/config/microblaze/microblaze.opt.urls
 create mode 100644 gcc/config/mips/mips-tables.opt.urls
 create mode 100644 gcc/config/mips/mips.opt.urls
 create mode 100644 gcc/config/mips/sde.opt.urls
 create mode 100644 gcc/config/mmix/mmix.opt.urls
 create mode 100644 gcc/config/mn10300/mn10300.opt.urls
 create mode 100644 gcc/config/moxie/moxie.opt.urls
 create mode 100644 gcc/config/msp430/msp430.opt.urls
 create mode 100644 gcc/config/nds32/nds32-elf.opt.urls
 create mode 100644 gcc/config/nds32/nds32-linux.opt.urls
 create mode 100644 gcc/config/nds32/nds32.opt.urls
 create mode 100644 gcc/config/netbsd-elf.opt.urls
 create mode 100644 gcc/config/netbsd.opt.urls
 create mode 100644 gcc/config/nios2/elf.opt.urls
 create mode 100644 gcc/config/nios2/nios2.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx-gen.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx.opt.urls
 create mode 100644 gcc/config/openbsd.opt.urls
 create mode 100644 gcc/config/or1k/elf.opt.urls
 create mode 100644 gcc/config/or1k/or1k.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1010.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1111.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1131.opt.urls
 create mode 100644 gcc/config/pa/pa.opt.urls
 create mode 100644 gcc/config/pa/pa64-hpux.opt.urls
 create mode 100644 gcc/config/pdp11/pdp11.opt.urls
 create mode 100644 gcc/config/pru/pru.opt.urls
 create mode 100644 gcc/config/riscv/riscv.opt.urls
 create mode 100644 gcc/config/rl78/rl78.opt.urls
 create mode 100644 gcc/config/rpath.opt.urls
 create mode 100644 gcc/config/rs6000/476.opt.urls
 create mode 100644 gcc/config/rs6000/aix64.opt.urls
 create mode 100644 gcc/config/rs6000/darwin.opt.urls
 create mode 100644 gcc/config/rs6000/linux64.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000-tables.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000.opt.urls
 create mode 100644 gcc/config/rs6000/sysv4.opt.urls
 create mode 100644 gcc/config/rtems.opt.urls
 create mode 100644 gcc/config/rx/elf.opt.urls
 create mode 100644 gcc/config/rx/rx.opt.urls
 create mode 100644 gcc/config/s390/s390.opt.urls
 create mode 100644 gcc/config/s390/tpf.opt.urls
 create mode 100644 gcc/config/sh/sh.opt.urls
 create mode 100644 gcc/config/sh/superh.opt.urls
 create mode 100644 gcc/config/sol2.opt.urls
 create mode 100644 gcc/config/sparc/long-double-switch.opt.urls
 create mode 100644 gcc/config/sparc/sparc.opt.urls
 create mode 100644 gcc/config/stormy16/stormy16.opt.urls
 create mode 100644 gcc/config/v850/v850.opt.urls
 create mode 100644 gcc/config/vax/elf.opt.urls
 create mode 100644 gcc/config/vax/vax.opt.urls
 create mode 100644 gcc/config/visium/visium.opt.urls
 create mode 100644 gcc/config/vms/vms.opt.urls
 create mode 100644 gcc/config/vxworks-smp.opt.urls
 create mode 100644 gcc/config/vxworks.opt.urls
 create mode 100644 gcc/config/xtensa/elf.opt.urls
 create mode 100644 gcc/config/xtensa/uclinux.opt.urls
 create mode 100644 gcc/config/xtensa/xtensa.opt.urls
 create mode 100644 gcc/d/lang.opt.urls
 create mode 100644 gcc/fortran/lang.opt.urls
 create mode 100644 gcc/go/lang.opt.urls
 create mode 100644 gcc/lto/lang.opt.urls
 create mode 100644 gcc/m2/lang.opt.urls
 create mode 100644 gcc/options-urls-cc-gen.awk
 create mode 100644 gcc/params.opt.urls
 create mode 100755 gcc/regenerate-opt-urls.py
 create mode 100644 gcc/rust/lang.opt.urls

-- 
2.26.3


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

* [PATCH 1/4; v3] options: add gcc/regenerate-opt-urls.py
  2023-12-14 15:01                     ` [PATCH 0/4] v3 of: " David Malcolm
@ 2023-12-14 15:01                       ` David Malcolm
  2023-12-20  0:24                         ` Joseph Myers
  2023-12-14 15:01                       ` [PATCH 2/4; v3] Add generated .opt.urls files David Malcolm
                                         ` (4 subsequent siblings)
  5 siblings, 1 reply; 47+ messages in thread
From: David Malcolm @ 2023-12-14 15:01 UTC (permalink / raw)
  To: Joseph Myers; +Cc: Mark Wielaard, Tobias Burnus, gcc-patches, David Malcolm

Changed in v3:
- Makefile.in: added OPT_URLS_HTML_DEPS and a comment

Changed in v2:
- added convenience targets to Makefile for regenerating the .opt.urls
  files, and for running unit tests for the generation code
- parse gdc and gfortran documentation, and create LangUrlSuffix_{lang}
directives for language-specific URLs.
- add documentation to sourcebuild.texi

gcc/ChangeLog:
	* Makefile.in (OPT_URLS_HTML_DEPS): New.
	(regenerate-opt-urls): New target.
	(regenerate-opt-urls-unit-test): New target.
	* doc/options.texi (Option properties): Add UrlSuffix and
	description of regenerate-opt-urls.py.  Add LangUrlSuffix_*.
	* doc/sourcebuild.texi (Anatomy of a Target Back End): Add
	reference to regenerate-opt-urls.py's TARGET_SPECIFIC_PAGES.
	* regenerate-opt-urls.py: New file.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
 gcc/Makefile.in            |  16 ++
 gcc/doc/options.texi       |  26 +++
 gcc/doc/sourcebuild.texi   |   4 +
 gcc/regenerate-opt-urls.py | 408 +++++++++++++++++++++++++++++++++++++
 4 files changed, 454 insertions(+)
 create mode 100755 gcc/regenerate-opt-urls.py

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index f284c1387e27..d85953495ce8 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -3611,6 +3611,22 @@ $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES)
 	DESTDIR=$(@D) \
 	$(SHELL) $(srcdir)/doc/install.texi2html
 
+# Regenerate the .opt.urls files from the generated html, and from the .opt
+# files.  Doing so requires all languages that have their own HTML manuals
+# to be enabled.
+.PHONY: regenerate-opt-urls
+OPT_URLS_HTML_DEPS = $(build_htmldir)/gcc/Option-Index.html \
+	$(build_htmldir)/gdc/Option-Index.html \
+	$(build_htmldir)/gfortran/Option-Index.html
+
+regenerate-opt-urls: $(srcdir)/regenerate-opt-urls.py $(OPT_URLS_HTML_DEPS)
+	$(srcdir)/regenerate-opt-urls.py $(build_htmldir) $(shell dirname $(srcdir))
+
+# Run the unit tests for regenerate-opt-urls.py
+.PHONY: regenerate-opt-urls-unit-test
+regenerate-opt-urls-unit-test: $(OPT_URLS_HTML_DEPS)
+	$(srcdir)/regenerate-opt-urls.py $(build_htmldir) $(shell dirname $(srcdir)) --unit-test
+
 MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 \
            doc/fsf-funding.7 doc/gcov-tool.1 doc/gcov-dump.1 \
 	   $(if $(filter yes,@enable_lto@),doc/lto-dump.1)
diff --git a/gcc/doc/options.texi b/gcc/doc/options.texi
index 715f0a1479c7..37d7ecc1477d 100644
--- a/gcc/doc/options.texi
+++ b/gcc/doc/options.texi
@@ -597,4 +597,30 @@ This warning option corresponds to @code{cpplib.h} warning reason code
 @var{CPP_W_Enum}.  This should only be used for warning options of the
 C-family front-ends.
 
+@item UrlSuffix(@var{url_suffix})
+Adjacent to each human-written @code{.opt} file in the source tree is
+a corresponding file with a @code{.opt.urls} extension.  These files
+contain @code{UrlSuffix} directives giving the ending part of the URL
+for the documentation of the option, such as:
+
+@smallexample
+Wabi-tag
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
+@end smallexample
+
+These URL suffixes are relative to @code{DOCUMENTATION_ROOT_URL}.
+
+There files are generated from the @code{.opt} files and the generated
+HTML documentation by @code{regenerate-opt-urls.py}, and should be
+regenerated when adding new options, via manually invoking
+@code{make regenerate-opt-urls}.
+
+@item LangUrlSuffix_@var{lang}(@var{url_suffix})
+In addition to @code{UrlSuffix} directives, @code{regenerate-opt-urls.py}
+can generate language-specific URLs, such as:
+
+@smallexample
+LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+@end smallexample
+
 @end table
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index 26a7e9c35070..9a394b3e2c77 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -813,6 +813,10 @@ options supported by this target (@pxref{Run-time Target, , Run-time
 Target Specification}).  This means both entries in the summary table
 of options and details of the individual options.
 @item
+An entry in @file{gcc/regenerate-opt-urls.py}'s TARGET_SPECIFIC_PAGES
+dictionary mapping from target-specific HTML documentation pages
+to the target specific source directory.
+@item
 Documentation in @file{gcc/doc/extend.texi} for any target-specific
 attributes supported (@pxref{Target Attributes, , Defining
 target-specific uses of @code{__attribute__}}), including where the
diff --git a/gcc/regenerate-opt-urls.py b/gcc/regenerate-opt-urls.py
new file mode 100755
index 000000000000..b123fc57c7b9
--- /dev/null
+++ b/gcc/regenerate-opt-urls.py
@@ -0,0 +1,408 @@
+#!/usr/bin/env python3
+
+# Copyright (C) 2023 Free Software Foundation, Inc.
+#
+# Script to regenerate FOO.opt.urls files for each FOO.opt in the
+# source tree.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.  */
+
+DESCRIPTION = """
+Parses the generated HTML (from "make html") to locate anchors
+for options, then parses the .opt files within the source tree,
+and generates a .opt.urls in the source tree for each .opt file,
+giving URLs for each option, where it can.
+
+Usage (from build/gcc subdirectory):
+  ../../src/gcc/regenerate-opt-urls.py HTML/gcc-14.0.0/ ../../src
+
+To run unit tests:
+  ../../src/gcc/regenerate-opt-urls.py HTML/gcc-14.0.0/ ../../src --unit-test
+"""
+
+import argparse
+import json
+import os
+from pathlib import Path
+from pprint import pprint
+import sys
+import re
+import unittest
+
+def canonicalize_option_name(option_name):
+    if option_name.endswith('='):
+        option_name = option_name[0:-1]
+    return option_name
+
+
+def canonicalize_url_suffix(url_suffix):
+    """
+    Various options have anchors for both the positive and
+    negative form.  For example -Wcpp has both:
+      'gcc/Warning-Options.html#index-Wno-cpp'
+      'gcc/Warning-Options.html#index-Wcpp'
+
+    Return a canonicalized version of the url_suffix that
+    strips out any "no-" prefixes, for use in deduplication.
+    Note that the resulting url suffix might not correspond to
+    an actual anchor in the HTML.
+    """
+    url_suffix = re.sub('index-Wno-', 'index-W', url_suffix)
+    url_suffix = re.sub('index-fno-', 'index-f', url_suffix)
+    url_suffix = re.sub('_003d$', '', url_suffix)
+    url_suffix = re.sub('-([0-9]+)$', '', url_suffix)
+    return url_suffix
+
+
+class Index:
+    def __init__(self):
+        # Map from language (or None) to map from option name to set of URL suffixes
+        self.entries = {}
+
+    def add_entry(self, matched_text, url_suffix, language, verbose=False):
+        # TODO: use language
+        if 'Attributes.html' in url_suffix:
+            return
+        matched_text = canonicalize_option_name(matched_text)
+        if language not in self.entries:
+            self.entries[language] = {}
+        per_lang_entries = self.entries[language]
+        if matched_text in per_lang_entries:
+            # Partition by canonicalized url_suffixes; add the
+            # first url_suffix in each such partition.
+            c_new = canonicalize_url_suffix(url_suffix)
+            for entry in per_lang_entries[matched_text]:
+                c_entry = canonicalize_url_suffix(entry)
+                if c_new == c_entry:
+                    return
+            per_lang_entries[matched_text].add(url_suffix)
+        else:
+            per_lang_entries[matched_text] = set([url_suffix])
+
+    def get_languages(self):
+        return self.entries.keys()
+
+    def get_url_suffixes(self, text, language=None):
+        text = canonicalize_option_name(text)
+        per_lang_entries = self.entries.get(language)
+        if per_lang_entries:
+            return per_lang_entries.get(text)
+
+    def parse_option_index(self, input_filename, language, verbose=False):
+        with open(input_filename) as f:
+            dirname = input_filename.parent.name
+            for line in f:
+                self.parse_html_line_option_index(dirname, line, language, verbose)
+
+    def parse_html_line_option_index(self, dirname, line, language, verbose=False):
+        if verbose:
+            print(repr(line))
+
+        # Update for this in the GCC website's bin/preprocess process_html_file:
+        #   | sed -e 's/_002d/-/g' -e 's/_002a/*/g' \
+        line = line.replace('_002d', '-')
+        line = line.replace('_002a', '*')
+
+        # e.g. <a href="Optimize-Options.html#index-fmodulo_002dsched"><code>fmodulo-sched</code></a>
+        m = re.search(r'<a href="([\S]+)"><code>([\S]+)</code></a>', line)
+        if not m:
+            return
+        if verbose:
+            print(m.groups())
+        url_suffix, index_text = m.groups()
+        #print(f'{url_suffix=} {index_text=}')
+        option = '-' + index_text
+
+        # Strip off "no-" prefixes from options
+        if option[:5] == '-Wno-':
+            option = '-W' + option[5:]
+        if option[:5] == '-fno-':
+            option = '-f' + option[5:]
+
+        url_suffix = dirname + '/' + url_suffix
+        self.add_entry(option, url_suffix, language, verbose)
+
+
+class TestParsingIndex(unittest.TestCase):
+    def test_parse_line(self):
+        index = Index()
+        index.parse_html_line_option_index('gcc',
+                                           '<a href="Optimize-Options.html#index-fmodulo_002dsched"><code>fmodulo-sched</code></a>',
+                                           None)
+        self.assertEqual(index.get_url_suffixes('-fmodulo-sched'),
+                         {'gcc/Optimize-Options.html#index-fmodulo-sched'})
+
+    def test_negated_flag(self):
+        index = Index()
+        index.parse_html_line_option_index('gcc',
+                                           '<tr><td></td><td valign="top"><a href="Static-Analyzer-Options.html#index-fno_002danalyzer"><code>fno-analyzer</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Static-Analyzer-Options.html">Static Analyzer Options</a></td></tr>\n',
+                                           None)
+        self.assertEqual(index.get_url_suffixes('-fno-analyzer'), None)
+        self.assertEqual(index.get_url_suffixes('-fanalyzer'),
+                         {'gcc/Static-Analyzer-Options.html#index-fno-analyzer'})
+
+    def test_negated_warning(self):
+        index = Index()
+        index.parse_html_line_option_index('gcc',
+                                           '<tr><td></td><td valign="top"><a href="Warning-Options.html#index-Wno_002dalloca"><code>Wno-alloca</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="Warning-Options.html">Warning Options</a></td></tr>\n',
+                                           None)
+        self.assertEqual(index.get_url_suffixes('-Wno-alloca'),
+                         None)
+        self.assertEqual(index.get_url_suffixes('-Walloca'),
+                         {'gcc/Warning-Options.html#index-Wno-alloca'})
+
+    def test_parse_option_index(self):
+        index = Index()
+        index.parse_option_index(INPUT_HTML_PATH / 'gcc/Option-Index.html',
+                                 language=None)
+        self.assertEqual(index.get_url_suffixes('-fmodulo-sched'),
+                         {'gcc/Optimize-Options.html#index-fmodulo-sched'})
+        self.assertEqual(index.get_url_suffixes('-O'),
+                         {'gcc/Optimize-Options.html#index-O'})
+        self.assertEqual(index.get_url_suffixes('-O0'),
+                         {'gcc/Optimize-Options.html#index-O0'})
+        self.assertEqual(index.get_url_suffixes('-Wframe-larger-than='),
+                         {'gcc/Warning-Options.html#index-Wframe-larger-than_003d'})
+
+        # Check an option with duplicates: '-march'
+        # The url_suffixes will be of the form
+        #  'gcc/HPPA-Options.html#index-march-5',
+        #  'gcc/LoongArch-Options.html#index-march-7',
+        # etc, where the trailing number is, unfortunately, likely to
+        # change from release to release.
+        # Replace them with 'NN' for the purpose of this test:
+        em_arch_url_suffixes = [re.sub('(-[0-9]+)', '-NN', s)
+                                for s in index.get_url_suffixes('-march')]
+        if 0:
+            print(em_arch_url_suffixes)
+        self.assertIn('gcc/ARM-Options.html#index-march-NN', em_arch_url_suffixes)
+        self.assertIn('gcc/x86-Options.html#index-march-NN', em_arch_url_suffixes)
+
+        self.assertEqual(index.get_url_suffixes('-Wcpp'),
+                         {'gcc/Warning-Options.html#index-Wcpp'})
+
+        self.assertNotEqual(index.get_url_suffixes('-march'), None)
+        self.assertNotEqual(index.get_url_suffixes('-march='), None)
+
+class OptFile:
+    def __init__(self, opt_path, rel_path):
+        """
+        Parse a .opt file.  Similar to opt-gather.awk.
+        """
+        self.rel_path = rel_path
+        assert rel_path.startswith('gcc')
+        # self.filename = os.path.basename(path)
+        self.records = []
+        with open(opt_path) as f:
+            flag = 0
+            for line in f:
+                #print(repr(line))
+                if re.match(r'[ \t]*(;|$)', line):
+                    flag = 0
+                else:
+                    if flag == 0:
+                        self.records.append([line])
+                        flag = 1
+                    else:
+                        self.records[-1].append(line)
+
+# Mapping from target-specific page to subdirectory containing .opt files
+# documented on that page.
+
+TARGET_SPECIFIC_PAGES = {
+    'gcc/AArch64-Options.html' : 'gcc/config/aarch64/',
+    'gcc/AMD-GCN-Options.html' : 'gcc/config/gcn/',
+    'gcc/ARC-Options.html' : 'gcc/config/arc/',
+    'gcc/ARC-Options.html' : 'gcc/config/arc/',
+    'gcc/ARM-Options.html' : 'gcc/config/arm/',
+    'gcc/AVR-Options.html' : 'gcc/config/avr/',
+    'gcc/Adapteva-Epiphany-Options.html' : 'gcc/config/epiphany/',
+    'gcc/Blackfin-Options.html' : 'gcc/config/bfin/',
+    'gcc/C-SKY-Options.html' : 'gcc/config/csky/',
+    'gcc/C6X-Options.html' : 'gcc/config/c6x/',
+    'gcc/CRIS-Options.html' : 'gcc/config/cris/',
+    'gcc/DEC-Alpha-Options.html' : 'gcc/config/alpha/',
+    'gcc/FR30-Options.html' : 'gcc/config/fr30/',
+    'gcc/FRV-Options.html' : 'gcc/config/frv/',
+    'gcc/FT32-Options.html' : 'gcc/config/ft32/',
+    'gcc/H8_002f300-Options.html' : 'gcc/config/h8300/',
+    'gcc/HPPA-Options.html' : 'gcc/config/pa/',
+    'gcc/IA-64-Options.html' : 'gcc/config/ia64/',
+    'gcc/LoongArch-Options.html' : 'gcc/config/loongarch/',
+    'gcc/M32C-Options.html' : 'gcc/config/m32c/',
+    'gcc/M32R_002fD-Options.html' : 'gcc/config/m32r/',
+    'gcc/M680x0-Options.html' : 'gcc/config/m68k/',
+    'gcc/MCore-Options.html' : 'gcc/config/mcore/',
+    'gcc/MIPS-Options.html' : 'gcc/config/mips/',
+    'gcc/MMIX-Options.html' : 'gcc/config/mmix/',
+    'gcc/MN10300-Options.html' : 'gcc/config/mn10300/',
+    'gcc/MSP430-Options.html' : 'gcc/config/msp430/',
+    'gcc/MicroBlaze-Options.html' : 'gcc/config/microblaze/',
+    'gcc/Moxie-Options.html' : 'gcc/config/moxie/',
+    'gcc/NDS32-Options.html' : 'gcc/config/nds32/',
+    'gcc/Nios-II-Options.html' : 'gcc/config/nios2/',
+    'gcc/Nvidia-PTX-Options.html' : 'gcc/config/nvptx/',
+    'gcc/OpenRISC-Options.html' : 'gcc/config/or1k/',
+    'gcc/PDP-11-Options.html' : 'gcc/config/pdp11',
+    'gcc/PRU-Options.html' : 'gcc/config/pru/',
+    'gcc/RISC-V-Options.html' : 'gcc/config/riscv/',
+    'gcc/RL78-Options.html' : 'gcc/config/rl78/',
+    'gcc/RS_002f6000-and-PowerPC-Options.html' : 'gcc/config/rs6000/',
+    'gcc/RX-Options.html' : 'gcc/config/rx/',
+    'gcc/SH-Options.html' : 'gcc/config/sh/',
+    'gcc/SPARC-Options.html' : 'gcc/config/sparc/',
+    'gcc/S_002f390-and-zSeries-Options.html' : 'gcc/config/s390',
+    'gcc/V850-Options.html' : 'gcc/config/vax/',
+    'gcc/VAX-Options.html' : 'gcc/config/v850/',
+    'gcc/Visium-Options.html' : 'gcc/config/visium/',
+    'gcc/Xstormy16-Options.html' : 'gcc/config/stormy16/',
+    'gcc/Xtensa-Options.html' : 'gcc/config/xtensa/',
+    'gcc/eBPF-Options.html' : 'gcc/config/bpf/',
+    'gcc/x86-Options.html' : 'gcc/config/i386/',
+}
+
+def target_specific(url_suffix):
+    for page_prefix, subdir in TARGET_SPECIFIC_PAGES.items():
+        if url_suffix.startswith(page_prefix):
+            return subdir
+
+def filter_urlsuffixes_for_optfile(optfile, url_suffixes):
+    """
+    Filter out target-specific options for the wrong target.
+    """
+    result = set()
+    for url_suffix in url_suffixes:
+        subdir = target_specific(url_suffix)
+        if subdir:
+            if 0:
+                print(f'{optfile.rel_path=}')
+                print(f'{url_suffixes=}')
+                print(f'{subdir=}')
+            if not optfile.rel_path.startswith(subdir):
+                # Skip this
+                continue
+        result.add(url_suffix)
+    return result
+
+
+class TestFiltering(unittest.TestCase):
+    def test_target_specific(self):
+        self.assertEqual(target_specific('gcc/Preprocessor-Options.html#index-A'),
+                         None)
+        self.assertEqual(target_specific('gcc/MMIX-Options.html#index-mknuthdiv'),
+                         'gcc/config/mmix/')
+
+    def test_filter(self):
+        s = {'gcc/MIPS-Options.html#index-munaligned-access-1',
+             'gcc/ARM-Options.html#index-munaligned-access'}
+        arm_optfile = OptFile('/dev/null', 'gcc/config/arm/arm.opt')
+        mips_optfile = OptFile('/dev/null', 'gcc/config/mips/mips.opt')
+        self.assertEqual(
+            filter_urlsuffixes_for_optfile(arm_optfile, s),
+            {'gcc/ARM-Options.html#index-munaligned-access'})
+        self.assertEqual(
+            filter_urlsuffixes_for_optfile(mips_optfile, s),
+            {'gcc/MIPS-Options.html#index-munaligned-access-1'})
+
+
+def write_url_file(index, optfile, dstfile):
+    dstfile.write('; Autogenerated by regenerate-opt-urls.py from %s'
+                  ' and generated HTML\n\n'
+                  % optfile.rel_path)
+    for record in optfile.records:
+        opt = '-' + record[0].strip()
+        if 0:
+            dstfile.write('; entry for %s\n' % record)
+            dstfile.write('; opt=%r\n' % opt)
+        url_suffixes_per_lang = {}
+        count = 0
+        for lang in index.get_languages():
+            this_lang_suffixes = index.get_url_suffixes(opt, language=lang)
+            url_suffixes_per_lang[lang] = this_lang_suffixes
+            if this_lang_suffixes:
+                count += len(this_lang_suffixes)
+        if not count:
+            continue
+        directives = []
+        for lang in index.get_languages():
+            if lang:
+                directive = 'LangUrlSuffix_%s for %r' % (lang, opt[1:])
+            else:
+                directive = 'UrlSuffix for %r' % opt[1:]
+            url_suffixes = url_suffixes_per_lang[lang]
+            if 0:
+                dstfile.write('; lang=%r url_suffixes=%r\n' % (lang, url_suffixes))
+            if url_suffixes:
+                url_suffixes = filter_urlsuffixes_for_optfile(optfile, url_suffixes)
+                if url_suffixes:
+                    if len(url_suffixes) == 1:
+                        if lang:
+                            directives.append('LangUrlSuffix_%s(%s)' % (lang, list(url_suffixes)[0]))
+                        else:
+                            directives.append('UrlSuffix(%s)' % list(url_suffixes)[0])
+                    else:
+                        dstfile.write('; skipping %s due to multiple URLs:\n'
+                                      % directive)
+                        for u in sorted(url_suffixes):
+                            dstfile.write(';   duplicate: %r\n' % u)
+                else:
+                    dstfile.write('; skipping %s due to finding no URLs\n'
+                                  % directive)
+        if directives:
+            dstfile.write('%s\n' % opt[1:])
+            dstfile.write(' '.join(directives) + '\n')
+        dstfile.write('\n')
+
+
+def main(args):
+    index = Index()
+    index.parse_option_index(args.base_html_dir / 'gcc/Option-Index.html',
+                             language=None)
+    index.parse_option_index(args.base_html_dir / 'gdc/Option-Index.html',
+                             language='D')
+    index.parse_option_index(args.base_html_dir / 'gfortran/Option-Index.html',
+                             language='Fortran')
+    if 0:
+        pprint(index.entries)
+    for root, dirs, files in os.walk(args.src_gcc_dir):
+        for f in files:
+            if f.endswith('.opt'):
+                opt_path = os.path.join(root, f)
+                rel_path = os.path.relpath(opt_path, args.src_gcc_dir)
+                optfile = OptFile(opt_path, rel_path)
+                if 0:
+                    pprint(optfile.path)
+                    pprint(optfile.records)
+                dstname = f + '.urls'
+                urlfile = os.path.join(root, dstname)
+                with open(urlfile, 'w') as dstfile:
+                    write_url_file(index, optfile, dstfile)
+
+
+if __name__ == '__main__':
+    parser = argparse.ArgumentParser(description=DESCRIPTION,
+                                     formatter_class=argparse.RawDescriptionHelpFormatter)
+    parser.add_argument('base_html_dir', type=Path)
+    parser.add_argument('src_gcc_dir', type=Path)
+    parser.add_argument('--unit-test', action='store_true')
+    args = parser.parse_args()
+
+    if args.unit_test:
+        INPUT_HTML_PATH = args.base_html_dir
+        unittest.main(argv=[sys.argv[0], '-v'])
+    else:
+        main(args)
-- 
2.26.3


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

* [PATCH 2/4; v3] Add generated .opt.urls files
  2023-12-14 15:01                     ` [PATCH 0/4] v3 of: " David Malcolm
  2023-12-14 15:01                       ` [PATCH 1/4; v3] options: add gcc/regenerate-opt-urls.py David Malcolm
@ 2023-12-14 15:01                       ` David Malcolm
  2023-12-14 15:01                       ` [PATCH 3/4; v2] opts: add logic to generate options-urls.cc David Malcolm
                                         ` (3 subsequent siblings)
  5 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-12-14 15:01 UTC (permalink / raw)
  To: Joseph Myers; +Cc: Mark Wielaard, Tobias Burnus, gcc-patches, David Malcolm

Changed in v3: regenerated
Changed in v2: the files now contain some lang-specific URLs.

gcc/ada/ChangeLog:
	* gcc-interface/lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/analyzer/ChangeLog:
	* analyzer.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/c-family/ChangeLog:
	* c.opt.urls: New file, autogenerated by regenerate-opt-urls.py.

gcc/ChangeLog:
	* common.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.
	* config/aarch64/aarch64.opt.urls: Likewise.
	* config/alpha/alpha.opt.urls: Likewise.
	* config/alpha/elf.opt.urls: Likewise.
	* config/arc/arc-tables.opt.urls: Likewise.
	* config/arc/arc.opt.urls: Likewise.
	* config/arm/arm-tables.opt.urls: Likewise.
	* config/arm/arm.opt.urls: Likewise.
	* config/arm/vxworks.opt.urls: Likewise.
	* config/avr/avr.opt.urls: Likewise.
	* config/bpf/bpf.opt.urls: Likewise.
	* config/c6x/c6x-tables.opt.urls: Likewise.
	* config/c6x/c6x.opt.urls: Likewise.
	* config/cris/cris.opt.urls: Likewise.
	* config/cris/elf.opt.urls: Likewise.
	* config/csky/csky.opt.urls: Likewise.
	* config/csky/csky_tables.opt.urls: Likewise.
	* config/darwin.opt.urls: Likewise.
	* config/dragonfly.opt.urls: Likewise.
	* config/epiphany/epiphany.opt.urls: Likewise.
	* config/fr30/fr30.opt.urls: Likewise.
	* config/freebsd.opt.urls: Likewise.
	* config/frv/frv.opt.urls: Likewise.
	* config/ft32/ft32.opt.urls: Likewise.
	* config/fused-madd.opt.urls: Likewise.
	* config/g.opt.urls: Likewise.
	* config/gcn/gcn.opt.urls: Likewise.
	* config/gnu-user.opt.urls: Likewise.
	* config/h8300/h8300.opt.urls: Likewise.
	* config/hpux11.opt.urls: Likewise.
	* config/i386/cygming.opt.urls: Likewise.
	* config/i386/cygwin.opt.urls: Likewise.
	* config/i386/djgpp.opt.urls: Likewise.
	* config/i386/i386.opt.urls: Likewise.
	* config/i386/mingw-w64.opt.urls: Likewise.
	* config/i386/mingw.opt.urls: Likewise.
	* config/i386/nto.opt.urls: Likewise.
	* config/ia64/ia64.opt.urls: Likewise.
	* config/ia64/ilp32.opt.urls: Likewise.
	* config/ia64/vms.opt.urls: Likewise.
	* config/iq2000/iq2000.opt.urls: Likewise.
	* config/linux-android.opt.urls: Likewise.
	* config/linux.opt.urls: Likewise.
	* config/lm32/lm32.opt.urls: Likewise.
	* config/loongarch/loongarch.opt.urls: Likewise.
	* config/lynx.opt.urls: Likewise.
	* config/m32c/m32c.opt.urls: Likewise.
	* config/m32r/m32r.opt.urls: Likewise.
	* config/m68k/ieee.opt.urls: Likewise.
	* config/m68k/m68k-tables.opt.urls: Likewise.
	* config/m68k/m68k.opt.urls: Likewise.
	* config/m68k/uclinux.opt.urls: Likewise.
	* config/mcore/mcore.opt.urls: Likewise.
	* config/microblaze/microblaze.opt.urls: Likewise.
	* config/mips/mips-tables.opt.urls: Likewise.
	* config/mips/mips.opt.urls: Likewise.
	* config/mips/sde.opt.urls: Likewise.
	* config/mmix/mmix.opt.urls: Likewise.
	* config/mn10300/mn10300.opt.urls: Likewise.
	* config/moxie/moxie.opt.urls: Likewise.
	* config/msp430/msp430.opt.urls: Likewise.
	* config/nds32/nds32-elf.opt.urls: Likewise.
	* config/nds32/nds32-linux.opt.urls: Likewise.
	* config/nds32/nds32.opt.urls: Likewise.
	* config/netbsd-elf.opt.urls: Likewise.
	* config/netbsd.opt.urls: Likewise.
	* config/nios2/elf.opt.urls: Likewise.
	* config/nios2/nios2.opt.urls: Likewise.
	* config/nvptx/nvptx-gen.opt.urls: Likewise.
	* config/nvptx/nvptx.opt.urls: Likewise.
	* config/openbsd.opt.urls: Likewise.
	* config/or1k/elf.opt.urls: Likewise.
	* config/or1k/or1k.opt.urls: Likewise.
	* config/pa/pa-hpux.opt.urls: Likewise.
	* config/pa/pa-hpux1010.opt.urls: Likewise.
	* config/pa/pa-hpux1111.opt.urls: Likewise.
	* config/pa/pa-hpux1131.opt.urls: Likewise.
	* config/pa/pa.opt.urls: Likewise.
	* config/pa/pa64-hpux.opt.urls: Likewise.
	* config/pdp11/pdp11.opt.urls: Likewise.
	* config/pru/pru.opt.urls: Likewise.
	* config/riscv/riscv.opt.urls: Likewise.
	* config/rl78/rl78.opt.urls: Likewise.
	* config/rpath.opt.urls: Likewise.
	* config/rs6000/476.opt.urls: Likewise.
	* config/rs6000/aix64.opt.urls: Likewise.
	* config/rs6000/darwin.opt.urls: Likewise.
	* config/rs6000/linux64.opt.urls: Likewise.
	* config/rs6000/rs6000-tables.opt.urls: Likewise.
	* config/rs6000/rs6000.opt.urls: Likewise.
	* config/rs6000/sysv4.opt.urls: Likewise.
	* config/rtems.opt.urls: Likewise.
	* config/rx/elf.opt.urls: Likewise.
	* config/rx/rx.opt.urls: Likewise.
	* config/s390/s390.opt.urls: Likewise.
	* config/s390/tpf.opt.urls: Likewise.
	* config/sh/sh.opt.urls: Likewise.
	* config/sh/superh.opt.urls: Likewise.
	* config/sol2.opt.urls: Likewise.
	* config/sparc/long-double-switch.opt.urls: Likewise.
	* config/sparc/sparc.opt.urls: Likewise.
	* config/stormy16/stormy16.opt.urls: Likewise.
	* config/v850/v850.opt.urls: Likewise.
	* config/vax/elf.opt.urls: Likewise.
	* config/vax/vax.opt.urls: Likewise.
	* config/visium/visium.opt.urls: Likewise.
	* config/vms/vms.opt.urls: Likewise.
	* config/vxworks-smp.opt.urls: Likewise.
	* config/vxworks.opt.urls: Likewise.
	* config/xtensa/elf.opt.urls: Likewise.
	* config/xtensa/uclinux.opt.urls: Likewise.
	* config/xtensa/xtensa.opt.urls: Likewise.

gcc/d/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/fortran/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/go/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/lto/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/m2/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/ChangeLog:
	* params.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/rust/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
 gcc/ada/gcc-interface/lang.opt.urls          |   30 +
 gcc/analyzer/analyzer.opt.urls               |  206 ++
 gcc/c-family/c.opt.urls                      | 1409 ++++++++++++++
 gcc/common.opt.urls                          | 1832 ++++++++++++++++++
 gcc/config/aarch64/aarch64.opt.urls          |   84 +
 gcc/config/alpha/alpha.opt.urls              |   76 +
 gcc/config/alpha/elf.opt.urls                |    2 +
 gcc/config/arc/arc-tables.opt.urls           |    2 +
 gcc/config/arc/arc.opt.urls                  |  260 +++
 gcc/config/arm/arm-tables.opt.urls           |    2 +
 gcc/config/arm/arm.opt.urls                  |  149 ++
 gcc/config/arm/vxworks.opt.urls              |    2 +
 gcc/config/avr/avr.opt.urls                  |   71 +
 gcc/config/bfin/bfin.opt.urls                |   61 +
 gcc/config/bpf/bpf.opt.urls                  |   35 +
 gcc/config/c6x/c6x-tables.opt.urls           |    2 +
 gcc/config/c6x/c6x.opt.urls                  |   18 +
 gcc/config/cris/cris.opt.urls                |   65 +
 gcc/config/cris/elf.opt.urls                 |    8 +
 gcc/config/csky/csky.opt.urls                |  104 +
 gcc/config/csky/csky_tables.opt.urls         |    2 +
 gcc/config/darwin.opt.urls                   |  224 +++
 gcc/config/dragonfly.opt.urls                |    9 +
 gcc/config/epiphany/epiphany.opt.urls        |   52 +
 gcc/config/fr30/fr30.opt.urls                |    8 +
 gcc/config/freebsd.opt.urls                  |    9 +
 gcc/config/frv/frv.opt.urls                  |  111 ++
 gcc/config/ft32/ft32.opt.urls                |   20 +
 gcc/config/fused-madd.opt.urls               |    4 +
 gcc/config/g.opt.urls                        |    5 +
 gcc/config/gcn/gcn.opt.urls                  |   23 +
 gcc/config/gnu-user.opt.urls                 |    9 +
 gcc/config/h8300/h8300.opt.urls              |   29 +
 gcc/config/hpux11.opt.urls                   |    6 +
 gcc/config/i386/cygming.opt.urls             |   30 +
 gcc/config/i386/cygwin.opt.urls              |    6 +
 gcc/config/i386/djgpp.opt.urls               |    2 +
 gcc/config/i386/i386.opt.urls                |  602 ++++++
 gcc/config/i386/mingw-w64.opt.urls           |    5 +
 gcc/config/i386/mingw.opt.urls               |   12 +
 gcc/config/i386/nto.opt.urls                 |    5 +
 gcc/config/ia64/ia64.opt.urls                |  122 ++
 gcc/config/ia64/ilp32.opt.urls               |    8 +
 gcc/config/ia64/vms.opt.urls                 |    2 +
 gcc/config/iq2000/iq2000.opt.urls            |   14 +
 gcc/config/linux-android.opt.urls            |   11 +
 gcc/config/linux.opt.urls                    |   14 +
 gcc/config/lm32/lm32.opt.urls                |   14 +
 gcc/config/loongarch/loongarch.opt.urls      |   64 +
 gcc/config/lynx.opt.urls                     |    5 +
 gcc/config/m32c/m32c.opt.urls                |    8 +
 gcc/config/m32r/m32r.opt.urls                |   27 +
 gcc/config/m68k/ieee.opt.urls                |    4 +
 gcc/config/m68k/m68k-tables.opt.urls         |    2 +
 gcc/config/m68k/m68k.opt.urls                |  107 +
 gcc/config/m68k/uclinux.opt.urls             |    2 +
 gcc/config/mcore/mcore.opt.urls              |   38 +
 gcc/config/microblaze/microblaze.opt.urls    |   59 +
 gcc/config/mips/mips-tables.opt.urls         |    2 +
 gcc/config/mips/mips.opt.urls                |  269 +++
 gcc/config/mips/sde.opt.urls                 |    2 +
 gcc/config/mmix/mmix.opt.urls                |   44 +
 gcc/config/mn10300/mn10300.opt.urls          |   32 +
 gcc/config/moxie/moxie.opt.urls              |   14 +
 gcc/config/msp430/msp430.opt.urls            |   53 +
 gcc/config/nds32/nds32-elf.opt.urls          |    5 +
 gcc/config/nds32/nds32-linux.opt.urls        |    5 +
 gcc/config/nds32/nds32.opt.urls              |   57 +
 gcc/config/netbsd-elf.opt.urls               |    5 +
 gcc/config/netbsd.opt.urls                   |    6 +
 gcc/config/nios2/elf.opt.urls                |   14 +
 gcc/config/nios2/nios2.opt.urls              |   50 +
 gcc/config/nvptx/nvptx-gen.opt.urls          |    2 +
 gcc/config/nvptx/nvptx.opt.urls              |   29 +
 gcc/config/openbsd.opt.urls                  |    6 +
 gcc/config/or1k/elf.opt.urls                 |    8 +
 gcc/config/or1k/or1k.opt.urls                |   46 +
 gcc/config/pa/pa-hpux.opt.urls               |   11 +
 gcc/config/pa/pa-hpux1010.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1111.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1131.opt.urls           |    2 +
 gcc/config/pa/pa.opt.urls                    |   71 +
 gcc/config/pa/pa64-hpux.opt.urls             |    8 +
 gcc/config/pdp11/pdp11.opt.urls              |   41 +
 gcc/config/pru/pru.opt.urls                  |   17 +
 gcc/config/riscv/riscv.opt.urls              |   88 +
 gcc/config/rl78/rl78.opt.urls                |   31 +
 gcc/config/rpath.opt.urls                    |    2 +
 gcc/config/rs6000/476.opt.urls               |    2 +
 gcc/config/rs6000/aix64.opt.urls             |   23 +
 gcc/config/rs6000/darwin.opt.urls            |   14 +
 gcc/config/rs6000/linux64.opt.urls           |    4 +
 gcc/config/rs6000/rs6000-tables.opt.urls     |    2 +
 gcc/config/rs6000/rs6000.opt.urls            |  214 ++
 gcc/config/rs6000/sysv4.opt.urls             |   87 +
 gcc/config/rtems.opt.urls                    |    6 +
 gcc/config/rx/elf.opt.urls                   |   14 +
 gcc/config/rx/rx.opt.urls                    |   54 +
 gcc/config/s390/s390.opt.urls                |   92 +
 gcc/config/s390/tpf.opt.urls                 |    8 +
 gcc/config/sh/sh.opt.urls                    |  174 ++
 gcc/config/sh/superh.opt.urls                |    4 +
 gcc/config/sol2.opt.urls                     |   21 +
 gcc/config/sparc/long-double-switch.opt.urls |    6 +
 gcc/config/sparc/sparc.opt.urls              |  108 ++
 gcc/config/stormy16/stormy16.opt.urls        |    5 +
 gcc/config/v850/v850.opt.urls                |   60 +
 gcc/config/vax/elf.opt.urls                  |    2 +
 gcc/config/vax/vax.opt.urls                  |   10 +
 gcc/config/visium/visium.opt.urls            |   29 +
 gcc/config/vms/vms.opt.urls                  |    8 +
 gcc/config/vxworks-smp.opt.urls              |    5 +
 gcc/config/vxworks.opt.urls                  |   20 +
 gcc/config/xtensa/elf.opt.urls               |    5 +
 gcc/config/xtensa/uclinux.opt.urls           |    2 +
 gcc/config/xtensa/xtensa.opt.urls            |   37 +
 gcc/d/lang.opt.urls                          |  223 +++
 gcc/fortran/lang.opt.urls                    |  161 ++
 gcc/go/lang.opt.urls                         |   17 +
 gcc/lto/lang.opt.urls                        |    8 +
 gcc/m2/lang.opt.urls                         |  118 ++
 gcc/params.opt.urls                          |    2 +
 gcc/rust/lang.opt.urls                       |   29 +
 123 files changed, 8590 insertions(+)
 create mode 100644 gcc/ada/gcc-interface/lang.opt.urls
 create mode 100644 gcc/analyzer/analyzer.opt.urls
 create mode 100644 gcc/c-family/c.opt.urls
 create mode 100644 gcc/common.opt.urls
 create mode 100644 gcc/config/aarch64/aarch64.opt.urls
 create mode 100644 gcc/config/alpha/alpha.opt.urls
 create mode 100644 gcc/config/alpha/elf.opt.urls
 create mode 100644 gcc/config/arc/arc-tables.opt.urls
 create mode 100644 gcc/config/arc/arc.opt.urls
 create mode 100644 gcc/config/arm/arm-tables.opt.urls
 create mode 100644 gcc/config/arm/arm.opt.urls
 create mode 100644 gcc/config/arm/vxworks.opt.urls
 create mode 100644 gcc/config/avr/avr.opt.urls
 create mode 100644 gcc/config/bfin/bfin.opt.urls
 create mode 100644 gcc/config/bpf/bpf.opt.urls
 create mode 100644 gcc/config/c6x/c6x-tables.opt.urls
 create mode 100644 gcc/config/c6x/c6x.opt.urls
 create mode 100644 gcc/config/cris/cris.opt.urls
 create mode 100644 gcc/config/cris/elf.opt.urls
 create mode 100644 gcc/config/csky/csky.opt.urls
 create mode 100644 gcc/config/csky/csky_tables.opt.urls
 create mode 100644 gcc/config/darwin.opt.urls
 create mode 100644 gcc/config/dragonfly.opt.urls
 create mode 100644 gcc/config/epiphany/epiphany.opt.urls
 create mode 100644 gcc/config/fr30/fr30.opt.urls
 create mode 100644 gcc/config/freebsd.opt.urls
 create mode 100644 gcc/config/frv/frv.opt.urls
 create mode 100644 gcc/config/ft32/ft32.opt.urls
 create mode 100644 gcc/config/fused-madd.opt.urls
 create mode 100644 gcc/config/g.opt.urls
 create mode 100644 gcc/config/gcn/gcn.opt.urls
 create mode 100644 gcc/config/gnu-user.opt.urls
 create mode 100644 gcc/config/h8300/h8300.opt.urls
 create mode 100644 gcc/config/hpux11.opt.urls
 create mode 100644 gcc/config/i386/cygming.opt.urls
 create mode 100644 gcc/config/i386/cygwin.opt.urls
 create mode 100644 gcc/config/i386/djgpp.opt.urls
 create mode 100644 gcc/config/i386/i386.opt.urls
 create mode 100644 gcc/config/i386/mingw-w64.opt.urls
 create mode 100644 gcc/config/i386/mingw.opt.urls
 create mode 100644 gcc/config/i386/nto.opt.urls
 create mode 100644 gcc/config/ia64/ia64.opt.urls
 create mode 100644 gcc/config/ia64/ilp32.opt.urls
 create mode 100644 gcc/config/ia64/vms.opt.urls
 create mode 100644 gcc/config/iq2000/iq2000.opt.urls
 create mode 100644 gcc/config/linux-android.opt.urls
 create mode 100644 gcc/config/linux.opt.urls
 create mode 100644 gcc/config/lm32/lm32.opt.urls
 create mode 100644 gcc/config/loongarch/loongarch.opt.urls
 create mode 100644 gcc/config/lynx.opt.urls
 create mode 100644 gcc/config/m32c/m32c.opt.urls
 create mode 100644 gcc/config/m32r/m32r.opt.urls
 create mode 100644 gcc/config/m68k/ieee.opt.urls
 create mode 100644 gcc/config/m68k/m68k-tables.opt.urls
 create mode 100644 gcc/config/m68k/m68k.opt.urls
 create mode 100644 gcc/config/m68k/uclinux.opt.urls
 create mode 100644 gcc/config/mcore/mcore.opt.urls
 create mode 100644 gcc/config/microblaze/microblaze.opt.urls
 create mode 100644 gcc/config/mips/mips-tables.opt.urls
 create mode 100644 gcc/config/mips/mips.opt.urls
 create mode 100644 gcc/config/mips/sde.opt.urls
 create mode 100644 gcc/config/mmix/mmix.opt.urls
 create mode 100644 gcc/config/mn10300/mn10300.opt.urls
 create mode 100644 gcc/config/moxie/moxie.opt.urls
 create mode 100644 gcc/config/msp430/msp430.opt.urls
 create mode 100644 gcc/config/nds32/nds32-elf.opt.urls
 create mode 100644 gcc/config/nds32/nds32-linux.opt.urls
 create mode 100644 gcc/config/nds32/nds32.opt.urls
 create mode 100644 gcc/config/netbsd-elf.opt.urls
 create mode 100644 gcc/config/netbsd.opt.urls
 create mode 100644 gcc/config/nios2/elf.opt.urls
 create mode 100644 gcc/config/nios2/nios2.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx-gen.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx.opt.urls
 create mode 100644 gcc/config/openbsd.opt.urls
 create mode 100644 gcc/config/or1k/elf.opt.urls
 create mode 100644 gcc/config/or1k/or1k.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1010.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1111.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1131.opt.urls
 create mode 100644 gcc/config/pa/pa.opt.urls
 create mode 100644 gcc/config/pa/pa64-hpux.opt.urls
 create mode 100644 gcc/config/pdp11/pdp11.opt.urls
 create mode 100644 gcc/config/pru/pru.opt.urls
 create mode 100644 gcc/config/riscv/riscv.opt.urls
 create mode 100644 gcc/config/rl78/rl78.opt.urls
 create mode 100644 gcc/config/rpath.opt.urls
 create mode 100644 gcc/config/rs6000/476.opt.urls
 create mode 100644 gcc/config/rs6000/aix64.opt.urls
 create mode 100644 gcc/config/rs6000/darwin.opt.urls
 create mode 100644 gcc/config/rs6000/linux64.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000-tables.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000.opt.urls
 create mode 100644 gcc/config/rs6000/sysv4.opt.urls
 create mode 100644 gcc/config/rtems.opt.urls
 create mode 100644 gcc/config/rx/elf.opt.urls
 create mode 100644 gcc/config/rx/rx.opt.urls
 create mode 100644 gcc/config/s390/s390.opt.urls
 create mode 100644 gcc/config/s390/tpf.opt.urls
 create mode 100644 gcc/config/sh/sh.opt.urls
 create mode 100644 gcc/config/sh/superh.opt.urls
 create mode 100644 gcc/config/sol2.opt.urls
 create mode 100644 gcc/config/sparc/long-double-switch.opt.urls
 create mode 100644 gcc/config/sparc/sparc.opt.urls
 create mode 100644 gcc/config/stormy16/stormy16.opt.urls
 create mode 100644 gcc/config/v850/v850.opt.urls
 create mode 100644 gcc/config/vax/elf.opt.urls
 create mode 100644 gcc/config/vax/vax.opt.urls
 create mode 100644 gcc/config/visium/visium.opt.urls
 create mode 100644 gcc/config/vms/vms.opt.urls
 create mode 100644 gcc/config/vxworks-smp.opt.urls
 create mode 100644 gcc/config/vxworks.opt.urls
 create mode 100644 gcc/config/xtensa/elf.opt.urls
 create mode 100644 gcc/config/xtensa/uclinux.opt.urls
 create mode 100644 gcc/config/xtensa/xtensa.opt.urls
 create mode 100644 gcc/d/lang.opt.urls
 create mode 100644 gcc/fortran/lang.opt.urls
 create mode 100644 gcc/go/lang.opt.urls
 create mode 100644 gcc/lto/lang.opt.urls
 create mode 100644 gcc/m2/lang.opt.urls
 create mode 100644 gcc/params.opt.urls
 create mode 100644 gcc/rust/lang.opt.urls

diff --git a/gcc/ada/gcc-interface/lang.opt.urls b/gcc/ada/gcc-interface/lang.opt.urls
new file mode 100644
index 000000000000..7913bcb5558d
--- /dev/null
+++ b/gcc/ada/gcc-interface/lang.opt.urls
@@ -0,0 +1,30 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/ada/gcc-interface/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+nostdlib
+UrlSuffix(gcc/Link-Options.html#index-nostdlib)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+; skipping UrlSuffix for 'fsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
+
+; skipping UrlSuffix for 'funsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'
+
diff --git a/gcc/analyzer/analyzer.opt.urls b/gcc/analyzer/analyzer.opt.urls
new file mode 100644
index 000000000000..9f7d33ff434c
--- /dev/null
+++ b/gcc/analyzer/analyzer.opt.urls
@@ -0,0 +1,206 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/analyzer/analyzer.opt and generated HTML
+
+Wanalyzer-allocation-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-allocation-size)
+
+Wanalyzer-deref-before-check
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-deref-before-check)
+
+Wanalyzer-double-fclose
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-fclose)
+
+Wanalyzer-double-free
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free)
+
+Wanalyzer-exposure-through-output-file
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-output-file)
+
+Wanalyzer-exposure-through-uninit-copy
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-uninit-copy)
+
+Wanalyzer-fd-access-mode-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-access-mode-mismatch)
+
+Wanalyzer-fd-double-close
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-double-close)
+
+Wanalyzer-fd-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-leak)
+
+Wanalyzer-fd-phase-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-phase-mismatch)
+
+Wanalyzer-fd-type-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-type-mismatch)
+
+Wanalyzer-fd-use-after-close
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-after-close)
+
+Wanalyzer-fd-use-without-check
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-without-check)
+
+Wanalyzer-file-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-file-leak)
+
+Wanalyzer-free-of-non-heap
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-free-of-non-heap)
+
+Wanalyzer-imprecise-fp-arithmetic
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-imprecise-fp-arithmetic)
+
+Wanalyzer-infinite-recursion
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-recursion)
+
+Wanalyzer-jump-through-null
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-jump-through-null)
+
+Wanalyzer-malloc-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-malloc-leak)
+
+Wanalyzer-mismatching-deallocation
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-mismatching-deallocation)
+
+Wanalyzer-out-of-bounds
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-out-of-bounds)
+
+Wanalyzer-overlapping-buffers
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-overlapping-buffers)
+
+Wanalyzer-possible-null-argument
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-argument)
+
+Wanalyzer-possible-null-dereference
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-dereference)
+
+Wanalyzer-unsafe-call-within-signal-handler
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-unsafe-call-within-signal-handler)
+
+Wanalyzer-null-argument
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-argument)
+
+Wanalyzer-null-dereference
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-dereference)
+
+Wanalyzer-putenv-of-auto-var
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-putenv-of-auto-var)
+
+Wanalyzer-shift-count-negative
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-negative)
+
+Wanalyzer-shift-count-overflow
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-overflow)
+
+Wanalyzer-stale-setjmp-buffer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-stale-setjmp-buffer)
+
+Wanalyzer-tainted-allocation-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-allocation-size)
+
+Wanalyzer-tainted-array-index
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-array-index)
+
+Wanalyzer-tainted-assertion
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-assertion)
+
+Wanalyzer-tainted-divisor
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-divisor)
+
+Wanalyzer-tainted-offset
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-offset)
+
+Wanalyzer-tainted-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-size)
+
+Wanalyzer-use-after-free
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-after-free)
+
+Wanalyzer-use-of-pointer-in-stale-stack-frame
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-pointer-in-stale-stack-frame)
+
+Wanalyzer-va-arg-type-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-arg-type-mismatch)
+
+Wanalyzer-va-list-exhausted
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-exhausted)
+
+Wanalyzer-va-list-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-leak)
+
+Wanalyzer-va-list-use-after-va-end
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-use-after-va-end)
+
+Wanalyzer-write-to-const
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-const)
+
+Wanalyzer-write-to-string-literal
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-literal)
+
+Wanalyzer-use-of-uninitialized-value
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-uninitialized-value)
+
+Wanalyzer-too-complex
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-too-complex)
+
+fanalyzer-checker=
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-checker)
+
+fanalyzer-debug-text-art
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-debug-text-art)
+
+fanalyzer-fine-grained
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-fine-grained)
+
+fanalyzer-feasibility
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-feasibility)
+
+fanalyzer-show-duplicate-count
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-duplicate-count)
+
+fanalyzer-state-purge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-purge)
+
+fanalyzer-state-merge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-merge)
+
+fanalyzer-suppress-followups
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-suppress-followups)
+
+fanalyzer-transitivity
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-transitivity)
+
+fanalyzer-show-events-in-system-headers
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-events-in-system-headers)
+
+fanalyzer-call-summaries
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-call-summaries)
+
+fanalyzer-undo-inlining
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-undo-inlining)
+
+fdump-analyzer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer)
+
+fdump-analyzer-stderr
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-stderr)
+
+fdump-analyzer-callgraph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-callgraph)
+
+fdump-analyzer-exploded-graph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-graph)
+
+fdump-analyzer-exploded-paths
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-paths)
+
+fdump-analyzer-json
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-json)
+
+fdump-analyzer-state-purge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-state-purge)
+
+fdump-analyzer-supergraph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-supergraph)
+
+fdump-analyzer-untracked
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-untracked)
+
diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
new file mode 100644
index 000000000000..8fccbc77ea3a
--- /dev/null
+++ b/gcc/c-family/c.opt.urls
@@ -0,0 +1,1409 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/c-family/c.opt and generated HTML
+
+A
+UrlSuffix(gcc/Preprocessor-Options.html#index-A)
+
+C
+UrlSuffix(gcc/Preprocessor-Options.html#index-C)
+
+CC
+UrlSuffix(gcc/Preprocessor-Options.html#index-CC)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+F
+UrlSuffix(gcc/Darwin-Options.html#index-F)
+
+fgimple
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgimple)
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+Mno-modules
+UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+fdeps-format=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-format)
+
+fdeps-file=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-file)
+
+fdeps-target=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-target)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+U
+UrlSuffix(gcc/Preprocessor-Options.html#index-U)
+
+Wabi
+UrlSuffix(gcc/Warning-Options.html#index-Wabi)
+
+Wabi=
+UrlSuffix(gcc/Warning-Options.html#index-Wabi)
+
+Wabi-tag
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
+
+Wabsolute-value
+UrlSuffix(gcc/Warning-Options.html#index-Wabsolute-value)
+
+Waddress
+UrlSuffix(gcc/Warning-Options.html#index-Waddress)
+
+Waligned-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
+
+Waligned-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Walloca
+UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca)
+
+Walloc-size-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-size-larger-than_003d)
+
+Walloc-zero
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-zero)
+
+Walloca-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
+
+Warray-bounds=
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Warray-compare
+UrlSuffix(gcc/Warning-Options.html#index-Warray-compare)
+
+Warray-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+
+Warray-parameter=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+
+Wzero-length-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
+
+Wassign-intercept
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wassign-intercept)
+
+Wbad-function-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wbad-function-cast)
+
+Wbidi-chars
+UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars)
+
+Wbidi-chars=
+UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars)
+
+Wbool-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wbool-compare)
+
+Wbool-operation
+UrlSuffix(gcc/Warning-Options.html#index-Wbool-operation)
+
+Wframe-address
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
+
+Wbuiltin-declaration-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
+
+Wbuiltin-macro-redefined
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-macro-redefined)
+
+Wc11-c2x-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc11-c2x-compat)
+
+Wc90-c99-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc90-c99-compat)
+
+Wc99-c11-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc99-c11-compat)
+
+Wc++-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b-compat)
+
+Wc++11-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-compat)
+
+Wc++14-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-compat)
+
+Wc++17-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-compat)
+
+Wc++20-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-compat)
+
+Wc++11-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-extensions)
+
+Wc++14-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-extensions)
+
+Wc++17-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-extensions)
+
+Wc++20-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-extensions)
+
+Wc++23-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b23-extensions)
+
+Wcast-function-type
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-function-type)
+
+Wcast-qual
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-qual)
+
+Wcatch-value
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
+
+Wcatch-value=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
+
+Wchar-subscripts
+UrlSuffix(gcc/Warning-Options.html#index-Wchar-subscripts)
+
+Wclobbered
+UrlSuffix(gcc/Warning-Options.html#index-Wclobbered)
+
+Wcomma-subscript
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcomma-subscript)
+
+Wcomment
+UrlSuffix(gcc/Warning-Options.html#index-Wcomment)
+
+Wcomments
+UrlSuffix(gcc/Warning-Options.html#index-Wcomments)
+
+Wconditionally-supported
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconditionally-supported)
+
+Wconversion
+UrlSuffix(gcc/Warning-Options.html#index-Wconversion)
+
+Wconversion-null
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconversion-null)
+
+Wcpp
+UrlSuffix(gcc/Warning-Options.html#index-Wcpp)
+
+Wctad-maybe-unsupported
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported)
+
+Wctor-dtor-privacy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctor-dtor-privacy)
+
+Wdangling-else
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-else)
+
+Wdangling-pointer
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer)
+
+Wdangling-pointer=
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer)
+
+Wdangling-reference
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference)
+
+Wdate-time
+UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
+
+Wdeclaration-after-statement
+UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-after-statement)
+
+Wdelete-incomplete
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-incomplete)
+
+Wdelete-non-virtual-dtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-non-virtual-dtor)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Wdeprecated-copy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-copy)
+
+Wdeprecated-enum-enum-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-enum-conversion)
+
+Wdeprecated-enum-float-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-float-conversion)
+
+Wdesignated-init
+UrlSuffix(gcc/Warning-Options.html#index-Wdesignated-init)
+
+Wdiscarded-array-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-array-qualifiers)
+
+Wdiscarded-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-qualifiers)
+
+Wdiv-by-zero
+UrlSuffix(gcc/Warning-Options.html#index-Wdiv-by-zero)
+
+Wduplicated-branches
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-branches)
+
+Wduplicated-cond
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-cond)
+
+Weffc++
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Weffc_002b_002b)
+
+Wempty-body
+UrlSuffix(gcc/Warning-Options.html#index-Wempty-body)
+
+Wendif-labels
+UrlSuffix(gcc/Warning-Options.html#index-Wendif-labels)
+
+Wenum-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-compare)
+
+Wenum-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-conversion)
+
+Wenum-int-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-int-mismatch)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wexceptions
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wexceptions)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wextra-semi
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wextra-semi)
+
+Wfloat-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wfloat-conversion)
+
+Wfloat-equal
+UrlSuffix(gcc/Warning-Options.html#index-Wfloat-equal)
+
+Wformat
+UrlSuffix(gcc/Warning-Options.html#index-Wformat)
+
+Wformat-contains-nul
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-contains-nul)
+
+Wformat-extra-args
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-extra-args)
+
+Wformat-nonliteral
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-nonliteral)
+
+Wformat-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
+Wformat-security
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-security)
+
+Wformat-signedness
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-signedness)
+
+Wformat-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
+Wformat-y2k
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-y2k)
+
+Wformat-zero-length
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-zero-length)
+
+Wformat=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat)
+
+Wformat-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
+Wformat-truncation=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
+Wflex-array-member-not-at-end
+UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+
+Wif-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned)
+
+Wignored-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wignored-qualifiers)
+
+Wignored-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wignored-attributes)
+
+Winaccessible-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winaccessible-base)
+
+Wincompatible-pointer-types
+UrlSuffix(gcc/Warning-Options.html#index-Wincompatible-pointer-types)
+
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
+Waddress-of-packed-member
+UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
+
+Winit-self
+UrlSuffix(gcc/Warning-Options.html#index-Winit-self)
+
+Winit-list-lifetime
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winit-list-lifetime)
+
+Winterference-size
+UrlSuffix(gcc/Warning-Options.html#index-Winterference-size)
+
+Wimplicit
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wdouble-promotion
+UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
+
+Wexpansion-to-defined
+UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
+
+Wimplicit-function-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
+
+Wimplicit-int
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
+
+Winherited-variadic-ctor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winherited-variadic-ctor)
+
+Wint-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wint-conversion)
+
+Wint-in-bool-context
+UrlSuffix(gcc/Warning-Options.html#index-Wint-in-bool-context)
+
+Wint-to-pointer-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wint-to-pointer-cast)
+
+Winvalid-constexpr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-constexpr)
+
+Winvalid-offsetof
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-offsetof)
+
+Winvalid-pch
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-pch)
+
+Winvalid-utf8
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-utf8)
+
+Wjump-misses-init
+UrlSuffix(gcc/Warning-Options.html#index-Wjump-misses-init)
+
+Wliteral-suffix
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wliteral-suffix)
+
+Wlogical-op
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
+
+Wlogical-not-parentheses
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-not-parentheses)
+
+Wlong-long
+UrlSuffix(gcc/Warning-Options.html#index-Wlong-long)
+
+Wmain
+UrlSuffix(gcc/Warning-Options.html#index-Wmain)
+
+Wmain
+UrlSuffix(gcc/Warning-Options.html#index-Wmain)
+
+Wmemset-transposed-args
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+
+Wmemset-elt-size
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-elt-size)
+
+Wmisleading-indentation
+UrlSuffix(gcc/Warning-Options.html#index-Wmisleading-indentation)
+
+Wmismatched-dealloc
+UrlSuffix(gcc/Warning-Options.html#index-Wmismatched-dealloc)
+
+Wmismatched-new-delete
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete)
+
+Wmismatched-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-tags)
+
+Wmissing-braces
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-braces)
+
+Wmissing-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-declarations)
+
+Wmissing-field-initializers
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-field-initializers)
+
+Wmissing-requires
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
+
+Wmissing-template-keyword
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
+
+Wmultistatement-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
+
+Wmultiple-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
+
+Wnamespaces
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
+
+Wnrvo
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
+
+Wpacked-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
+
+Wrange-loop-construct
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
+
+Wredundant-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
+
+Wsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
+
+Wsizeof-pointer-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
+
+Wsizeof-array-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
+
+Wsizeof-pointer-memaccess
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
+
+Wsizeof-array-argument
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
+
+Wstring-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
+
+Wstringop-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overread
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
+
+Wstringop-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
+
+Wstrict-flex-arrays
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
+
+Wsuggest-attribute=format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
+
+Wsuggest-override
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
+
+Wswitch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
+
+Wswitch-default
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
+
+Wswitch-enum
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
+
+Wswitch-bool
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
+
+Wswitch-outside-range
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
+
+Wtemplates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
+
+Wmissing-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
+
+Wmissing-format-attribute
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-format-attribute)
+
+Wmissing-include-dirs
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
+
+Wmissing-parameter-type
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-parameter-type)
+
+Wmissing-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-prototypes)
+
+Wmissing-variable-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-variable-declarations)
+
+Wmultichar
+UrlSuffix(gcc/Warning-Options.html#index-Wmultichar)
+
+Wnarrowing
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnarrowing)
+
+Wnested-externs
+UrlSuffix(gcc/Warning-Options.html#index-Wnested-externs)
+
+Wnoexcept
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept)
+
+Wnoexcept-type
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept-type)
+
+Wnon-template-friend
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-template-friend)
+
+Wclass-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
+
+Wclass-memaccess
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
+
+Wnon-virtual-dtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-virtual-dtor)
+
+Wnonnull
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull)
+
+Wnonnull
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull)
+
+Wnonnull-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare)
+
+Wnormalized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized)
+
+Wnormalized=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized)
+
+Wobjc-root-class
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wobjc-root-class)
+
+Wold-style-cast
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-old-style-cast)
+
+Wold-style-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-declaration)
+
+Wold-style-definition
+UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-definition)
+
+Wopenacc-parallelism
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
+
+Wopenmp-simd
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
+
+Woverlength-strings
+UrlSuffix(gcc/Warning-Options.html#index-Wno-overlength-strings)
+
+Woverloaded-virtual
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual)
+
+Woverloaded-virtual=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual)
+
+Woverride-init
+UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init)
+
+Woverride-init-side-effects
+UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init-side-effects)
+
+Wpacked-bitfield-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-bitfield-compat)
+
+Wparentheses
+UrlSuffix(gcc/Warning-Options.html#index-Wno-parentheses)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wpessimizing-move
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-pessimizing-move)
+
+; skipping UrlSuffix for 'Wpmf-conversions' due to multiple URLs:
+;   duplicate: 'gcc/Bound-member-functions.html#index-Wno-pmf-conversions-1'
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-Wno-pmf-conversions'
+
+; skipping UrlSuffix for 'Wpointer-arith' due to multiple URLs:
+;   duplicate: 'gcc/Pointer-Arith.html#index-Wpointer-arith-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wno-pointer-arith'
+
+Wpointer-sign
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-sign)
+
+Wpointer-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-compare)
+
+Wpointer-to-int-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-to-int-cast)
+
+Wpragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pragmas)
+
+Wprio-ctor-dtor
+UrlSuffix(gcc/Warning-Options.html#index-Wno-prio-ctor-dtor)
+
+Wproperty-assign-default
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-property-assign-default)
+
+Wprotocol
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-protocol)
+
+Wplacement-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wplacement-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wredundant-decls
+UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
+
+Wredundant-move
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-move)
+
+Wregister
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register)
+
+Wreorder
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wscalar-storage-order
+UrlSuffix(gcc/Warning-Options.html#index-Wno-scalar-storage-order)
+
+Wselector
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-selector)
+
+Wself-move
+UrlSuffix(gcc/Warning-Options.html#index-Wno-self-move)
+
+Wsequence-point
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sequence-point)
+
+Wshadow-ivar
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow-ivar)
+
+Wshift-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow)
+
+Wshift-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow)
+
+Wshift-count-negative
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-negative)
+
+Wshift-count-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-overflow)
+
+Wshift-negative-value
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-negative-value)
+
+Warith-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
+
+Wsign-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
+
+Wsign-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
+
+Wsign-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-conversion)
+
+Wsign-promo
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sign-promo)
+
+Wstrict-null-sentinel
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+
+Wstrict-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+
+Wstrict-aliasing=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wstrict-selector-match
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-strict-selector-match)
+
+Wsync-nand
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sync-nand)
+
+Wsystem-headers
+UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
+
+Wtautological-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-tautological-compare)
+
+Wterminate
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-terminate)
+
+Wtraditional
+UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional)
+
+Wtraditional-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional-conversion)
+
+Wtrigraphs
+UrlSuffix(gcc/Warning-Options.html#index-Wtrigraphs)
+
+Wundeclared-selector
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-undeclared-selector)
+
+Wundef
+UrlSuffix(gcc/Warning-Options.html#index-Wno-undef)
+
+Wunicode
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unicode)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wunknown-pragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
+
+Wunsuffixed-float-constants
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unsuffixed-float-constants)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+Wunused-local-typedefs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-local-typedefs)
+
+Wunused-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wunused-macros)
+
+Wunused-result
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wuse-after-free=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wvariadic-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wno-variadic-macros)
+
+Wvarargs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-varargs)
+
+Wvexing-parse
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-vexing-parse)
+
+Wvla
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla)
+
+Wvla-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-larger-than)
+
+Wvla-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-parameter)
+
+Wvolatile
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-volatile)
+
+Wvolatile-register-var
+UrlSuffix(gcc/Warning-Options.html#index-Wno-volatile-register-var)
+
+Wvirtual-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-inheritance)
+
+Wvirtual-move-assign
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
+
+Wwrite-strings
+UrlSuffix(gcc/Warning-Options.html#index-Wno-write-strings)
+
+Wxor-used-as-pow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-xor-used-as-pow)
+
+Wzero-as-null-pointer-constant
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-zero-as-null-pointer-constant)
+
+Wuseless-cast
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-useless-cast)
+
+Wsubobject-linkage
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
+
+Welaborated-enum-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
+
+Wduplicate-decl-specifier
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
+
+Wrestrict
+UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+
+; skipping UrlSuffix for 'ansi' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
+;   duplicate: 'gcc/Non-bugs.html#index-ansi-3'
+;   duplicate: 'gcc/Other-Builtins.html#index-ansi-2'
+;   duplicate: 'gcc/Standards.html#index-ansi'
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+fabi-compat-version=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-compat-version)
+
+faccess-control
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faccess-control)
+
+fada-spec-parent=
+UrlSuffix(gcc/Overall-Options.html#index-fada-spec-parent)
+
+faligned-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new)
+
+faligned-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new)
+
+fasm
+UrlSuffix(gcc/C-Dialect-Options.html#index-fasm)
+
+; skipping UrlSuffix for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
+;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
+;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
+; skipping LangUrlSuffix_D for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gdc/Other-Builtins.html#index-fno-builtin-1'
+;   duplicate: 'gdc/Runtime-Options.html#index-fbuiltin'
+
+fcanonical-system-headers
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-canonical-system-headers)
+
+fchar8_t
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fchar8_005ft)
+
+fconcepts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts)
+
+fconcepts-ts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts-ts)
+
+fcond-mismatch
+UrlSuffix(gcc/C-Dialect-Options.html#index-fcond-mismatch)
+
+fconstant-string-class=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fconstant-string-class)
+
+fconstexpr-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-depth)
+
+fconstexpr-cache-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-cache-depth)
+
+fconstexpr-fp-except
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-fp-except)
+
+fconstexpr-loop-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-loop-limit)
+
+fconstexpr-ops-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-ops-limit)
+
+fcontracts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontracts)
+
+fcontract-assumption-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-assumption-mode)
+
+fcontract-build-level=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-build-level)
+
+fcontract-strict-declarations=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-strict-declarations)
+
+fcontract-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-mode)
+
+fcontract-continuation-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-continuation-mode)
+
+fcontract-role=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-role)
+
+fcoroutines
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcoroutines)
+
+fdebug-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-fdebug-cpp)
+
+fdeclone-ctor-dtor
+UrlSuffix(gcc/Optimize-Options.html#index-fdeclone-ctor-dtor)
+
+fdefault-inline
+UrlSuffix(gcc/Inline.html#index-fno-default-inline)
+
+fdiagnostics-show-template-tree
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-template-tree)
+
+fdirectives-only
+UrlSuffix(gcc/Preprocessor-Options.html#index-fdirectives-only)
+
+; skipping UrlSuffix for 'fdollars-in-identifiers' due to multiple URLs:
+;   duplicate: 'gcc/Interoperation.html#index-fdollars-in-identifiers-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-fdollars-in-identifiers'
+
+fmacro-prefix-map=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fmacro-prefix-map)
+
+fdump-ada-spec
+UrlSuffix(gcc/Overall-Options.html#index-fdump-ada-spec)
+
+felide-constructors
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-felide-constructors)
+
+felide-type
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-felide-type)
+
+fenforce-eh-specs
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fenforce-eh-specs)
+
+fexec-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fexec-charset)
+
+fextended-identifiers
+UrlSuffix(gcc/Preprocessor-Options.html#index-fextended-identifiers)
+
+finput-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-finput-charset)
+
+fextern-tls-init
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fextern-tls-init)
+
+ffold-simple-inlines
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ffold-simple-inlines)
+
+; skipping UrlSuffix for 'ffreestanding' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ffreestanding-1'
+;   duplicate: 'gcc/Standards.html#index-ffreestanding'
+;   duplicate: 'gcc/Warning-Options.html#index-ffreestanding-2'
+
+fgnu-keywords
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fgnu-keywords)
+
+fgnu-runtime
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fgnu-runtime)
+
+fgnu89-inline
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu89-inline)
+
+fhosted
+UrlSuffix(gcc/C-Dialect-Options.html#index-fhosted)
+
+; skipping UrlSuffix for 'fimplement-inlines' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplement-inlines'
+;   duplicate: 'gcc/C_002b_002b-Interface.html#index-fno-implement-inlines-1'
+
+fimplicit-constexpr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-constexpr)
+
+fimplicit-inline-templates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-inline-templates)
+
+; skipping UrlSuffix for 'fimplicit-templates' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-templates'
+;   duplicate: 'gcc/Template-Instantiation.html#index-fno-implicit-templates-1'
+
+fnew-inheriting-ctors
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-inheriting-ctors)
+
+fkeep-inline-dllexport
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-inline-dllexport)
+
+flax-vector-conversions
+UrlSuffix(gcc/C-Dialect-Options.html#index-flax-vector-conversions)
+
+fmodules-ts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodules-ts)
+
+fmodule-header
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header)
+
+fmodule-header=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header)
+
+fmodule-implicit-inline
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-implicit-inline)
+
+fmodule-only
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-only)
+
+fmodule-mapper=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-mapper)
+
+fmodule-lazy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-lazy)
+
+Winvalid-imported-macros
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-imported-macros)
+
+Wcompare-distinct-pointer-types
+UrlSuffix(gcc/Warning-Options.html#index-Wcompare-distinct-pointer-types)
+
+flang-info-include-translate
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate)
+
+flang-info-include-translate-not
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate-not)
+
+flang-info-include-translate=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate)
+
+flang-info-module-cmi
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi)
+
+flang-info-module-cmi=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi)
+
+fmax-include-depth=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fmax-include-depth)
+
+; skipping UrlSuffix for 'fms-extensions' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fms-extensions'
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fms-extensions-1'
+;   duplicate: 'gcc/Unnamed-Fields.html#index-fms-extensions-2'
+
+fnew-ttp-matching
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-ttp-matching)
+
+fnext-runtime
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnext-runtime)
+
+fnil-receivers
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnil-receivers)
+
+flocal-ivars
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-flocal-ivars)
+
+fivar-visibility=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fivar-visibility)
+
+fnonansi-builtins
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-nonansi-builtins)
+
+fnothrow-opt
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnothrow-opt)
+
+fobjc-abi-version=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-abi-version)
+
+fobjc-call-cxx-cdtors
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-call-cxx-cdtors)
+
+fobjc-direct-dispatch
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-direct-dispatch)
+
+fobjc-exceptions
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-exceptions)
+
+fobjc-gc
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-gc)
+
+fobjc-nilcheck
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-nilcheck)
+
+fopenacc
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc)
+
+fopenacc-dim=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
+
+fopenmp
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp)
+
+fopenmp-simd
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd)
+
+foperator-names
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-operator-names)
+
+foptional-diags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-optional-diags)
+
+fpch-deps
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-deps)
+
+fpch-preprocess
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-preprocess)
+
+fpermissive
+UrlSuffix(gcc/Warning-Options.html#index-fpermissive)
+
+; skipping UrlSuffix for 'fplan9-extensions' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fplan9-extensions'
+;   duplicate: 'gcc/Unnamed-Fields.html#index-fplan9-extensions-1'
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+ftrack-macro-expansion
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion)
+
+ftrack-macro-expansion=
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion)
+
+fpretty-templates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-pretty-templates)
+
+fprintf-return-value
+UrlSuffix(gcc/Optimize-Options.html#index-fno-printf-return-value)
+
+freplace-objc-classes
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-freplace-objc-classes)
+
+frtti
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti) LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-rtti)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+fshort-wchar
+UrlSuffix(gcc/Code-Gen-Options.html#index-fshort-wchar)
+
+; skipping UrlSuffix for 'fsigned-bitfields' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fno-signed-bitfields'
+;   duplicate: 'gcc/Non-bugs.html#index-fsigned-bitfields-1'
+
+; skipping UrlSuffix for 'fsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
+
+fsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fsized-deallocation)
+
+fstrict-flex-arrays
+UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays)
+
+fstrict-flex-arrays=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays)
+
+fsso-struct=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fsso-struct)
+
+fstats
+UrlSuffix(gcc/Developer-Options.html#index-fstats)
+
+fstrict-enums
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrict-enums)
+
+fstrong-eval-order
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order)
+
+fstrong-eval-order=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order)
+
+ftemplate-backtrace-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-backtrace-limit)
+
+ftemplate-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-depth)
+
+fthreadsafe-statics
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-threadsafe-statics)
+
+; skipping UrlSuffix for 'funsigned-bitfields' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fno-unsigned-bitfields'
+;   duplicate: 'gcc/Non-bugs.html#index-funsigned-bitfields-2'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-funsigned-bitfields-1'
+
+; skipping UrlSuffix for 'funsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'
+
+fuse-cxa-atexit
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fuse-cxa-atexit)
+
+fuse-cxa-get-exception-ptr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-use-cxa-get-exception-ptr)
+
+fvisibility-inlines-hidden
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-inlines-hidden)
+
+fvisibility-ms-compat
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-ms-compat)
+
+fweak
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-weak)
+
+fwide-exec-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fwide-exec-charset)
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+fzero-link
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fzero-link)
+
+gen-decls
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-gen-decls)
+
+femit-struct-debug-baseonly
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-baseonly)
+
+femit-struct-debug-reduced
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-reduced)
+
+femit-struct-debug-detailed=
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-detailed)
+
+fext-numeric-literals
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fext-numeric-literals)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imacros
+UrlSuffix(gcc/Preprocessor-Options.html#index-imacros)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+include
+UrlSuffix(gcc/Preprocessor-Options.html#index-include)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+iwithprefix
+UrlSuffix(gcc/Directory-Options.html#index-iwithprefix)
+
+iwithprefixbefore
+UrlSuffix(gcc/Directory-Options.html#index-iwithprefixbefore)
+
+no-integrated-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-no-integrated-cpp)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+; skipping UrlSuffix for 'nostdinc++' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-nostdinc_002b_002b'
+;   duplicate: 'gcc/Directory-Options.html#index-nostdinc_002b_002b-1'
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+; skipping UrlSuffix for 'pedantic' due to multiple URLs:
+;   duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3'
+;   duplicate: 'gcc/C-Extensions.html#index-pedantic-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4'
+
+print-objc-runtime-info
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-print-objc-runtime-info)
+
+remap
+UrlSuffix(gcc/Preprocessor-Options.html#index-remap)
+
+stdlib=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-stdlib)
+
+; skipping UrlSuffix for 'traditional' due to multiple URLs:
+;   duplicate: 'gcc/Incompatibilities.html#index-traditional-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-traditional'
+
+traditional-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp)
+
+trigraphs
+UrlSuffix(gcc/Preprocessor-Options.html#index-trigraphs)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
+w
+UrlSuffix(gcc/Warning-Options.html#index-w)
+
diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
new file mode 100644
index 000000000000..407c86018fc8
--- /dev/null
+++ b/gcc/common.opt.urls
@@ -0,0 +1,1832 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/common.opt and generated HTML
+
+###
+UrlSuffix(gcc/Overall-Options.html#index-_0023_0023_0023)
+
+fversion
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+B
+UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+O
+UrlSuffix(gcc/Optimize-Options.html#index-O)
+
+Os
+UrlSuffix(gcc/Optimize-Options.html#index-Os)
+
+Ofast
+UrlSuffix(gcc/Optimize-Options.html#index-Ofast)
+
+Og
+UrlSuffix(gcc/Optimize-Options.html#index-Og)
+
+Oz
+UrlSuffix(gcc/Optimize-Options.html#index-Oz)
+
+Q
+UrlSuffix(gcc/Developer-Options.html#index-Q)
+
+Qn
+UrlSuffix(gcc/System-V-Options.html#index-Qn)
+
+Qy
+UrlSuffix(gcc/System-V-Options.html#index-Qy)
+
+; skipping UrlSuffix for 'S' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-S-1'
+;   duplicate: 'gcc/Overall-Options.html#index-S'
+
+T
+UrlSuffix(gcc/Link-Options.html#index-T)
+
+; skipping UrlSuffix for 'W' due to multiple URLs:
+;   duplicate: 'gcc/Incompatibilities.html#index-W-3'
+;   duplicate: 'gcc/Warning-Options.html#index-W'
+
+Waggregate-return
+UrlSuffix(gcc/Warning-Options.html#index-Waggregate-return)
+
+Waggressive-loop-optimizations
+UrlSuffix(gcc/Warning-Options.html#index-Waggressive-loop-optimizations)
+
+Warray-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Warray-bounds=
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Wuse-after-free
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wuse-after-free=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wattributes
+UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
+
+Wattributes=
+UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
+
+Wattribute-alias
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
+
+Wattribute-alias=
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
+
+Wcast-align
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-align)
+
+Wcast-align=strict
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-align_003dstrict)
+
+Wcomplain-wrong-lang
+UrlSuffix(gcc/Warning-Options.html#index-Wcomplain-wrong-lang)
+
+Wcpp
+UrlSuffix(gcc/Warning-Options.html#index-Wcpp)
+
+Wattribute-warning
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-warning)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Wdeprecated-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated-declarations)
+
+Wdisabled-optimization
+UrlSuffix(gcc/Warning-Options.html#index-Wdisabled-optimization)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Werror=
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wfatal-errors
+UrlSuffix(gcc/Warning-Options.html#index-Wfatal-errors)
+
+Wframe-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-larger-than_003d)
+
+Wfree-nonheap-object
+UrlSuffix(gcc/Warning-Options.html#index-Wfree-nonheap-object)
+
+Wimplicit-fallthrough
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
+; skipping UrlSuffix for 'Winline' due to multiple URLs:
+;   duplicate: 'gcc/Inline.html#index-Winline-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Winline'
+
+Winvalid-memory-model
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-memory-model)
+
+Wlarger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wlarger-than_003d)
+
+Wnonnull-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare)
+
+Wnull-dereference
+UrlSuffix(gcc/Warning-Options.html#index-Wno-null-dereference)
+
+Wunsafe-loop-optimizations
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unsafe-loop-optimizations)
+
+Wmissing-noreturn
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-noreturn)
+
+Wodr
+UrlSuffix(gcc/Warning-Options.html#index-Wno-odr)
+
+Woverflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-overflow)
+
+Wlto-type-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wlto-type-mismatch)
+
+Wpacked
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed)
+
+Wpadded
+UrlSuffix(gcc/Warning-Options.html#index-Wno-padded)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-local-addr
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-local-addr)
+
+Wshadow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow)
+
+Wshadow=global
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dglobal)
+
+Wshadow=local
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dlocal)
+
+Wshadow=compatible-local
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dcompatible-local)
+
+Wstack-protector
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-protector)
+
+Wstack-usage=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-usage)
+
+Wstrict-aliasing
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-aliasing=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wstrict-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wsuggest-attribute=cold
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dcold)
+
+Wsuggest-attribute=const
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dconst)
+
+Wsuggest-attribute=pure
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dpure)
+
+Wsuggest-attribute=noreturn
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dnoreturn)
+
+Wsuggest-attribute=malloc
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dmalloc)
+
+Wsuggest-final-types
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-types)
+
+Wsuggest-final-methods
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-methods)
+
+Wswitch-unreachable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-unreachable)
+
+Wsystem-headers
+UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
+
+Wtrampolines
+UrlSuffix(gcc/Warning-Options.html#index-Wno-trampolines)
+
+Wtrivial-auto-var-init
+UrlSuffix(gcc/Warning-Options.html#index-Wno-trivial-auto-var-init)
+
+Wtype-limits
+UrlSuffix(gcc/Warning-Options.html#index-Wno-type-limits)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+Wunused-but-set-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-parameter)
+
+Wunused-but-set-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-variable)
+
+Wunused-function
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-function)
+
+Wunused-label
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-label)
+
+Wunused-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter)
+
+Wunused-value
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-value)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wcoverage-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-mismatch)
+
+Wcoverage-invalid-line-number
+UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-invalid-line-number)
+
+Wmissing-profile
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-profile)
+
+Wvector-operation-performance
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vector-operation-performance)
+
+Wtsan
+UrlSuffix(gcc/Warning-Options.html#index-Wno-tsan)
+
+Xassembler
+UrlSuffix(gcc/Assembler-Options.html#index-Xassembler)
+
+Xlinker
+UrlSuffix(gcc/Link-Options.html#index-Xlinker)
+
+Xpreprocessor
+UrlSuffix(gcc/Preprocessor-Options.html#index-Xpreprocessor)
+
+aux-info
+UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
+
+aux-info=
+UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
+
+coverage
+UrlSuffix(gcc/Instrumentation-Options.html#index-coverage)
+
+; skipping UrlSuffix for 'c' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-c-1'
+;   duplicate: 'gcc/Overall-Options.html#index-c'
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+dumpbase
+UrlSuffix(gcc/Overall-Options.html#index-dumpbase)
+
+dumpbase-ext
+UrlSuffix(gcc/Overall-Options.html#index-dumpbase-ext)
+
+dumpdir
+UrlSuffix(gcc/Overall-Options.html#index-dumpdir)
+
+dumpmachine
+UrlSuffix(gcc/Developer-Options.html#index-dumpmachine)
+
+dumpspecs
+UrlSuffix(gcc/Developer-Options.html#index-dumpspecs)
+
+dumpversion
+UrlSuffix(gcc/Developer-Options.html#index-dumpversion)
+
+dumpfullversion
+UrlSuffix(gcc/Developer-Options.html#index-dumpfullversion)
+
+e
+UrlSuffix(gcc/Link-Options.html#index-e)
+
+fabi-version=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-version)
+
+faggressive-loop-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-faggressive-loop-optimizations)
+
+falign-functions
+UrlSuffix(gcc/Optimize-Options.html#index-falign-functions)
+
+falign-functions=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-functions)
+
+falign-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps)
+
+falign-jumps=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps)
+
+falign-labels
+UrlSuffix(gcc/Optimize-Options.html#index-falign-labels)
+
+falign-labels=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-labels)
+
+falign-loops
+UrlSuffix(gcc/Optimize-Options.html#index-falign-loops)
+
+falign-loops=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-loops)
+
+fallow-store-data-races
+UrlSuffix(gcc/Optimize-Options.html#index-fallow-store-data-races)
+
+fanalyzer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer)
+
+fasan-shadow-offset=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fasan-shadow-offset)
+
+fsanitize-sections=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-sections)
+
+fsanitize-recover=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover)
+
+fsanitize-recover
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover)
+
+fsanitize-trap=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap)
+
+fsanitize-trap
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap)
+
+fsanitize-address-use-after-scope
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-address-use-after-scope)
+
+fsanitize-undefined-trap-on-error
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-undefined-trap-on-error)
+
+fasynchronous-unwind-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-fasynchronous-unwind-tables)
+
+fauto-inc-dec
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-inc-dec)
+
+fauto-profile
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile)
+
+fauto-profile=
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile)
+
+fbounds-check
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+fbranch-count-reg
+UrlSuffix(gcc/Optimize-Options.html#index-fbranch-count-reg)
+
+fbranch-probabilities
+UrlSuffix(gcc/Optimize-Options.html#index-fbranch-probabilities)
+
+fcallgraph-info
+UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info)
+
+fcallgraph-info=
+UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info)
+
+fcaller-saves
+UrlSuffix(gcc/Optimize-Options.html#index-fcaller-saves)
+
+fcheck-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcheck-new)
+
+fchecking
+UrlSuffix(gcc/Developer-Options.html#index-fchecking)
+
+fchecking=
+UrlSuffix(gcc/Developer-Options.html#index-fchecking)
+
+fcanon-prefix-map
+UrlSuffix(gcc/Overall-Options.html#index-fcanon-prefix-map)
+
+fcode-hoisting
+UrlSuffix(gcc/Optimize-Options.html#index-fcode-hoisting)
+
+fcombine-stack-adjustments
+UrlSuffix(gcc/Optimize-Options.html#index-fcombine-stack-adjustments)
+
+fcommon
+UrlSuffix(gcc/Code-Gen-Options.html#index-fcommon)
+
+fcompare-debug
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug)
+
+fcompare-debug=
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug)
+
+fcompare-debug-second
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug-second)
+
+fcompare-elim
+UrlSuffix(gcc/Optimize-Options.html#index-fcompare-elim)
+
+fconserve-stack
+UrlSuffix(gcc/Optimize-Options.html#index-fconserve-stack)
+
+fcprop-registers
+UrlSuffix(gcc/Optimize-Options.html#index-fcprop-registers)
+
+ffold-mem-offsets
+UrlSuffix(gcc/Optimize-Options.html#index-ffold-mem-offsets)
+
+fcrossjumping
+UrlSuffix(gcc/Optimize-Options.html#index-fcrossjumping)
+
+fcse-follow-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-fcse-follow-jumps)
+
+fcse-skip-blocks
+UrlSuffix(gcc/Optimize-Options.html#index-fcse-skip-blocks)
+
+fcx-limited-range
+UrlSuffix(gcc/Optimize-Options.html#index-fcx-limited-range)
+
+fcx-fortran-rules
+UrlSuffix(gcc/Optimize-Options.html#index-fcx-fortran-rules)
+
+fdata-sections
+UrlSuffix(gcc/Optimize-Options.html#index-fdata-sections)
+
+fdbg-cnt-list
+UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt-list)
+
+fdbg-cnt=
+UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt)
+
+fdebug-prefix-map=
+UrlSuffix(gcc/Debugging-Options.html#index-fdebug-prefix-map)
+
+ffile-prefix-map=
+UrlSuffix(gcc/Overall-Options.html#index-ffile-prefix-map)
+
+fdebug-types-section
+UrlSuffix(gcc/Debugging-Options.html#index-fdebug-types-section)
+
+fdefer-pop
+UrlSuffix(gcc/Optimize-Options.html#index-fdefer-pop)
+
+fdelayed-branch
+UrlSuffix(gcc/Optimize-Options.html#index-fdelayed-branch)
+
+fdelete-dead-exceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fdelete-dead-exceptions)
+
+fdelete-null-pointer-checks
+UrlSuffix(gcc/Optimize-Options.html#index-fdelete-null-pointer-checks)
+
+fdevirtualize-at-ltrans
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-at-ltrans)
+
+fdevirtualize-speculatively
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-speculatively)
+
+fdevirtualize
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize)
+
+fdiagnostics-show-location=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-location)
+
+fdiagnostics-show-caret
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-caret)
+
+fdiagnostics-show-labels
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-labels)
+
+fdiagnostics-show-line-numbers
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-line-numbers)
+
+fdiagnostics-color
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
+
+fdiagnostics-color=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
+
+fdiagnostics-urls=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-urls)
+
+fdiagnostics-column-unit=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-unit)
+
+fdiagnostics-column-origin=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-origin)
+
+fdiagnostics-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format)
+
+fdiagnostics-escape-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-escape-format)
+
+fdiagnostics-parseable-fixits
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-parseable-fixits)
+
+fdiagnostics-generate-patch
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-generate-patch)
+
+fdiagnostics-show-option
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-option)
+
+fdiagnostics-show-cwe
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-cwe)
+
+fdiagnostics-show-rules
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-rules)
+
+fdiagnostics-path-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-path-format)
+
+ftabstop=
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftabstop)
+
+fdiagnostics-show-path-depths
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-path-depths)
+
+fdiagnostics-text-art-charset=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-text-art-charset)
+
+fdiagnostics-minimum-margin-width=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-minimum-margin-width)
+
+fdisable-
+UrlSuffix(gcc/Developer-Options.html#index-fdisable-)
+
+fenable-
+UrlSuffix(gcc/Developer-Options.html#index-fenable-)
+
+fdump-final-insns
+UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns)
+
+fdump-final-insns=
+UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns)
+
+fdump-go-spec=
+UrlSuffix(gcc/Overall-Options.html#index-fdump-go-spec)
+
+fdump-noaddr
+UrlSuffix(gcc/Developer-Options.html#index-fdump-noaddr)
+
+freport-bug
+UrlSuffix(gcc/Developer-Options.html#index-freport-bug)
+
+fdump-passes
+UrlSuffix(gcc/Developer-Options.html#index-fdump-passes)
+
+fdump-unnumbered
+UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered)
+
+fdump-unnumbered-links
+UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered-links)
+
+fdwarf2-cfi-asm
+UrlSuffix(gcc/Debugging-Options.html#index-fdwarf2-cfi-asm)
+
+fearly-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-fearly-inlining)
+
+fipa-sra
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-sra)
+
+feliminate-unused-debug-symbols
+UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-symbols)
+
+feliminate-unused-debug-types
+UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-types)
+
+femit-class-debug-always
+UrlSuffix(gcc/Debugging-Options.html#index-femit-class-debug-always)
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fexpensive-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-fexpensive-optimizations)
+
+fexcess-precision=
+UrlSuffix(gcc/Optimize-Options.html#index-fexcess-precision)
+
+fpermitted-flt-eval-methods=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fpermitted-flt-eval-methods)
+
+ffast-math
+UrlSuffix(gcc/Optimize-Options.html#index-ffast-math)
+
+ffat-lto-objects
+UrlSuffix(gcc/Optimize-Options.html#index-ffat-lto-objects)
+
+ffinite-math-only
+UrlSuffix(gcc/Optimize-Options.html#index-ffinite-math-only)
+
+ffinite-loops
+UrlSuffix(gcc/Optimize-Options.html#index-ffinite-loops)
+
+; skipping UrlSuffix for 'ffloat-store' due to multiple URLs:
+;   duplicate: 'gcc/Disappointments.html#index-ffloat-store-1'
+;   duplicate: 'gcc/Optimize-Options.html#index-ffloat-store'
+
+fforward-propagate
+UrlSuffix(gcc/Optimize-Options.html#index-fforward-propagate)
+
+ffp-contract=
+UrlSuffix(gcc/Optimize-Options.html#index-ffp-contract)
+
+ffp-int-builtin-inexact
+UrlSuffix(gcc/Optimize-Options.html#index-ffp-int-builtin-inexact)
+
+ffunction-cse
+UrlSuffix(gcc/Optimize-Options.html#index-ffunction-cse)
+
+ffunction-sections
+UrlSuffix(gcc/Optimize-Options.html#index-ffunction-sections)
+
+fgcse
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse)
+
+fgcse-lm
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-lm)
+
+fgcse-sm
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-sm)
+
+fgcse-las
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-las)
+
+fgcse-after-reload
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-after-reload)
+
+fgraphite-identity
+UrlSuffix(gcc/Optimize-Options.html#index-fgraphite-identity)
+
+fhoist-adjacent-loads
+UrlSuffix(gcc/Optimize-Options.html#index-fhoist-adjacent-loads)
+
+flarge-source-files
+UrlSuffix(gcc/Preprocessor-Options.html#index-flarge-source-files)
+
+floop-parallelize-all
+UrlSuffix(gcc/Optimize-Options.html#index-floop-parallelize-all)
+
+floop-strip-mine
+UrlSuffix(gcc/Optimize-Options.html#index-floop-strip-mine)
+
+floop-interchange
+UrlSuffix(gcc/Optimize-Options.html#index-floop-interchange)
+
+floop-block
+UrlSuffix(gcc/Optimize-Options.html#index-floop-block)
+
+floop-unroll-and-jam
+UrlSuffix(gcc/Optimize-Options.html#index-floop-unroll-and-jam)
+
+fgnu-tm
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu-tm)
+
+fgnu-unique
+UrlSuffix(gcc/Code-Gen-Options.html#index-fgnu-unique)
+
+floop-nest-optimize
+UrlSuffix(gcc/Optimize-Options.html#index-floop-nest-optimize)
+
+fstrict-volatile-bitfields
+UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-volatile-bitfields)
+
+fstore-merging
+UrlSuffix(gcc/Optimize-Options.html#index-fstore-merging)
+
+fguess-branch-probability
+UrlSuffix(gcc/Optimize-Options.html#index-fguess-branch-probability)
+
+fharden-compares
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-compares)
+
+fharden-conditional-branches
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-conditional-branches)
+
+fharden-control-flow-redundancy
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-control-flow-redundancy)
+
+fhardcfr-skip-leaf
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-skip-leaf)
+
+fhardcfr-check-returning-calls
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-returning-calls)
+
+fhardcfr-check-exceptions
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-exceptions)
+
+fhardcfr-check-noreturn-calls=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-noreturn-calls)
+
+fident
+UrlSuffix(gcc/Code-Gen-Options.html#index-fident)
+
+fif-conversion
+UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion)
+
+fif-conversion2
+UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion2)
+
+ftree-loop-if-convert
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-if-convert)
+
+finhibit-size-directive
+UrlSuffix(gcc/Code-Gen-Options.html#index-finhibit-size-directive)
+
+findirect-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-findirect-inlining)
+
+finline
+UrlSuffix(gcc/Optimize-Options.html#index-finline)
+
+finline-small-functions
+UrlSuffix(gcc/Optimize-Options.html#index-finline-small-functions)
+
+finline-functions
+UrlSuffix(gcc/Optimize-Options.html#index-finline-functions)
+
+finline-functions-called-once
+UrlSuffix(gcc/Optimize-Options.html#index-finline-functions-called-once)
+
+finline-limit=
+UrlSuffix(gcc/Optimize-Options.html#index-finline-limit)
+
+fcf-protection
+UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
+
+fcf-protection=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
+
+finstrument-functions
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions)
+
+finstrument-functions-once
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-once)
+
+finstrument-functions-exclude-function-list=
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-function-list)
+
+finstrument-functions-exclude-file-list=
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-file-list)
+
+fipa-cp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp)
+
+fipa-cp-clone
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp-clone)
+
+fipa-bit-cp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-bit-cp)
+
+fipa-modref
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-modref)
+
+fipa-profile
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-profile)
+
+fipa-pta
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-pta)
+
+fipa-pure-const
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-pure-const)
+
+fipa-icf
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-icf)
+
+fipa-reference
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference)
+
+fipa-reference-addressable
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference-addressable)
+
+fipa-stack-alignment
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-stack-alignment)
+
+fipa-vrp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-vrp)
+
+fira-algorithm=
+UrlSuffix(gcc/Optimize-Options.html#index-fira-algorithm)
+
+fipa-strict-aliasing
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-strict-aliasing)
+
+fira-region=
+UrlSuffix(gcc/Optimize-Options.html#index-fira-region)
+
+fira-hoist-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fira-hoist-pressure)
+
+fira-loop-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fira-loop-pressure)
+
+fira-share-save-slots
+UrlSuffix(gcc/Optimize-Options.html#index-fira-share-save-slots)
+
+fira-share-spill-slots
+UrlSuffix(gcc/Optimize-Options.html#index-fira-share-spill-slots)
+
+fira-verbose=
+UrlSuffix(gcc/Developer-Options.html#index-fira-verbose)
+
+fivopts
+UrlSuffix(gcc/Optimize-Options.html#index-fivopts)
+
+fjump-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-fjump-tables)
+
+fbit-tests
+UrlSuffix(gcc/Code-Gen-Options.html#index-fbit-tests)
+
+; skipping UrlSuffix for 'fkeep-inline-functions' due to multiple URLs:
+;   duplicate: 'gcc/Inline.html#index-fkeep-inline-functions-1'
+;   duplicate: 'gcc/Optimize-Options.html#index-fkeep-inline-functions'
+
+fkeep-static-functions
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-functions)
+
+fkeep-static-consts
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-consts)
+
+fleading-underscore
+UrlSuffix(gcc/Code-Gen-Options.html#index-fleading-underscore)
+
+flra-remat
+UrlSuffix(gcc/Optimize-Options.html#index-flra-remat)
+
+flto
+UrlSuffix(gcc/Optimize-Options.html#index-flto)
+
+flto=
+UrlSuffix(gcc/Optimize-Options.html#index-flto)
+
+flto-partition=
+UrlSuffix(gcc/Optimize-Options.html#index-flto-partition)
+
+flto-compression-level=
+UrlSuffix(gcc/Optimize-Options.html#index-flto-compression-level)
+
+flto-report
+UrlSuffix(gcc/Developer-Options.html#index-flto-report)
+
+flto-report-wpa
+UrlSuffix(gcc/Developer-Options.html#index-flto-report-wpa)
+
+fmath-errno
+UrlSuffix(gcc/Optimize-Options.html#index-fmath-errno)
+
+fmax-errors=
+UrlSuffix(gcc/Warning-Options.html#index-fmax-errors) LangUrlSuffix_D(gdc/Warnings.html#index-fmax-errors)
+
+fmem-report
+UrlSuffix(gcc/Developer-Options.html#index-fmem-report)
+
+fmem-report-wpa
+UrlSuffix(gcc/Developer-Options.html#index-fmem-report-wpa)
+
+fmerge-all-constants
+UrlSuffix(gcc/Optimize-Options.html#index-fmerge-all-constants)
+
+fmerge-constants
+UrlSuffix(gcc/Optimize-Options.html#index-fmerge-constants)
+
+fmerge-debug-strings
+UrlSuffix(gcc/Debugging-Options.html#index-fmerge-debug-strings)
+
+fmessage-length=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fmessage-length)
+
+fmodulo-sched
+UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched)
+
+fmodulo-sched-allow-regmoves
+UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched-allow-regmoves)
+
+fmove-loop-invariants
+UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-invariants)
+
+fmove-loop-stores
+UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-stores)
+
+fmultiflags
+UrlSuffix(gcc/Developer-Options.html#index-fmultiflags)
+
+fdce
+UrlSuffix(gcc/Optimize-Options.html#index-fdce)
+
+fdse
+UrlSuffix(gcc/Optimize-Options.html#index-fdse)
+
+freschedule-modulo-scheduled-loops
+UrlSuffix(gcc/Optimize-Options.html#index-freschedule-modulo-scheduled-loops)
+
+fnon-call-exceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fnon-call-exceptions)
+
+foffload=
+UrlSuffix(gcc/C-Dialect-Options.html#index-foffload)
+
+foffload-options=
+UrlSuffix(gcc/C-Dialect-Options.html#index-foffload-options)
+
+fomit-frame-pointer
+UrlSuffix(gcc/Optimize-Options.html#index-fomit-frame-pointer)
+
+fopenmp-target-simd-clone
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone)
+
+fopenmp-target-simd-clone=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone)
+
+fopt-info
+UrlSuffix(gcc/Developer-Options.html#index-fopt-info)
+
+fsave-optimization-record
+UrlSuffix(gcc/Developer-Options.html#index-fsave-optimization-record)
+
+foptimize-sibling-calls
+UrlSuffix(gcc/Optimize-Options.html#index-foptimize-sibling-calls)
+
+fpartial-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-fpartial-inlining)
+
+fpre-ipa-mem-report
+UrlSuffix(gcc/Developer-Options.html#index-fpre-ipa-mem-report)
+
+fpost-ipa-mem-report
+UrlSuffix(gcc/Developer-Options.html#index-fpost-ipa-mem-report)
+
+fpack-struct
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct)
+
+fpack-struct=
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct)
+
+; skipping UrlSuffix for 'fpcc-struct-return' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fpcc-struct-return'
+;   duplicate: 'gcc/Incompatibilities.html#index-fpcc-struct-return-1'
+
+fpeel-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fpeel-loops)
+
+fpeephole
+UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole)
+
+fpeephole2
+UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole2)
+
+fPIC
+UrlSuffix(gcc/Code-Gen-Options.html#index-fPIC)
+
+fPIE
+UrlSuffix(gcc/Code-Gen-Options.html#index-fPIE)
+
+fpic
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpic)
+
+fpie
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpie)
+
+fplt
+UrlSuffix(gcc/Code-Gen-Options.html#index-fno-plt)
+
+fplugin=
+UrlSuffix(gcc/Overall-Options.html#index-fplugin)
+
+fpredictive-commoning
+UrlSuffix(gcc/Optimize-Options.html#index-fpredictive-commoning)
+
+fprefetch-loop-arrays
+UrlSuffix(gcc/Optimize-Options.html#index-fprefetch-loop-arrays)
+
+fprofile-abs-path
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-abs-path)
+
+; skipping UrlSuffix for 'fprofile-arcs' due to multiple URLs:
+;   duplicate: 'gcc/Instrumentation-Options.html#index-fprofile-arcs'
+;   duplicate: 'gcc/Other-Builtins.html#index-fprofile-arcs-1'
+
+fprofile-dir=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-dir)
+
+fprofile-note=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-note)
+
+fprofile-correction
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-correction)
+
+fprofile-update=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-update)
+
+fprofile-filter-files=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-filter-files)
+
+fprofile-exclude-files=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-exclude-files)
+
+fprofile-reproducible=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-reproducible)
+
+fprofile-prefix-path=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-path)
+
+fprofile-prefix-map=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-map)
+
+fprofile-generate
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate)
+
+fprofile-generate=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate)
+
+fprofile-info-section
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section)
+
+fprofile-info-section=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section)
+
+fprofile-partial-training
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-partial-training)
+
+fprofile-use
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use)
+
+fprofile-use=
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use)
+
+fprofile-values
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-values)
+
+fprofile-report
+UrlSuffix(gcc/Developer-Options.html#index-fprofile-report)
+
+fprofile-reorder-functions
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-reorder-functions)
+
+fpatchable-function-entry=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fpatchable-function-entry)
+
+frandom-seed
+UrlSuffix(gcc/Developer-Options.html#index-frandom-seed)
+
+frandom-seed=
+UrlSuffix(gcc/Developer-Options.html#index-frandom-seed)
+
+frecord-gcc-switches
+UrlSuffix(gcc/Code-Gen-Options.html#index-frecord-gcc-switches)
+
+freg-struct-return
+UrlSuffix(gcc/Code-Gen-Options.html#index-freg-struct-return)
+
+flifetime-dse
+UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
+
+flifetime-dse=
+UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
+
+flive-patching
+UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
+
+flive-patching=
+UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
+
+fallocation-dce
+UrlSuffix(gcc/Optimize-Options.html#index-fno-allocation-dce)
+
+flive-range-shrinkage
+UrlSuffix(gcc/Optimize-Options.html#index-flive-range-shrinkage)
+
+frename-registers
+UrlSuffix(gcc/Optimize-Options.html#index-frename-registers)
+
+fschedule-fusion
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-fusion)
+
+freorder-blocks
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks)
+
+freorder-blocks-algorithm=
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-algorithm)
+
+freorder-blocks-and-partition
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-and-partition)
+
+freorder-functions
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-functions)
+
+frerun-cse-after-loop
+UrlSuffix(gcc/Optimize-Options.html#index-frerun-cse-after-loop)
+
+frounding-math
+UrlSuffix(gcc/Optimize-Options.html#index-frounding-math)
+
+fsched-interblock
+UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-interblock)
+
+fsched-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-pressure)
+
+fsched-spec
+UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-spec)
+
+fsched-spec-load
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load)
+
+fsched-spec-load-dangerous
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load-dangerous)
+
+fsched-verbose=
+UrlSuffix(gcc/Developer-Options.html#index-fsched-verbose)
+
+fsched2-use-superblocks
+UrlSuffix(gcc/Optimize-Options.html#index-fsched2-use-superblocks)
+
+fschedule-insns
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns)
+
+fschedule-insns2
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns2)
+
+fselective-scheduling
+UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling)
+
+fselective-scheduling2
+UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling2)
+
+fsel-sched-pipelining
+UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining)
+
+fsel-sched-pipelining-outer-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining-outer-loops)
+
+fsemantic-interposition
+UrlSuffix(gcc/Optimize-Options.html#index-fsemantic-interposition)
+
+fsched-stalled-insns
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns)
+
+fsched-stalled-insns=
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns)
+
+fsched-stalled-insns-dep
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep)
+
+fsched-stalled-insns-dep=
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep)
+
+fsched-group-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-group-heuristic)
+
+fsched-critical-path-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-critical-path-heuristic)
+
+fsched-spec-insn-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-insn-heuristic)
+
+fsched-rank-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-rank-heuristic)
+
+fsched-last-insn-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-last-insn-heuristic)
+
+fsched-dep-count-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-dep-count-heuristic)
+
+fsection-anchors
+UrlSuffix(gcc/Optimize-Options.html#index-fsection-anchors)
+
+free
+UrlSuffix(gcc/Optimize-Options.html#index-free-1)
+
+fshow-column
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fno-show-column)
+
+fshrink-wrap
+UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap)
+
+fshrink-wrap-separate
+UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap-separate)
+
+fsignaling-nans
+UrlSuffix(gcc/Optimize-Options.html#index-fsignaling-nans)
+
+fsigned-zeros
+UrlSuffix(gcc/Optimize-Options.html#index-fno-signed-zeros)
+
+fsingle-precision-constant
+UrlSuffix(gcc/Optimize-Options.html#index-fsingle-precision-constant)
+
+fsplit-ivs-in-unroller
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-ivs-in-unroller)
+
+fsplit-stack
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsplit-stack)
+
+fsplit-wide-types
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types)
+
+fsplit-wide-types-early
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types-early)
+
+fssa-backprop
+UrlSuffix(gcc/Optimize-Options.html#index-fssa-backprop)
+
+fssa-phiopt
+UrlSuffix(gcc/Optimize-Options.html#index-fssa-phiopt)
+
+fstdarg-opt
+UrlSuffix(gcc/Optimize-Options.html#index-fstdarg-opt)
+
+fvariable-expansion-in-unroller
+UrlSuffix(gcc/Optimize-Options.html#index-fvariable-expansion-in-unroller)
+
+fstack-check=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check)
+
+fstack-check
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check)
+
+fstack-clash-protection
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-clash-protection)
+
+fstack-limit
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-stack-limit)
+
+fstack-limit-register=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-register)
+
+fstack-limit-symbol=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-symbol)
+
+fstack-protector
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector)
+
+fstack-protector-all
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-all)
+
+fstack-protector-strong
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-strong)
+
+fstack-protector-explicit
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-explicit)
+
+fstack-usage
+UrlSuffix(gcc/Developer-Options.html#index-fstack-usage)
+
+fstrict-aliasing
+UrlSuffix(gcc/Optimize-Options.html#index-fstrict-aliasing)
+
+fstrict-overflow
+UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-overflow)
+
+fsync-libcalls
+UrlSuffix(gcc/Code-Gen-Options.html#index-fsync-libcalls)
+
+fsyntax-only
+UrlSuffix(gcc/Warning-Options.html#index-fsyntax-only) LangUrlSuffix_D(gdc/Warnings.html#index-fno-syntax-only)
+
+ftest-coverage
+UrlSuffix(gcc/Instrumentation-Options.html#index-ftest-coverage)
+
+fthread-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-fthread-jumps)
+
+ftime-report
+UrlSuffix(gcc/Developer-Options.html#index-ftime-report)
+
+ftime-report-details
+UrlSuffix(gcc/Developer-Options.html#index-ftime-report-details)
+
+ftls-model=
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftls-model)
+
+ftoplevel-reorder
+UrlSuffix(gcc/Optimize-Options.html#index-fno-toplevel-reorder)
+
+ftracer
+UrlSuffix(gcc/Optimize-Options.html#index-ftracer)
+
+ftrampolines
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampolines)
+
+ftrampoline-impl=
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampoline-impl)
+
+ftrapping-math
+UrlSuffix(gcc/Optimize-Options.html#index-fno-trapping-math)
+
+ftrapv
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrapv)
+
+ftree-ccp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ccp)
+
+ftree-bit-ccp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-bit-ccp)
+
+ftree-ch
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ch)
+
+ftree-coalesce-vars
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-coalesce-vars)
+
+ftree-copy-prop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-copy-prop)
+
+ftree-switch-conversion
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-switch-conversion)
+
+ftree-dce
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dce)
+
+ftree-dominator-opts
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dominator-opts)
+
+ftree-tail-merge
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-tail-merge)
+
+ftree-dse
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dse)
+
+ftree-forwprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-forwprop)
+
+ftree-fre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-fre)
+
+foptimize-strlen
+UrlSuffix(gcc/Optimize-Options.html#index-foptimize-strlen)
+
+fisolate-erroneous-paths-dereference
+UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-dereference)
+
+fisolate-erroneous-paths-attribute
+UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-attribute)
+
+ftree-loop-distribution
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribution)
+
+ftree-loop-distribute-patterns
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribute-patterns)
+
+ftree-loop-im
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-im)
+
+ftree-loop-linear
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-linear)
+
+ftree-loop-ivcanon
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-ivcanon)
+
+ftree-loop-optimize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-optimize)
+
+ftree-parallelize-loops=
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-parallelize-loops)
+
+ftree-phiprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-phiprop)
+
+ftree-pre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-pre)
+
+ftree-partial-pre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-partial-pre)
+
+ftree-pta
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-pta)
+
+ftree-reassoc
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-reassoc)
+
+ftree-sink
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-sink)
+
+ftree-slsr
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-slsr)
+
+ftree-sra
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-sra)
+
+ftree-ter
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ter)
+
+ftree-vrp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-vrp)
+
+fsplit-paths
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-paths)
+
+funconstrained-commons
+UrlSuffix(gcc/Optimize-Options.html#index-funconstrained-commons)
+
+funit-at-a-time
+UrlSuffix(gcc/Optimize-Options.html#index-funit-at-a-time)
+
+funreachable-traps
+UrlSuffix(gcc/Optimize-Options.html#index-funreachable-traps)
+
+funroll-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funroll-loops)
+
+funroll-all-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funroll-all-loops)
+
+fassociative-math
+UrlSuffix(gcc/Optimize-Options.html#index-fassociative-math)
+
+freciprocal-math
+UrlSuffix(gcc/Optimize-Options.html#index-freciprocal-math)
+
+funsafe-math-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-funsafe-math-optimizations)
+
+funswitch-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funswitch-loops)
+
+fsplit-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-loops)
+
+fversion-loops-for-strides
+UrlSuffix(gcc/Optimize-Options.html#index-fversion-loops-for-strides)
+
+funwind-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-funwind-tables)
+
+fuse-ld=bfd
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dbfd)
+
+fuse-ld=gold
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dgold)
+
+fuse-ld=lld
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dlld)
+
+fuse-ld=mold
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dmold)
+
+fuse-linker-plugin
+UrlSuffix(gcc/Optimize-Options.html#index-fuse-linker-plugin)
+
+fvar-tracking
+UrlSuffix(gcc/Debugging-Options.html#index-fvar-tracking)
+
+fvar-tracking-assignments
+UrlSuffix(gcc/Debugging-Options.html#index-fno-var-tracking-assignments)
+
+fvar-tracking-assignments-toggle
+UrlSuffix(gcc/Developer-Options.html#index-fno-var-tracking-assignments-toggle)
+
+ftree-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-vectorize)
+
+ftree-loop-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-vectorize)
+
+ftree-slp-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-slp-vectorize)
+
+fvect-cost-model=
+UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model)
+
+fsimd-cost-model=
+UrlSuffix(gcc/Optimize-Options.html#index-fsimd-cost-model)
+
+fvect-cost-model
+UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model)
+
+ftree-scev-cprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-scev-cprop)
+
+ftrivial-auto-var-init=
+UrlSuffix(gcc/Optimize-Options.html#index-ftrivial-auto-var-init)
+
+fverbose-asm
+UrlSuffix(gcc/Code-Gen-Options.html#index-fverbose-asm)
+
+fvisibility=
+UrlSuffix(gcc/Code-Gen-Options.html#index-fvisibility)
+
+fvtable-verify=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtable-verify)
+
+fvtv-counts
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-counts)
+
+fvtv-debug
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-debug)
+
+fvpt
+UrlSuffix(gcc/Optimize-Options.html#index-fvpt)
+
+fweb
+UrlSuffix(gcc/Optimize-Options.html#index-fweb)
+
+ftree-builtin-call-dce
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-builtin-call-dce)
+
+fwhole-program
+UrlSuffix(gcc/Optimize-Options.html#index-fwhole-program)
+
+fwrapv-pointer
+UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv-pointer)
+
+fwrapv
+UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv)
+
+fzero-initialized-in-bss
+UrlSuffix(gcc/Optimize-Options.html#index-fno-zero-initialized-in-bss)
+
+fzero-call-used-regs=
+UrlSuffix(gcc/Optimize-Options.html#index-fzero-call-used-regs)
+
+g
+UrlSuffix(gcc/Debugging-Options.html#index-g)
+
+gas-loc-support
+UrlSuffix(gcc/Debugging-Options.html#index-gas-loc-support)
+
+gas-locview-support
+UrlSuffix(gcc/Debugging-Options.html#index-gas-locview-support)
+
+gcodeview
+UrlSuffix(gcc/Debugging-Options.html#index-gcodeview)
+
+gcolumn-info
+UrlSuffix(gcc/Debugging-Options.html#index-gcolumn-info)
+
+gctf
+UrlSuffix(gcc/Debugging-Options.html#index-gctf)
+
+gbtf
+UrlSuffix(gcc/Debugging-Options.html#index-gbtf)
+
+gdwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf)
+
+gdwarf32
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf32)
+
+gdwarf64
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf64)
+
+ggdb
+UrlSuffix(gcc/Debugging-Options.html#index-ggdb)
+
+ginline-points
+UrlSuffix(gcc/Debugging-Options.html#index-ginline-points)
+
+ginternal-reset-location-views
+UrlSuffix(gcc/Debugging-Options.html#index-ginternal-reset-location-views)
+
+gpubnames
+UrlSuffix(gcc/Debugging-Options.html#index-gpubnames)
+
+ggnu-pubnames
+UrlSuffix(gcc/Debugging-Options.html#index-ggnu-pubnames)
+
+grecord-gcc-switches
+UrlSuffix(gcc/Debugging-Options.html#index-grecord-gcc-switches)
+
+gsplit-dwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gsplit-dwarf)
+
+gstatement-frontiers
+UrlSuffix(gcc/Debugging-Options.html#index-gstatement-frontiers)
+
+gstrict-dwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gstrict-dwarf)
+
+gdescribe-dies
+UrlSuffix(gcc/Debugging-Options.html#index-gdescribe-dies)
+
+gtoggle
+UrlSuffix(gcc/Developer-Options.html#index-gtoggle)
+
+gvariable-location-views
+UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views)
+
+gvariable-location-views=incompat5
+UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views_003dincompat5)
+
+gvms
+UrlSuffix(gcc/Debugging-Options.html#index-gvms)
+
+gz
+UrlSuffix(gcc/Debugging-Options.html#index-gz)
+
+gz=
+UrlSuffix(gcc/Debugging-Options.html#index-gz)
+
+iplugindir=
+UrlSuffix(gcc/Directory-Options.html#index-iplugindir_003d)
+
+l
+UrlSuffix(gcc/Link-Options.html#index-l)
+
+no-canonical-prefixes
+UrlSuffix(gcc/Directory-Options.html#index-no-canonical-prefixes)
+
+nodefaultlibs
+UrlSuffix(gcc/Link-Options.html#index-nodefaultlibs)
+
+nostartfiles
+UrlSuffix(gcc/Link-Options.html#index-nostartfiles)
+
+nolibc
+UrlSuffix(gcc/Link-Options.html#index-nolibc)
+
+nostdlib
+UrlSuffix(gcc/Link-Options.html#index-nostdlib)
+
+nostdlib++
+UrlSuffix(gcc/Link-Options.html#index-nostdlib_002b_002b)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+p
+UrlSuffix(gcc/Instrumentation-Options.html#index-p)
+
+pass-exit-codes
+UrlSuffix(gcc/Overall-Options.html#index-pass-exit-codes)
+
+; skipping UrlSuffix for 'pedantic' due to multiple URLs:
+;   duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3'
+;   duplicate: 'gcc/C-Extensions.html#index-pedantic-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4'
+
+; skipping UrlSuffix for 'pedantic-errors' due to multiple URLs:
+;   duplicate: 'gcc/Non-bugs.html#index-pedantic-errors-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic-errors'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-errors-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-errors-3'
+
+pg
+UrlSuffix(gcc/Instrumentation-Options.html#index-pg)
+
+pipe
+UrlSuffix(gcc/Overall-Options.html#index-pipe)
+
+print-file-name=
+UrlSuffix(gcc/Developer-Options.html#index-print-file-name)
+
+print-libgcc-file-name
+UrlSuffix(gcc/Developer-Options.html#index-print-libgcc-file-name)
+
+print-multi-directory
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-directory)
+
+print-multi-lib
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-lib)
+
+print-multi-os-directory
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-os-directory)
+
+print-multiarch
+UrlSuffix(gcc/Developer-Options.html#index-print-multiarch)
+
+print-prog-name=
+UrlSuffix(gcc/Developer-Options.html#index-print-prog-name)
+
+print-search-dirs
+UrlSuffix(gcc/Developer-Options.html#index-print-search-dirs)
+
+print-sysroot
+UrlSuffix(gcc/Developer-Options.html#index-print-sysroot)
+
+print-sysroot-headers-suffix
+UrlSuffix(gcc/Developer-Options.html#index-print-sysroot-headers-suffix)
+
+r
+UrlSuffix(gcc/Link-Options.html#index-r)
+
+s
+UrlSuffix(gcc/Link-Options.html#index-s)
+
+save-temps
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+save-temps=
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+time
+UrlSuffix(gcc/Developer-Options.html#index-time)
+
+time=
+UrlSuffix(gcc/Developer-Options.html#index-time)
+
+u
+UrlSuffix(gcc/Link-Options.html#index-u)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
+version
+UrlSuffix(gcc/Overall-Options.html#index-version)
+
+w
+UrlSuffix(gcc/Warning-Options.html#index-w)
+
+wrapper
+UrlSuffix(gcc/Overall-Options.html#index-wrapper)
+
+x
+UrlSuffix(gcc/Overall-Options.html#index-x)
+
+shared
+UrlSuffix(gcc/Link-Options.html#index-shared)
+
+shared-libgcc
+UrlSuffix(gcc/Link-Options.html#index-shared-libgcc)
+
+specs
+UrlSuffix(gcc/Overall-Options.html#index-specs)
+
+specs=
+UrlSuffix(gcc/Overall-Options.html#index-specs)
+
+; skipping UrlSuffix for 'static' due to multiple URLs:
+;   duplicate: 'gcc/Darwin-Options.html#index-static-1'
+;   duplicate: 'gcc/Link-Options.html#index-static'
+
+static-libgcc
+UrlSuffix(gcc/Link-Options.html#index-static-libgcc)
+
+static-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-static-libphobos)
+
+static-libstdc++
+UrlSuffix(gcc/Link-Options.html#index-static-libstdc_002b_002b)
+
+static-libasan
+UrlSuffix(gcc/Link-Options.html#index-static-libasan)
+
+static-libtsan
+UrlSuffix(gcc/Link-Options.html#index-static-libtsan)
+
+static-liblsan
+UrlSuffix(gcc/Link-Options.html#index-static-liblsan)
+
+static-libubsan
+UrlSuffix(gcc/Link-Options.html#index-static-libubsan)
+
+symbolic
+UrlSuffix(gcc/Link-Options.html#index-symbolic)
+
+no-pie
+UrlSuffix(gcc/Link-Options.html#index-no-pie)
+
+pie
+UrlSuffix(gcc/Link-Options.html#index-pie)
+
+static-pie
+UrlSuffix(gcc/Link-Options.html#index-static-pie)
+
+z
+UrlSuffix(gcc/Link-Options.html#index-z)
+
+fipa-ra
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-ra)
+
diff --git a/gcc/config/aarch64/aarch64.opt.urls b/gcc/config/aarch64/aarch64.opt.urls
new file mode 100644
index 000000000000..82882fee0647
--- /dev/null
+++ b/gcc/config/aarch64/aarch64.opt.urls
@@ -0,0 +1,84 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/aarch64/aarch64.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/AArch64-Options.html#index-mbig-endian)
+
+mgeneral-regs-only
+UrlSuffix(gcc/AArch64-Options.html#index-mgeneral-regs-only)
+
+mharden-sls=
+UrlSuffix(gcc/AArch64-Options.html#index-mharden-sls)
+
+mfix-cortex-a53-835769
+UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-835769)
+
+mfix-cortex-a53-843419
+UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-843419)
+
+mlittle-endian
+UrlSuffix(gcc/AArch64-Options.html#index-mlittle-endian)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mtp=
+UrlSuffix(gcc/AArch64-Options.html#index-mtp)
+
+mstrict-align
+UrlSuffix(gcc/AArch64-Options.html#index-mstrict-align)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/AArch64-Options.html#index-momit-leaf-frame-pointer)
+
+; skipping UrlSuffix for 'mtls-dialect=' due to finding no URLs
+
+mtls-size=
+UrlSuffix(gcc/AArch64-Options.html#index-mtls-size)
+
+march=
+UrlSuffix(gcc/AArch64-Options.html#index-march)
+
+mcpu=
+UrlSuffix(gcc/AArch64-Options.html#index-mcpu)
+
+mtune=
+UrlSuffix(gcc/AArch64-Options.html#index-mtune)
+
+mabi=
+UrlSuffix(gcc/AArch64-Options.html#index-mabi)
+
+moverride=
+UrlSuffix(gcc/AArch64-Options.html#index-moverride)
+
+mpc-relative-literal-loads
+UrlSuffix(gcc/AArch64-Options.html#index-mpc-relative-literal-loads)
+
+mbranch-protection=
+UrlSuffix(gcc/AArch64-Options.html#index-mbranch-protection)
+
+msign-return-address=
+UrlSuffix(gcc/AArch64-Options.html#index-msign-return-address)
+
+mlow-precision-recip-sqrt
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-recip-sqrt)
+
+mlow-precision-sqrt
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-sqrt)
+
+mlow-precision-div
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-div)
+
+msve-vector-bits=
+UrlSuffix(gcc/AArch64-Options.html#index-msve-vector-bits)
+
+mverbose-cost-dump
+UrlSuffix(gcc/AArch64-Options.html#index-mverbose-cost-dump)
+
+mstack-protector-guard=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-reg)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-offset)
+
diff --git a/gcc/config/alpha/alpha.opt.urls b/gcc/config/alpha/alpha.opt.urls
new file mode 100644
index 000000000000..a55c08328c37
--- /dev/null
+++ b/gcc/config/alpha/alpha.opt.urls
@@ -0,0 +1,76 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/alpha.opt and generated HTML
+
+msoft-float
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msoft-float-2)
+
+; skipping UrlSuffix for 'mgas' due to finding no URLs
+
+mieee-conformant
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-conformant)
+
+mieee
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee)
+
+mieee-with-inexact
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-with-inexact)
+
+mbuild-constants
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbuild-constants)
+
+mfloat-vax
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-vax)
+
+mfloat-ieee
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-ieee)
+
+mbwx
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbwx)
+
+mmax
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmax)
+
+mfix
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfix)
+
+mcix
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcix)
+
+mexplicit-relocs
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mexplicit-relocs)
+
+msmall-data
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-data)
+
+mlarge-data
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-data)
+
+msmall-text
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-text)
+
+mlarge-text
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-text)
+
+; skipping UrlSuffix for 'mlong-double-128' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-double-64' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcpu-4)
+
+mtune=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtune-6)
+
+mfp-rounding-mode=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-rounding-mode)
+
+mfp-trap-mode=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-trap-mode)
+
+mtrap-precision=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtrap-precision)
+
+mmemory-latency=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmemory-latency)
+
+; skipping UrlSuffix for 'mtls-size=' due to finding no URLs
+
diff --git a/gcc/config/alpha/elf.opt.urls b/gcc/config/alpha/elf.opt.urls
new file mode 100644
index 000000000000..d97d0fe0f6a1
--- /dev/null
+++ b/gcc/config/alpha/elf.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/elf.opt and generated HTML
+
diff --git a/gcc/config/arc/arc-tables.opt.urls b/gcc/config/arc/arc-tables.opt.urls
new file mode 100644
index 000000000000..1e177e874064
--- /dev/null
+++ b/gcc/config/arc/arc-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc-tables.opt and generated HTML
+
diff --git a/gcc/config/arc/arc.opt.urls b/gcc/config/arc/arc.opt.urls
new file mode 100644
index 000000000000..bb9a8ebcc24a
--- /dev/null
+++ b/gcc/config/arc/arc.opt.urls
@@ -0,0 +1,260 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/ARC-Options.html#index-mbig-endian-1)
+
+mlittle-endian
+UrlSuffix(gcc/ARC-Options.html#index-mlittle-endian-1)
+
+mno-cond-exec
+UrlSuffix(gcc/ARC-Options.html#index-mno-cond-exec)
+
+mA6
+UrlSuffix(gcc/ARC-Options.html#index-mA6)
+
+mARC600
+UrlSuffix(gcc/ARC-Options.html#index-mARC600)
+
+mARC601
+UrlSuffix(gcc/ARC-Options.html#index-mARC601)
+
+mA7
+UrlSuffix(gcc/ARC-Options.html#index-mA7)
+
+mARC700
+UrlSuffix(gcc/ARC-Options.html#index-mARC700)
+
+mjli-always
+UrlSuffix(gcc/ARC-Options.html#index-mjli-always)
+
+mmpy-option=
+UrlSuffix(gcc/ARC-Options.html#index-mmpy-option)
+
+mdiv-rem
+UrlSuffix(gcc/ARC-Options.html#index-mdiv-rem)
+
+mcode-density
+UrlSuffix(gcc/ARC-Options.html#index-mcode-density)
+
+mmixed-code
+UrlSuffix(gcc/ARC-Options.html#index-mmixed-code)
+
+mvolatile-cache
+UrlSuffix(gcc/ARC-Options.html#index-mvolatile-cache)
+
+mno-volatile-cache
+UrlSuffix(gcc/ARC-Options.html#index-mno-volatile-cache)
+
+mbarrel-shifter
+UrlSuffix(gcc/ARC-Options.html#index-mbarrel-shifter)
+
+mnorm
+UrlSuffix(gcc/ARC-Options.html#index-mnorm)
+
+mswap
+UrlSuffix(gcc/ARC-Options.html#index-mswap)
+
+mmul64
+UrlSuffix(gcc/ARC-Options.html#index-mmul64)
+
+mno-mpy
+UrlSuffix(gcc/ARC-Options.html#index-mno-mpy)
+
+mea
+UrlSuffix(gcc/ARC-Options.html#index-mea)
+
+msoft-float
+UrlSuffix(gcc/ARC-Options.html#index-msoft-float)
+
+mlong-calls
+UrlSuffix(gcc/ARC-Options.html#index-mlong-calls-1)
+
+mno-brcc
+UrlSuffix(gcc/ARC-Options.html#index-mno-brcc)
+
+msdata
+UrlSuffix(gcc/ARC-Options.html#index-msdata)
+
+mmillicode
+UrlSuffix(gcc/ARC-Options.html#index-mmillicode)
+
+mspfp
+UrlSuffix(gcc/ARC-Options.html#index-mspfp)
+
+mspfp-compact
+UrlSuffix(gcc/ARC-Options.html#index-mspfp-compact)
+
+mspfp-fast
+UrlSuffix(gcc/ARC-Options.html#index-mspfp-fast)
+
+margonaut
+UrlSuffix(gcc/ARC-Options.html#index-margonaut)
+
+mdpfp
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp)
+
+mdpfp-compact
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp-compact)
+
+mdpfp-fast
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp-fast)
+
+mno-dpfp-lrsr
+UrlSuffix(gcc/ARC-Options.html#index-mno-dpfp-lrsr)
+
+msimd
+UrlSuffix(gcc/ARC-Options.html#index-msimd)
+
+mcpu=
+UrlSuffix(gcc/ARC-Options.html#index-mcpu-1)
+
+msize-level=
+UrlSuffix(gcc/ARC-Options.html#index-msize-level)
+
+misize
+UrlSuffix(gcc/ARC-Options.html#index-misize)
+
+mmultcost=
+UrlSuffix(gcc/ARC-Options.html#index-mmultcost)
+
+mtune=
+UrlSuffix(gcc/ARC-Options.html#index-mtune-2)
+
+mindexed-loads
+UrlSuffix(gcc/ARC-Options.html#index-mindexed-loads)
+
+mauto-modify-reg
+UrlSuffix(gcc/ARC-Options.html#index-mauto-modify-reg)
+
+mmul32x16
+UrlSuffix(gcc/ARC-Options.html#index-mmul32x16)
+
+munalign-prob-threshold=
+UrlSuffix(gcc/ARC-Options.html#index-munalign-prob-threshold)
+
+mmedium-calls
+UrlSuffix(gcc/ARC-Options.html#index-mmedium-calls)
+
+mannotate-align
+UrlSuffix(gcc/ARC-Options.html#index-mannotate-align)
+
+malign-call
+UrlSuffix(gcc/ARC-Options.html#index-malign-call)
+
+mRcq
+UrlSuffix(gcc/ARC-Options.html#index-mRcq)
+
+mRcw
+UrlSuffix(gcc/ARC-Options.html#index-mRcw)
+
+mearly-cbranchsi
+UrlSuffix(gcc/ARC-Options.html#index-mearly-cbranchsi)
+
+mbbit-peephole
+UrlSuffix(gcc/ARC-Options.html#index-mbbit-peephole)
+
+mcase-vector-pcrel
+UrlSuffix(gcc/ARC-Options.html#index-mcase-vector-pcrel)
+
+mcompact-casesi
+UrlSuffix(gcc/ARC-Options.html#index-mcompact-casesi)
+
+mq-class
+UrlSuffix(gcc/ARC-Options.html#index-mq-class)
+
+mexpand-adddi
+UrlSuffix(gcc/ARC-Options.html#index-mexpand-adddi)
+
+; skipping UrlSuffix for 'mcrc' due to finding no URLs
+
+mdsp-packa
+UrlSuffix(gcc/ARC-Options.html#index-mdsp-packa)
+
+mdvbf
+UrlSuffix(gcc/ARC-Options.html#index-mdvbf)
+
+mmac-d16
+UrlSuffix(gcc/ARC-Options.html#index-mmac-d16)
+
+mmac-24
+UrlSuffix(gcc/ARC-Options.html#index-mmac-24)
+
+mtelephony
+UrlSuffix(gcc/ARC-Options.html#index-mtelephony)
+
+mxy
+UrlSuffix(gcc/ARC-Options.html#index-mxy)
+
+mlock
+UrlSuffix(gcc/ARC-Options.html#index-mlock)
+
+mswape
+UrlSuffix(gcc/ARC-Options.html#index-mswape)
+
+mrtsc
+UrlSuffix(gcc/ARC-Options.html#index-mrtsc)
+
+EB
+UrlSuffix(gcc/ARC-Options.html#index-EB)
+
+EL
+UrlSuffix(gcc/ARC-Options.html#index-EL)
+
+marclinux
+UrlSuffix(gcc/ARC-Options.html#index-marclinux)
+
+marclinux_prof
+UrlSuffix(gcc/ARC-Options.html#index-marclinux_005fprof)
+
+mlra
+UrlSuffix(gcc/ARC-Options.html#index-mlra)
+
+mlra-priority-none
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-none)
+
+mlra-priority-compact
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-compact)
+
+mlra-priority-noncompact
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-noncompact)
+
+mEA
+UrlSuffix(gcc/ARC-Options.html#index-mEA)
+
+multcost=
+UrlSuffix(gcc/ARC-Options.html#index-multcost)
+
+matomic
+UrlSuffix(gcc/ARC-Options.html#index-matomic)
+
+mll64
+UrlSuffix(gcc/ARC-Options.html#index-mll64)
+
+mfpu=
+UrlSuffix(gcc/ARC-Options.html#index-mfpu)
+
+mtp-regno=
+UrlSuffix(gcc/ARC-Options.html#index-mtp-regno)
+
+; skipping UrlSuffix for 'mbitops' due to finding no URLs
+
+; skipping UrlSuffix for 'munaligned-access' due to finding no URLs
+
+mirq-ctrl-saved=
+UrlSuffix(gcc/ARC-Options.html#index-mirq-ctrl-saved)
+
+mrgf-banked-regs=
+UrlSuffix(gcc/ARC-Options.html#index-mrgf-banked-regs)
+
+mlpc-width=
+UrlSuffix(gcc/ARC-Options.html#index-mlpc-width)
+
+mrf16
+UrlSuffix(gcc/ARC-Options.html#index-mrf16)
+
+mbranch-index
+UrlSuffix(gcc/ARC-Options.html#index-mbranch-index)
+
+mcode-density-frame
+UrlSuffix(gcc/ARC-Options.html#index-mcode-density-frame)
+
diff --git a/gcc/config/arm/arm-tables.opt.urls b/gcc/config/arm/arm-tables.opt.urls
new file mode 100644
index 000000000000..f0a6f8e1600c
--- /dev/null
+++ b/gcc/config/arm/arm-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm-tables.opt and generated HTML
+
diff --git a/gcc/config/arm/arm.opt.urls b/gcc/config/arm/arm.opt.urls
new file mode 100644
index 000000000000..b3696f78bc73
--- /dev/null
+++ b/gcc/config/arm/arm.opt.urls
@@ -0,0 +1,149 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm.opt and generated HTML
+
+mabi=
+UrlSuffix(gcc/ARM-Options.html#index-mabi-1)
+
+mabort-on-noreturn
+UrlSuffix(gcc/ARM-Options.html#index-mabort-on-noreturn)
+
+mapcs
+UrlSuffix(gcc/ARM-Options.html#index-mapcs)
+
+mapcs-frame
+UrlSuffix(gcc/ARM-Options.html#index-mapcs-frame)
+
+march=
+UrlSuffix(gcc/ARM-Options.html#index-march-2)
+
+marm
+UrlSuffix(gcc/ARM-Options.html#index-marm)
+
+mbig-endian
+UrlSuffix(gcc/ARM-Options.html#index-mbig-endian-2)
+
+mcallee-super-interworking
+UrlSuffix(gcc/ARM-Options.html#index-mcallee-super-interworking)
+
+mcaller-super-interworking
+UrlSuffix(gcc/ARM-Options.html#index-mcaller-super-interworking)
+
+mcpu=
+UrlSuffix(gcc/ARM-Options.html#index-mcpu-2)
+
+mfloat-abi=
+UrlSuffix(gcc/ARM-Options.html#index-mfloat-abi)
+
+mcmse
+UrlSuffix(gcc/ARM-Options.html#index-mcmse)
+
+mflip-thumb
+UrlSuffix(gcc/ARM-Options.html#index-mflip-thumb)
+
+mfp16-format=
+UrlSuffix(gcc/ARM-Options.html#index-mfp16-format)
+
+mfpu=
+UrlSuffix(gcc/ARM-Options.html#index-mfpu-1)
+
+; skipping UrlSuffix for 'mhard-float' due to finding no URLs
+
+mlittle-endian
+UrlSuffix(gcc/ARM-Options.html#index-mlittle-endian-2)
+
+mlong-calls
+UrlSuffix(gcc/ARM-Options.html#index-mlong-calls-2)
+
+mpic-data-is-text-relative
+UrlSuffix(gcc/ARM-Options.html#index-mpic-data-is-text-relative)
+
+mpic-register=
+UrlSuffix(gcc/ARM-Options.html#index-mpic-register)
+
+mpoke-function-name
+UrlSuffix(gcc/ARM-Options.html#index-mpoke-function-name)
+
+msched-prolog
+UrlSuffix(gcc/ARM-Options.html#index-msched-prolog)
+
+msingle-pic-base
+UrlSuffix(gcc/ARM-Options.html#index-msingle-pic-base)
+
+; skipping UrlSuffix for 'msoft-float' due to finding no URLs
+
+mstructure-size-boundary=
+UrlSuffix(gcc/ARM-Options.html#index-mstructure-size-boundary)
+
+mthumb
+UrlSuffix(gcc/ARM-Options.html#index-mthumb)
+
+mthumb-interwork
+UrlSuffix(gcc/ARM-Options.html#index-mthumb-interwork)
+
+mtls-dialect=
+UrlSuffix(gcc/ARM-Options.html#index-mtls-dialect)
+
+mtp=
+UrlSuffix(gcc/ARM-Options.html#index-mtp-1)
+
+mtpcs-frame
+UrlSuffix(gcc/ARM-Options.html#index-mtpcs-frame)
+
+mtpcs-leaf-frame
+UrlSuffix(gcc/ARM-Options.html#index-mtpcs-leaf-frame)
+
+mtune=
+UrlSuffix(gcc/ARM-Options.html#index-mtune-4)
+
+mprint-tune-info
+UrlSuffix(gcc/ARM-Options.html#index-mprint-tune-info)
+
+mverbose-cost-dump
+UrlSuffix(gcc/ARM-Options.html#index-mverbose-cost-dump-1)
+
+mword-relocations
+UrlSuffix(gcc/ARM-Options.html#index-mword-relocations)
+
+mrestrict-it
+UrlSuffix(gcc/ARM-Options.html#index-mrestrict-it)
+
+mfix-cortex-m3-ldrd
+UrlSuffix(gcc/ARM-Options.html#index-mfix-cortex-m3-ldrd)
+
+mfix-cmse-cve-2021-35465
+UrlSuffix(gcc/ARM-Options.html#index-mfix-cmse-cve-2021-35465)
+
+munaligned-access
+UrlSuffix(gcc/ARM-Options.html#index-munaligned-access)
+
+mneon-for-64bits
+UrlSuffix(gcc/ARM-Options.html#index-mneon-for-64bits)
+
+mslow-flash-data
+UrlSuffix(gcc/ARM-Options.html#index-mslow-flash-data)
+
+masm-syntax-unified
+UrlSuffix(gcc/ARM-Options.html#index-masm-syntax-unified)
+
+mpure-code
+UrlSuffix(gcc/ARM-Options.html#index-mpure-code)
+
+mbe8
+UrlSuffix(gcc/ARM-Options.html#index-mbe8)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mbranch-protection=
+UrlSuffix(gcc/ARM-Options.html#index-mbranch-protection-1)
+
+mgeneral-regs-only
+UrlSuffix(gcc/ARM-Options.html#index-mgeneral-regs-only-1)
+
+mfdpic
+UrlSuffix(gcc/ARM-Options.html#index-mfdpic)
+
+mstack-protector-guard=
+UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-1)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-offset-1)
+
diff --git a/gcc/config/arm/vxworks.opt.urls b/gcc/config/arm/vxworks.opt.urls
new file mode 100644
index 000000000000..8fe7eec22783
--- /dev/null
+++ b/gcc/config/arm/vxworks.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/vxworks.opt and generated HTML
+
diff --git a/gcc/config/avr/avr.opt.urls b/gcc/config/avr/avr.opt.urls
new file mode 100644
index 000000000000..7af677199cc4
--- /dev/null
+++ b/gcc/config/avr/avr.opt.urls
@@ -0,0 +1,71 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/avr/avr.opt and generated HTML
+
+mcall-prologues
+UrlSuffix(gcc/AVR-Options.html#index-mcall-prologues)
+
+mmcu=
+UrlSuffix(gcc/AVR-Options.html#index-mmcu)
+
+mgas-isr-prologues
+UrlSuffix(gcc/AVR-Options.html#index-mgas-isr-prologues)
+
+mn-flash=
+UrlSuffix(gcc/AVR-Options.html#index-mn-flash)
+
+mrmw
+UrlSuffix(gcc/AVR-Options.html#index-mrmw)
+
+mshort-calls
+UrlSuffix(gcc/AVR-Options.html#index-mshort-calls)
+
+mint8
+UrlSuffix(gcc/AVR-Options.html#index-mint8)
+
+mno-interrupts
+UrlSuffix(gcc/AVR-Options.html#index-mno-interrupts)
+
+mbranch-cost=
+UrlSuffix(gcc/AVR-Options.html#index-mbranch-cost-1)
+
+mmain-is-OS_task
+UrlSuffix(gcc/AVR-Options.html#index-mmain-is-OS_005ftask)
+
+mtiny-stack
+UrlSuffix(gcc/AVR-Options.html#index-mtiny-stack)
+
+mrelax
+UrlSuffix(gcc/AVR-Options.html#index-mrelax)
+
+maccumulate-args
+UrlSuffix(gcc/AVR-Options.html#index-maccumulate-args)
+
+mstrict-X
+UrlSuffix(gcc/AVR-Options.html#index-mstrict-X)
+
+msp8
+UrlSuffix(gcc/AVR-Options.html#index-msp8)
+
+Waddr-space-convert
+UrlSuffix(gcc/AVR-Options.html#index-Waddr-space-convert)
+
+Wmisspelled-isr
+UrlSuffix(gcc/AVR-Options.html#index-Wmisspelled-isr)
+
+mfract-convert-truncate
+UrlSuffix(gcc/AVR-Options.html#index-mfract-convert-truncate)
+
+mabsdata
+UrlSuffix(gcc/AVR-Options.html#index-mabsdata)
+
+mdouble=
+UrlSuffix(gcc/AVR-Options.html#index-mdouble)
+
+mlong-double=
+UrlSuffix(gcc/AVR-Options.html#index-mlong-double)
+
+nodevicelib
+UrlSuffix(gcc/AVR-Options.html#index-nodevicelib)
+
+nodevicespecs
+UrlSuffix(gcc/AVR-Options.html#index-nodevicespecs)
+
diff --git a/gcc/config/bfin/bfin.opt.urls b/gcc/config/bfin/bfin.opt.urls
new file mode 100644
index 000000000000..8210fee663fd
--- /dev/null
+++ b/gcc/config/bfin/bfin.opt.urls
@@ -0,0 +1,61 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/bfin/bfin.opt and generated HTML
+
+msim
+UrlSuffix(gcc/Blackfin-Options.html#index-msim)
+
+mcpu=
+UrlSuffix(gcc/Blackfin-Options.html#index-mcpu_003d)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/Blackfin-Options.html#index-momit-leaf-frame-pointer-1)
+
+mlow64k
+UrlSuffix(gcc/Blackfin-Options.html#index-mlow64k)
+
+mcsync-anomaly
+UrlSuffix(gcc/Blackfin-Options.html#index-mcsync-anomaly)
+
+mspecld-anomaly
+UrlSuffix(gcc/Blackfin-Options.html#index-mspecld-anomaly)
+
+mid-shared-library
+UrlSuffix(gcc/Blackfin-Options.html#index-mid-shared-library)
+
+mleaf-id-shared-library
+UrlSuffix(gcc/Blackfin-Options.html#index-mleaf-id-shared-library)
+
+mshared-library-id=
+UrlSuffix(gcc/Blackfin-Options.html#index-mshared-library-id)
+
+msep-data
+UrlSuffix(gcc/Blackfin-Options.html#index-msep-data)
+
+mlong-calls
+UrlSuffix(gcc/Blackfin-Options.html#index-mlong-calls-3)
+
+mfast-fp
+UrlSuffix(gcc/Blackfin-Options.html#index-mfast-fp)
+
+; skipping UrlSuffix for 'mfdpic' due to finding no URLs
+
+minline-plt
+UrlSuffix(gcc/Blackfin-Options.html#index-minline-plt)
+
+mstack-check-l1
+UrlSuffix(gcc/Blackfin-Options.html#index-mstack-check-l1)
+
+mmulticore
+UrlSuffix(gcc/Blackfin-Options.html#index-mmulticore)
+
+mcorea
+UrlSuffix(gcc/Blackfin-Options.html#index-mcorea)
+
+mcoreb
+UrlSuffix(gcc/Blackfin-Options.html#index-mcoreb)
+
+msdram
+UrlSuffix(gcc/Blackfin-Options.html#index-msdram)
+
+micplb
+UrlSuffix(gcc/Blackfin-Options.html#index-micplb)
+
diff --git a/gcc/config/bpf/bpf.opt.urls b/gcc/config/bpf/bpf.opt.urls
new file mode 100644
index 000000000000..8c1e5f86d5cc
--- /dev/null
+++ b/gcc/config/bpf/bpf.opt.urls
@@ -0,0 +1,35 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/bpf/bpf.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/eBPF-Options.html#index-mbig-endian-5)
+
+mlittle-endian
+UrlSuffix(gcc/eBPF-Options.html#index-mlittle-endian-5)
+
+mco-re
+UrlSuffix(gcc/eBPF-Options.html#index-mco-re)
+
+mjmpext
+UrlSuffix(gcc/eBPF-Options.html#index-mjmpext)
+
+malu32
+UrlSuffix(gcc/eBPF-Options.html#index-malu32)
+
+mjmp32
+UrlSuffix(gcc/eBPF-Options.html#index-mjmp32)
+
+mv3-atomics
+UrlSuffix(gcc/eBPF-Options.html#index-mv3-atomics)
+
+mbswap
+UrlSuffix(gcc/eBPF-Options.html#index-mbswap)
+
+msdiv
+UrlSuffix(gcc/eBPF-Options.html#index-msdiv)
+
+msmov
+UrlSuffix(gcc/eBPF-Options.html#index-msmov)
+
+mcpu=
+UrlSuffix(gcc/eBPF-Options.html#index-mcpu-5)
+
diff --git a/gcc/config/c6x/c6x-tables.opt.urls b/gcc/config/c6x/c6x-tables.opt.urls
new file mode 100644
index 000000000000..35d14c753e2c
--- /dev/null
+++ b/gcc/config/c6x/c6x-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x-tables.opt and generated HTML
+
diff --git a/gcc/config/c6x/c6x.opt.urls b/gcc/config/c6x/c6x.opt.urls
new file mode 100644
index 000000000000..5b1c103b43f2
--- /dev/null
+++ b/gcc/config/c6x/c6x.opt.urls
@@ -0,0 +1,18 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/C6X-Options.html#index-mbig-endian-3)
+
+mlittle-endian
+UrlSuffix(gcc/C6X-Options.html#index-mlittle-endian-3)
+
+msim
+UrlSuffix(gcc/C6X-Options.html#index-msim-1)
+
+; skipping UrlSuffix for 'msdata=' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-calls' due to finding no URLs
+
+march=
+UrlSuffix(gcc/C6X-Options.html#index-march-3)
+
diff --git a/gcc/config/cris/cris.opt.urls b/gcc/config/cris/cris.opt.urls
new file mode 100644
index 000000000000..56eeaa25da1c
--- /dev/null
+++ b/gcc/config/cris/cris.opt.urls
@@ -0,0 +1,65 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/cris.opt and generated HTML
+
+mmul-bug-workaround
+UrlSuffix(gcc/CRIS-Options.html#index-mmul-bug-workaround)
+
+metrax4
+UrlSuffix(gcc/CRIS-Options.html#index-metrax4)
+
+metrax100
+UrlSuffix(gcc/CRIS-Options.html#index-metrax100)
+
+mpdebug
+UrlSuffix(gcc/CRIS-Options.html#index-mpdebug)
+
+mcc-init
+UrlSuffix(gcc/CRIS-Options.html#index-mcc-init)
+
+mside-effects
+UrlSuffix(gcc/CRIS-Options.html#index-mside-effects)
+
+mno-side-effects
+UrlSuffix(gcc/CRIS-Options.html#index-mno-side-effects)
+
+mstack-align
+UrlSuffix(gcc/CRIS-Options.html#index-mstack-align)
+
+mno-stack-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-stack-align)
+
+mdata-align
+UrlSuffix(gcc/CRIS-Options.html#index-mdata-align)
+
+mno-data-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-data-align)
+
+mconst-align
+UrlSuffix(gcc/CRIS-Options.html#index-mconst-align)
+
+mno-const-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-const-align)
+
+m32-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m32-bit)
+
+m16-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m16-bit)
+
+m8-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m8-bit)
+
+mprologue-epilogue
+UrlSuffix(gcc/CRIS-Options.html#index-mprologue-epilogue)
+
+mno-prologue-epilogue
+UrlSuffix(gcc/CRIS-Options.html#index-mno-prologue-epilogue)
+
+mcpu=
+UrlSuffix(gcc/CRIS-Options.html#index-mcpu-3)
+
+march=
+UrlSuffix(gcc/CRIS-Options.html#index-march-4)
+
+mtune=
+UrlSuffix(gcc/CRIS-Options.html#index-mtune-5)
+
diff --git a/gcc/config/cris/elf.opt.urls b/gcc/config/cris/elf.opt.urls
new file mode 100644
index 000000000000..bdfa01e97a49
--- /dev/null
+++ b/gcc/config/cris/elf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/elf.opt and generated HTML
+
+melf
+UrlSuffix(gcc/CRIS-Options.html#index-melf)
+
+sim
+UrlSuffix(gcc/CRIS-Options.html#index-sim)
+
diff --git a/gcc/config/csky/csky.opt.urls b/gcc/config/csky/csky.opt.urls
new file mode 100644
index 000000000000..96b0b174f7c9
--- /dev/null
+++ b/gcc/config/csky/csky.opt.urls
@@ -0,0 +1,104 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky.opt and generated HTML
+
+march=
+UrlSuffix(gcc/C-SKY-Options.html#index-march_003d)
+
+mcpu=
+UrlSuffix(gcc/C-SKY-Options.html#index-mcpu_003d-1)
+
+mbig-endian
+UrlSuffix(gcc/C-SKY-Options.html#index-mbig-endian-4)
+
+EB
+UrlSuffix(gcc/C-SKY-Options.html#index-EB-1)
+
+mlittle-endian
+UrlSuffix(gcc/C-SKY-Options.html#index-mlittle-endian-4)
+
+EL
+UrlSuffix(gcc/C-SKY-Options.html#index-EL-1)
+
+mhard-float
+UrlSuffix(gcc/C-SKY-Options.html#index-mhard-float)
+
+msoft-float
+UrlSuffix(gcc/C-SKY-Options.html#index-msoft-float-1)
+
+mfloat-abi=
+UrlSuffix(gcc/C-SKY-Options.html#index-mfloat-abi-1)
+
+mfpu=
+UrlSuffix(gcc/C-SKY-Options.html#index-mfpu_003d)
+
+mdouble-float
+UrlSuffix(gcc/C-SKY-Options.html#index-mdouble-float)
+
+mfdivdu
+UrlSuffix(gcc/C-SKY-Options.html#index-mfdivdu)
+
+melrw
+UrlSuffix(gcc/C-SKY-Options.html#index-melrw)
+
+mistack
+UrlSuffix(gcc/C-SKY-Options.html#index-mistack)
+
+mmp
+UrlSuffix(gcc/C-SKY-Options.html#index-mmp)
+
+mcp
+UrlSuffix(gcc/C-SKY-Options.html#index-mcp)
+
+mcache
+UrlSuffix(gcc/C-SKY-Options.html#index-mcache)
+
+msecurity
+UrlSuffix(gcc/C-SKY-Options.html#index-msecurity)
+
+mtrust
+UrlSuffix(gcc/C-SKY-Options.html#index-mtrust)
+
+mdsp
+UrlSuffix(gcc/C-SKY-Options.html#index-mdsp)
+
+medsp
+UrlSuffix(gcc/C-SKY-Options.html#index-medsp)
+
+mvdsp
+UrlSuffix(gcc/C-SKY-Options.html#index-mvdsp)
+
+mdiv
+UrlSuffix(gcc/C-SKY-Options.html#index-mdiv)
+
+msmart
+UrlSuffix(gcc/C-SKY-Options.html#index-msmart)
+
+mhigh-registers
+UrlSuffix(gcc/C-SKY-Options.html#index-mhigh-registers)
+
+manchor
+UrlSuffix(gcc/C-SKY-Options.html#index-manchor)
+
+mpushpop
+UrlSuffix(gcc/C-SKY-Options.html#index-mpushpop)
+
+mmultiple-stld
+UrlSuffix(gcc/C-SKY-Options.html#index-mmultiple-stld)
+
+mconstpool
+UrlSuffix(gcc/C-SKY-Options.html#index-mconstpool)
+
+mstack-size
+UrlSuffix(gcc/C-SKY-Options.html#index-mstack-size-1)
+
+mccrt
+UrlSuffix(gcc/C-SKY-Options.html#index-mccrt)
+
+mbranch-cost=
+UrlSuffix(gcc/C-SKY-Options.html#index-mbranch-cost_003d)
+
+msched-prolog
+UrlSuffix(gcc/C-SKY-Options.html#index-msched-prolog-1)
+
+msim
+UrlSuffix(gcc/C-SKY-Options.html#index-msim-2)
+
diff --git a/gcc/config/csky/csky_tables.opt.urls b/gcc/config/csky/csky_tables.opt.urls
new file mode 100644
index 000000000000..eaa247bc897c
--- /dev/null
+++ b/gcc/config/csky/csky_tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky_tables.opt and generated HTML
+
diff --git a/gcc/config/darwin.opt.urls b/gcc/config/darwin.opt.urls
new file mode 100644
index 000000000000..e83d183ac161
--- /dev/null
+++ b/gcc/config/darwin.opt.urls
@@ -0,0 +1,224 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/darwin.opt and generated HTML
+
+dependency-file
+UrlSuffix(gcc/Darwin-Options.html#index-dependency-file)
+
+fconstant-cfstrings
+UrlSuffix(gcc/Darwin-Options.html#index-fconstant-cfstrings)
+
+iframework
+UrlSuffix(gcc/Darwin-Options.html#index-iframework)
+
+mconstant-cfstrings
+UrlSuffix(gcc/Darwin-Options.html#index-mconstant-cfstrings)
+
+; skipping UrlSuffix for 'mdynamic-no-pic' due to finding no URLs
+
+mfix-and-continue
+UrlSuffix(gcc/Darwin-Options.html#index-mfix-and-continue)
+
+mkernel
+UrlSuffix(gcc/Darwin-Options.html#index-mkernel)
+
+mmacosx-version-min=
+UrlSuffix(gcc/Darwin-Options.html#index-mmacosx-version-min)
+
+mone-byte-bool
+UrlSuffix(gcc/Darwin-Options.html#index-mone-byte-bool)
+
+all_load
+UrlSuffix(gcc/Darwin-Options.html#index-all_005fload)
+
+allowable_client
+UrlSuffix(gcc/Darwin-Options.html#index-allowable_005fclient)
+
+arch_errors_fatal
+UrlSuffix(gcc/Darwin-Options.html#index-arch_005ferrors_005ffatal)
+
+bind_at_load
+UrlSuffix(gcc/Darwin-Options.html#index-bind_005fat_005fload)
+
+bundle
+UrlSuffix(gcc/Darwin-Options.html#index-bundle)
+
+bundle_loader
+UrlSuffix(gcc/Darwin-Options.html#index-bundle_005floader)
+
+client_name
+UrlSuffix(gcc/Darwin-Options.html#index-client_005fname)
+
+compatibility_version
+UrlSuffix(gcc/Darwin-Options.html#index-compatibility_005fversion)
+
+current_version
+UrlSuffix(gcc/Darwin-Options.html#index-current_005fversion)
+
+dead_strip
+UrlSuffix(gcc/Darwin-Options.html#index-dead_005fstrip)
+
+dylib_file
+UrlSuffix(gcc/Darwin-Options.html#index-dylib_005ffile)
+
+dylinker_install_name
+UrlSuffix(gcc/Darwin-Options.html#index-dylinker_005finstall_005fname)
+
+dynamic
+UrlSuffix(gcc/Darwin-Options.html#index-dynamic)
+
+dynamiclib
+UrlSuffix(gcc/Darwin-Options.html#index-dynamiclib)
+
+exported_symbols_list
+UrlSuffix(gcc/Darwin-Options.html#index-exported_005fsymbols_005flist)
+
+filelist
+UrlSuffix(gcc/Darwin-Options.html#index-filelist)
+
+flat_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-flat_005fnamespace)
+
+force_cpusubtype_ALL
+UrlSuffix(gcc/Darwin-Options.html#index-force_005fcpusubtype_005fALL)
+
+force_flat_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-force_005fflat_005fnamespace)
+
+gfull
+UrlSuffix(gcc/Darwin-Options.html#index-gfull)
+
+gused
+UrlSuffix(gcc/Darwin-Options.html#index-gused)
+
+headerpad_max_install_names
+UrlSuffix(gcc/Darwin-Options.html#index-headerpad_005fmax_005finstall_005fnames)
+
+image_base
+UrlSuffix(gcc/Darwin-Options.html#index-image_005fbase)
+
+init
+UrlSuffix(gcc/Darwin-Options.html#index-init)
+
+install_name
+UrlSuffix(gcc/Darwin-Options.html#index-install_005fname)
+
+keep_private_externs
+UrlSuffix(gcc/Darwin-Options.html#index-keep_005fprivate_005fexterns)
+
+multi_module
+UrlSuffix(gcc/Darwin-Options.html#index-multi_005fmodule)
+
+multiply_defined
+UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined)
+
+multiply_defined_unused
+UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined_005funused)
+
+no_dead_strip_inits_and_terms
+UrlSuffix(gcc/Darwin-Options.html#index-no_005fdead_005fstrip_005finits_005fand_005fterms)
+
+nodefaultrpaths
+UrlSuffix(gcc/Darwin-Options.html#index-nodefaultrpaths)
+
+nofixprebinding
+UrlSuffix(gcc/Darwin-Options.html#index-nofixprebinding)
+
+nomultidefs
+UrlSuffix(gcc/Darwin-Options.html#index-nomultidefs)
+
+noprebind
+UrlSuffix(gcc/Darwin-Options.html#index-noprebind)
+
+noseglinkedit
+UrlSuffix(gcc/Darwin-Options.html#index-noseglinkedit)
+
+pagezero_size
+UrlSuffix(gcc/Darwin-Options.html#index-pagezero_005fsize)
+
+prebind
+UrlSuffix(gcc/Darwin-Options.html#index-prebind)
+
+prebind_all_twolevel_modules
+UrlSuffix(gcc/Darwin-Options.html#index-prebind_005fall_005ftwolevel_005fmodules)
+
+private_bundle
+UrlSuffix(gcc/Darwin-Options.html#index-private_005fbundle)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
+read_only_relocs
+UrlSuffix(gcc/Darwin-Options.html#index-read_005fonly_005frelocs)
+
+sectalign
+UrlSuffix(gcc/Darwin-Options.html#index-sectalign)
+
+sectcreate
+UrlSuffix(gcc/Darwin-Options.html#index-sectcreate)
+
+sectobjectsymbols
+UrlSuffix(gcc/Darwin-Options.html#index-sectobjectsymbols)
+
+sectorder
+UrlSuffix(gcc/Darwin-Options.html#index-sectorder)
+
+seg_addr_table
+UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable)
+
+seg_addr_table_filename
+UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable_005ffilename)
+
+seg1addr
+UrlSuffix(gcc/Darwin-Options.html#index-seg1addr)
+
+segaddr
+UrlSuffix(gcc/Darwin-Options.html#index-segaddr)
+
+seglinkedit
+UrlSuffix(gcc/Darwin-Options.html#index-seglinkedit)
+
+segprot
+UrlSuffix(gcc/Darwin-Options.html#index-segprot)
+
+segs_read_only_addr
+UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fonly_005faddr)
+
+segs_read_write_addr
+UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fwrite_005faddr)
+
+single_module
+UrlSuffix(gcc/Darwin-Options.html#index-single_005fmodule)
+
+sub_library
+UrlSuffix(gcc/Darwin-Options.html#index-sub_005flibrary)
+
+sub_umbrella
+UrlSuffix(gcc/Darwin-Options.html#index-sub_005fumbrella)
+
+twolevel_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-twolevel_005fnamespace)
+
+umbrella
+UrlSuffix(gcc/Darwin-Options.html#index-umbrella)
+
+undefined
+UrlSuffix(gcc/Darwin-Options.html#index-undefined)
+
+unexported_symbols_list
+UrlSuffix(gcc/Darwin-Options.html#index-unexported_005fsymbols_005flist)
+
+weak_reference_mismatches
+UrlSuffix(gcc/Darwin-Options.html#index-weak_005freference_005fmismatches)
+
+whatsloaded
+UrlSuffix(gcc/Darwin-Options.html#index-whatsloaded)
+
+whyload
+UrlSuffix(gcc/Darwin-Options.html#index-whyload)
+
+X
+LangUrlSuffix_D(gdc/Code-Generation.html#index-X)
+
diff --git a/gcc/config/dragonfly.opt.urls b/gcc/config/dragonfly.opt.urls
new file mode 100644
index 000000000000..62e2e21594e1
--- /dev/null
+++ b/gcc/config/dragonfly.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/dragonfly.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/epiphany/epiphany.opt.urls b/gcc/config/epiphany/epiphany.opt.urls
new file mode 100644
index 000000000000..a8e28c46d210
--- /dev/null
+++ b/gcc/config/epiphany/epiphany.opt.urls
@@ -0,0 +1,52 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/epiphany/epiphany.opt and generated HTML
+
+mhalf-reg-file
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mhalf-reg-file)
+
+mprefer-short-insn-regs
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mprefer-short-insn-regs)
+
+mbranch-cost=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mbranch-cost)
+
+mcmove
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mcmove)
+
+mnops=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mnops)
+
+msoft-cmpsf
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msoft-cmpsf)
+
+msplit-lohi
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-lohi)
+
+mstack-offset=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mstack-offset)
+
+mround-nearest
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mround-nearest)
+
+mlong-calls
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mlong-calls)
+
+; skipping UrlSuffix for 'mshort-calls' due to finding no URLs
+
+msmall16
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msmall16)
+
+mfp-mode=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mfp-mode)
+
+mvect-double
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mvect-double)
+
+max-vect-align=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-max-vect-align)
+
+msplit-vecmove-early
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-vecmove-early)
+
+m1reg-
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-m1reg-)
+
diff --git a/gcc/config/fr30/fr30.opt.urls b/gcc/config/fr30/fr30.opt.urls
new file mode 100644
index 000000000000..eabbfbfd9dd3
--- /dev/null
+++ b/gcc/config/fr30/fr30.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/fr30/fr30.opt and generated HTML
+
+msmall-model
+UrlSuffix(gcc/FR30-Options.html#index-msmall-model)
+
+mno-lsim
+UrlSuffix(gcc/FR30-Options.html#index-mno-lsim)
+
diff --git a/gcc/config/freebsd.opt.urls b/gcc/config/freebsd.opt.urls
new file mode 100644
index 000000000000..3be69e4c3e8d
--- /dev/null
+++ b/gcc/config/freebsd.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/freebsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/frv/frv.opt.urls b/gcc/config/frv/frv.opt.urls
new file mode 100644
index 000000000000..d3d3757bb289
--- /dev/null
+++ b/gcc/config/frv/frv.opt.urls
@@ -0,0 +1,111 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/frv/frv.opt and generated HTML
+
+macc-4
+UrlSuffix(gcc/FRV-Options.html#index-macc-4)
+
+macc-8
+UrlSuffix(gcc/FRV-Options.html#index-macc-8)
+
+malign-labels
+UrlSuffix(gcc/FRV-Options.html#index-malign-labels)
+
+malloc-cc
+UrlSuffix(gcc/FRV-Options.html#index-malloc-cc)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mcond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mcond-exec)
+
+mcond-move
+UrlSuffix(gcc/FRV-Options.html#index-mcond-move)
+
+mcpu=
+UrlSuffix(gcc/FRV-Options.html#index-mcpu-6)
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+mdouble
+UrlSuffix(gcc/FRV-Options.html#index-mdouble-1)
+
+mdword
+UrlSuffix(gcc/FRV-Options.html#index-mdword)
+
+mfdpic
+UrlSuffix(gcc/FRV-Options.html#index-mfdpic-1)
+
+mfixed-cc
+UrlSuffix(gcc/FRV-Options.html#index-mfixed-cc)
+
+mfpr-32
+UrlSuffix(gcc/FRV-Options.html#index-mfpr-32)
+
+mfpr-64
+UrlSuffix(gcc/FRV-Options.html#index-mfpr-64)
+
+mgpr-32
+UrlSuffix(gcc/FRV-Options.html#index-mgpr-32)
+
+mgpr-64
+UrlSuffix(gcc/FRV-Options.html#index-mgpr-64)
+
+mgprel-ro
+UrlSuffix(gcc/FRV-Options.html#index-mgprel-ro)
+
+mhard-float
+UrlSuffix(gcc/FRV-Options.html#index-mhard-float-1)
+
+minline-plt
+UrlSuffix(gcc/FRV-Options.html#index-minline-plt-1)
+
+mlibrary-pic
+UrlSuffix(gcc/FRV-Options.html#index-mlibrary-pic)
+
+mlinked-fp
+UrlSuffix(gcc/FRV-Options.html#index-mlinked-fp)
+
+mlong-calls
+UrlSuffix(gcc/FRV-Options.html#index-mlong-calls-4)
+
+mmedia
+UrlSuffix(gcc/FRV-Options.html#index-mmedia)
+
+mmuladd
+UrlSuffix(gcc/FRV-Options.html#index-mmuladd)
+
+mmulti-cond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mmulti-cond-exec)
+
+mnested-cond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mnested-cond-exec)
+
+mno-eflags
+UrlSuffix(gcc/FRV-Options.html#index-mno-eflags)
+
+moptimize-membar
+UrlSuffix(gcc/FRV-Options.html#index-moptimize-membar)
+
+mpack
+UrlSuffix(gcc/FRV-Options.html#index-mpack)
+
+mscc
+UrlSuffix(gcc/FRV-Options.html#index-mscc)
+
+msoft-float
+UrlSuffix(gcc/FRV-Options.html#index-msoft-float-3)
+
+mTLS
+UrlSuffix(gcc/FRV-Options.html#index-mTLS)
+
+mtls
+UrlSuffix(gcc/FRV-Options.html#index-mtls)
+
+mtomcat-stats
+UrlSuffix(gcc/FRV-Options.html#index-mtomcat-stats)
+
+multilib-library-pic
+UrlSuffix(gcc/FRV-Options.html#index-multilib-library-pic)
+
+mvliw-branch
+UrlSuffix(gcc/FRV-Options.html#index-mvliw-branch)
+
diff --git a/gcc/config/ft32/ft32.opt.urls b/gcc/config/ft32/ft32.opt.urls
new file mode 100644
index 000000000000..707cb83010f0
--- /dev/null
+++ b/gcc/config/ft32/ft32.opt.urls
@@ -0,0 +1,20 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ft32/ft32.opt and generated HTML
+
+msim
+UrlSuffix(gcc/FT32-Options.html#index-msim-3)
+
+mlra
+UrlSuffix(gcc/FT32-Options.html#index-mlra-1)
+
+mnodiv
+UrlSuffix(gcc/FT32-Options.html#index-mnodiv)
+
+mft32b
+UrlSuffix(gcc/FT32-Options.html#index-mft32b)
+
+mcompress
+UrlSuffix(gcc/FT32-Options.html#index-mcompress)
+
+mnopm
+UrlSuffix(gcc/FT32-Options.html#index-mnopm)
+
diff --git a/gcc/config/fused-madd.opt.urls b/gcc/config/fused-madd.opt.urls
new file mode 100644
index 000000000000..0bd906cfb643
--- /dev/null
+++ b/gcc/config/fused-madd.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/fused-madd.opt and generated HTML
+
+; skipping UrlSuffix for 'mfused-madd' due to finding no URLs
+
diff --git a/gcc/config/g.opt.urls b/gcc/config/g.opt.urls
new file mode 100644
index 000000000000..4ffd5cbd2cf5
--- /dev/null
+++ b/gcc/config/g.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/g.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
diff --git a/gcc/config/gcn/gcn.opt.urls b/gcc/config/gcn/gcn.opt.urls
new file mode 100644
index 000000000000..7bc0ef41831f
--- /dev/null
+++ b/gcc/config/gcn/gcn.opt.urls
@@ -0,0 +1,23 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/gcn/gcn.opt and generated HTML
+
+march=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-march-1)
+
+mtune=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mtune-1)
+
+; skipping UrlSuffix for 'm32' due to finding no URLs
+
+; skipping UrlSuffix for 'm64' due to finding no URLs
+
+; skipping UrlSuffix for 'mgomp' due to finding no URLs
+
+mstack-size=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mstack-size)
+
+mxnack=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mxnack)
+
+msram-ecc=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-msram-ecc)
+
diff --git a/gcc/config/gnu-user.opt.urls b/gcc/config/gnu-user.opt.urls
new file mode 100644
index 000000000000..42021e1fe3cd
--- /dev/null
+++ b/gcc/config/gnu-user.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/gnu-user.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/h8300/h8300.opt.urls b/gcc/config/h8300/h8300.opt.urls
new file mode 100644
index 000000000000..8cbd7c313b7f
--- /dev/null
+++ b/gcc/config/h8300/h8300.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/h8300/h8300.opt and generated HTML
+
+ms
+UrlSuffix(gcc/H8_002f300-Options.html#index-ms)
+
+ms2600
+UrlSuffix(gcc/H8_002f300-Options.html#index-ms2600)
+
+mint32
+UrlSuffix(gcc/H8_002f300-Options.html#index-mint32)
+
+mrelax
+UrlSuffix(gcc/H8_002f300-Options.html#index-mrelax-1)
+
+mh
+UrlSuffix(gcc/H8_002f300-Options.html#index-mh)
+
+mn
+UrlSuffix(gcc/H8_002f300-Options.html#index-mn)
+
+malign-300
+UrlSuffix(gcc/H8_002f300-Options.html#index-malign-300)
+
+mexr
+UrlSuffix(gcc/H8_002f300-Options.html#index-mexr)
+
+mno-exr
+UrlSuffix(gcc/H8_002f300-Options.html#index-mno-exr)
+
diff --git a/gcc/config/hpux11.opt.urls b/gcc/config/hpux11.opt.urls
new file mode 100644
index 000000000000..84fef2e7919d
--- /dev/null
+++ b/gcc/config/hpux11.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/hpux11.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/i386/cygming.opt.urls b/gcc/config/i386/cygming.opt.urls
new file mode 100644
index 000000000000..87799befe3c4
--- /dev/null
+++ b/gcc/config/i386/cygming.opt.urls
@@ -0,0 +1,30 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygming.opt and generated HTML
+
+mconsole
+UrlSuffix(gcc/x86-Windows-Options.html#index-mconsole)
+
+mdll
+UrlSuffix(gcc/x86-Windows-Options.html#index-mdll)
+
+mnop-fun-dllimport
+UrlSuffix(gcc/x86-Windows-Options.html#index-mnop-fun-dllimport)
+
+; skipping UrlSuffix for 'mthreads' due to multiple URLs:
+;   duplicate: 'gcc/x86-Options.html#index-mthreads'
+;   duplicate: 'gcc/x86-Windows-Options.html#index-mthreads-1'
+
+mwin32
+UrlSuffix(gcc/x86-Windows-Options.html#index-mwin32)
+
+mwindows
+UrlSuffix(gcc/x86-Windows-Options.html#index-mwindows)
+
+mpe-aligned-commons
+UrlSuffix(gcc/x86-Windows-Options.html#index-mpe-aligned-commons)
+
+fset-stack-executable
+UrlSuffix(gcc/x86-Windows-Options.html#index-fno-set-stack-executable)
+
+fwritable-relocated-rdata
+UrlSuffix(gcc/x86-Windows-Options.html#index-fno-writable-relocated-rdata)
+
diff --git a/gcc/config/i386/cygwin.opt.urls b/gcc/config/i386/cygwin.opt.urls
new file mode 100644
index 000000000000..c484efc6fd98
--- /dev/null
+++ b/gcc/config/i386/cygwin.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygwin.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/i386/djgpp.opt.urls b/gcc/config/i386/djgpp.opt.urls
new file mode 100644
index 000000000000..8a723ab0a6dc
--- /dev/null
+++ b/gcc/config/i386/djgpp.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/djgpp.opt and generated HTML
+
diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls
new file mode 100644
index 000000000000..6ee69e35a61b
--- /dev/null
+++ b/gcc/config/i386/i386.opt.urls
@@ -0,0 +1,602 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/i386.opt and generated HTML
+
+m128bit-long-double
+UrlSuffix(gcc/x86-Options.html#index-m128bit-long-double)
+
+m80387
+UrlSuffix(gcc/x86-Options.html#index-m80387)
+
+m96bit-long-double
+UrlSuffix(gcc/x86-Options.html#index-m96bit-long-double)
+
+mlong-double-80
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-80)
+
+mlong-double-64
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-64-1)
+
+mlong-double-128
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-128-1)
+
+maccumulate-outgoing-args
+UrlSuffix(gcc/x86-Options.html#index-maccumulate-outgoing-args-1)
+
+malign-double
+UrlSuffix(gcc/x86-Options.html#index-malign-double)
+
+; skipping UrlSuffix for 'malign-loops=' due to finding no URLs
+
+malign-stringops
+UrlSuffix(gcc/x86-Options.html#index-malign-stringops)
+
+malign-data=
+UrlSuffix(gcc/x86-Options.html#index-malign-data-1)
+
+march=
+UrlSuffix(gcc/x86-Options.html#index-march-16)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mlarge-data-threshold=
+UrlSuffix(gcc/x86-Options.html#index-mlarge-data-threshold)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/x86-Options.html#index-mcpu-14)
+
+mfancy-math-387
+UrlSuffix(gcc/x86-Options.html#index-mfancy-math-387)
+
+mfp-ret-in-387
+UrlSuffix(gcc/x86-Options.html#index-mfp-ret-in-387)
+
+; skipping UrlSuffix for 'mfpmath=' due to multiple URLs:
+;   duplicate: 'gcc/Optimize-Options.html#index-mfpmath'
+;   duplicate: 'gcc/x86-Options.html#index-mfpmath-1'
+
+mhard-float
+UrlSuffix(gcc/x86-Options.html#index-mhard-float-11)
+
+mieee-fp
+UrlSuffix(gcc/x86-Options.html#index-mieee-fp)
+
+minline-all-stringops
+UrlSuffix(gcc/x86-Options.html#index-minline-all-stringops)
+
+minline-stringops-dynamically
+UrlSuffix(gcc/x86-Options.html#index-minline-stringops-dynamically)
+
+mms-bitfields
+UrlSuffix(gcc/x86-Options.html#index-mms-bitfields)
+
+mno-align-stringops
+UrlSuffix(gcc/x86-Options.html#index-mno-align-stringops)
+
+mno-fancy-math-387
+UrlSuffix(gcc/x86-Options.html#index-mno-fancy-math-387)
+
+mno-push-args
+UrlSuffix(gcc/x86-Options.html#index-mno-push-args)
+
+mno-red-zone
+UrlSuffix(gcc/x86-Options.html#index-mno-red-zone)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/x86-Options.html#index-momit-leaf-frame-pointer-2)
+
+mrelax-cmpxchg-loop
+UrlSuffix(gcc/x86-Options.html#index-mrelax-cmpxchg-loop)
+
+mpc32
+UrlSuffix(gcc/x86-Options.html#index-mpc32)
+
+mpc64
+UrlSuffix(gcc/x86-Options.html#index-mpc64)
+
+mpc80
+UrlSuffix(gcc/x86-Options.html#index-mpc80)
+
+mdaz-ftz
+UrlSuffix(gcc/x86-Options.html#index-mdaz-ftz)
+
+mpreferred-stack-boundary=
+UrlSuffix(gcc/x86-Options.html#index-mpreferred-stack-boundary-1)
+
+mincoming-stack-boundary=
+UrlSuffix(gcc/x86-Options.html#index-mincoming-stack-boundary)
+
+mpush-args
+UrlSuffix(gcc/x86-Options.html#index-mpush-args)
+
+mred-zone
+UrlSuffix(gcc/x86-Options.html#index-mred-zone)
+
+mregparm=
+UrlSuffix(gcc/x86-Options.html#index-mregparm)
+
+mrtd
+UrlSuffix(gcc/x86-Options.html#index-mrtd-1)
+
+msoft-float
+UrlSuffix(gcc/x86-Options.html#index-msoft-float-16)
+
+msseregparm
+UrlSuffix(gcc/x86-Options.html#index-msseregparm)
+
+mstackrealign
+UrlSuffix(gcc/x86-Options.html#index-mstackrealign)
+
+mtls-dialect=
+UrlSuffix(gcc/x86-Options.html#index-mtls-dialect-1)
+
+mtls-direct-seg-refs
+UrlSuffix(gcc/x86-Options.html#index-mtls-direct-seg-refs)
+
+mtune=
+UrlSuffix(gcc/x86-Options.html#index-mtune-17)
+
+mno-default
+UrlSuffix(gcc/x86-Options.html#index-mno-default)
+
+mdump-tune-features
+UrlSuffix(gcc/x86-Options.html#index-mdump-tune-features)
+
+miamcu
+UrlSuffix(gcc/x86-Options.html#index-miamcu)
+
+mabi=
+UrlSuffix(gcc/x86-Options.html#index-mabi-6)
+
+mcall-ms2sysv-xlogues
+UrlSuffix(gcc/x86-Options.html#index-mcall-ms2sysv-xlogues)
+
+mveclibabi=
+UrlSuffix(gcc/x86-Options.html#index-mveclibabi-1)
+
+mvect8-ret-in-mem
+UrlSuffix(gcc/x86-Options.html#index-mvect8-ret-in-mem)
+
+mrecip
+UrlSuffix(gcc/x86-Options.html#index-mrecip-1)
+
+mrecip=
+UrlSuffix(gcc/x86-Options.html#index-mrecip-1)
+
+mcld
+UrlSuffix(gcc/x86-Options.html#index-mcld)
+
+mvzeroupper
+UrlSuffix(gcc/x86-Options.html#index-mvzeroupper)
+
+mprefer-avx128
+UrlSuffix(gcc/x86-Options.html#index-mprefer-avx128)
+
+mprefer-vector-width=
+UrlSuffix(gcc/x86-Options.html#index-mprefer-vector-width)
+
+mpartial-vector-fp-math
+UrlSuffix(gcc/x86-Options.html#index-mpartial-vector-fp-math)
+
+mmove-max=
+UrlSuffix(gcc/x86-Options.html#index-mmove-max)
+
+mstore-max=
+UrlSuffix(gcc/x86-Options.html#index-mstore-max)
+
+m32
+UrlSuffix(gcc/x86-Options.html#index-m32-2)
+
+m64
+UrlSuffix(gcc/x86-Options.html#index-m64-4)
+
+mx32
+UrlSuffix(gcc/x86-Options.html#index-mx32)
+
+m16
+UrlSuffix(gcc/x86-Options.html#index-m16)
+
+mmmx
+UrlSuffix(gcc/x86-Options.html#index-mmmx)
+
+m3dnow
+UrlSuffix(gcc/x86-Options.html#index-m3dnow)
+
+m3dnowa
+UrlSuffix(gcc/x86-Options.html#index-m3dnowa)
+
+msse
+UrlSuffix(gcc/x86-Options.html#index-msse)
+
+msse2
+UrlSuffix(gcc/x86-Options.html#index-msse2)
+
+msse3
+UrlSuffix(gcc/x86-Options.html#index-msse3)
+
+mssse3
+UrlSuffix(gcc/x86-Options.html#index-mssse3)
+
+msse4.1
+UrlSuffix(gcc/x86-Options.html#index-msse4_002e1)
+
+msse4.2
+UrlSuffix(gcc/x86-Options.html#index-msse4_002e2)
+
+msse4
+UrlSuffix(gcc/x86-Options.html#index-msse4)
+
+mavx
+UrlSuffix(gcc/x86-Options.html#index-mavx)
+
+mavx2
+UrlSuffix(gcc/x86-Options.html#index-mavx2)
+
+mavx512f
+UrlSuffix(gcc/x86-Options.html#index-mavx512f)
+
+mavx512pf
+UrlSuffix(gcc/x86-Options.html#index-mavx512pf)
+
+mavx512er
+UrlSuffix(gcc/x86-Options.html#index-mavx512er)
+
+mavx512cd
+UrlSuffix(gcc/x86-Options.html#index-mavx512cd)
+
+mavx512dq
+UrlSuffix(gcc/x86-Options.html#index-mavx512dq)
+
+mavx512bw
+UrlSuffix(gcc/x86-Options.html#index-mavx512bw)
+
+mavx512vl
+UrlSuffix(gcc/x86-Options.html#index-mavx512vl)
+
+mavx512ifma
+UrlSuffix(gcc/x86-Options.html#index-mavx512ifma)
+
+mavx512vbmi
+UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi)
+
+mavx5124fmaps
+UrlSuffix(gcc/x86-Options.html#index-mavx5124fmaps)
+
+mavx5124vnniw
+UrlSuffix(gcc/x86-Options.html#index-mavx5124vnniw)
+
+mavx512vpopcntdq
+UrlSuffix(gcc/x86-Options.html#index-mavx512vpopcntdq)
+
+mavx512vbmi2
+UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi2)
+
+mavx512vnni
+UrlSuffix(gcc/x86-Options.html#index-mavx512vnni)
+
+mavx512bitalg
+UrlSuffix(gcc/x86-Options.html#index-mavx512bitalg)
+
+mavx512vp2intersect
+UrlSuffix(gcc/x86-Options.html#index-mavx512vp2intersect)
+
+mfma
+UrlSuffix(gcc/x86-Options.html#index-mfma)
+
+msse4a
+UrlSuffix(gcc/x86-Options.html#index-msse4a)
+
+mfma4
+UrlSuffix(gcc/x86-Options.html#index-mfma4)
+
+mxop
+UrlSuffix(gcc/x86-Options.html#index-mxop)
+
+mlwp
+UrlSuffix(gcc/x86-Options.html#index-mlwp)
+
+mabm
+UrlSuffix(gcc/x86-Options.html#index-mabm)
+
+mpopcnt
+UrlSuffix(gcc/x86-Options.html#index-mpopcnt)
+
+mpconfig
+UrlSuffix(gcc/x86-Options.html#index-mpconfig)
+
+mwbnoinvd
+UrlSuffix(gcc/x86-Options.html#index-mwbnoinvd)
+
+mptwrite
+UrlSuffix(gcc/x86-Options.html#index-mptwrite)
+
+muintr
+UrlSuffix(gcc/x86-Options.html#index-muintr)
+
+msgx
+UrlSuffix(gcc/x86-Options.html#index-msgx)
+
+mrdpid
+UrlSuffix(gcc/x86-Options.html#index-mrdpid)
+
+mgfni
+UrlSuffix(gcc/x86-Options.html#index-mgfni)
+
+mvaes
+UrlSuffix(gcc/x86-Options.html#index-mvaes)
+
+mvpclmulqdq
+UrlSuffix(gcc/x86-Options.html#index-mvpclmulqdq)
+
+mbmi
+UrlSuffix(gcc/x86-Options.html#index-mbmi)
+
+mbmi2
+UrlSuffix(gcc/x86-Options.html#index-mbmi2)
+
+mlzcnt
+UrlSuffix(gcc/x86-Options.html#index-mlzcnt)
+
+mhle
+UrlSuffix(gcc/x86-Options.html#index-mhle)
+
+mrdseed
+UrlSuffix(gcc/x86-Options.html#index-mrdseed)
+
+mprfchw
+UrlSuffix(gcc/x86-Options.html#index-mprfchw)
+
+madx
+UrlSuffix(gcc/x86-Options.html#index-madx)
+
+mclflushopt
+UrlSuffix(gcc/x86-Options.html#index-mclflushopt)
+
+mclwb
+UrlSuffix(gcc/x86-Options.html#index-mclwb)
+
+mfxsr
+UrlSuffix(gcc/x86-Options.html#index-mfxsr)
+
+mxsave
+UrlSuffix(gcc/x86-Options.html#index-mxsave)
+
+mxsaveopt
+UrlSuffix(gcc/x86-Options.html#index-mxsaveopt)
+
+mxsavec
+UrlSuffix(gcc/x86-Options.html#index-mxsavec)
+
+mxsaves
+UrlSuffix(gcc/x86-Options.html#index-mxsaves)
+
+mtbm
+UrlSuffix(gcc/x86-Options.html#index-mtbm)
+
+mcx16
+UrlSuffix(gcc/x86-Options.html#index-mcx16)
+
+msahf
+UrlSuffix(gcc/x86-Options.html#index-msahf)
+
+mmovbe
+UrlSuffix(gcc/x86-Options.html#index-mmovbe)
+
+mcrc32
+UrlSuffix(gcc/x86-Options.html#index-mcrc32)
+
+maes
+UrlSuffix(gcc/x86-Options.html#index-maes)
+
+msha
+UrlSuffix(gcc/x86-Options.html#index-msha)
+
+mpclmul
+UrlSuffix(gcc/x86-Options.html#index-mpclmul)
+
+msse2avx
+UrlSuffix(gcc/x86-Options.html#index-msse2avx)
+
+mfsgsbase
+UrlSuffix(gcc/x86-Options.html#index-mfsgsbase)
+
+mrdrnd
+UrlSuffix(gcc/x86-Options.html#index-mrdrnd)
+
+mf16c
+UrlSuffix(gcc/x86-Options.html#index-mf16c)
+
+mprefetchwt1
+UrlSuffix(gcc/x86-Options.html#index-mprefetchwt1)
+
+mfentry
+UrlSuffix(gcc/x86-Options.html#index-mfentry)
+
+mrecord-mcount
+UrlSuffix(gcc/x86-Options.html#index-mrecord-mcount)
+
+mnop-mcount
+UrlSuffix(gcc/x86-Options.html#index-mnop-mcount)
+
+mfentry-name=
+UrlSuffix(gcc/x86-Options.html#index-mfentry-name)
+
+mfentry-section=
+UrlSuffix(gcc/x86-Options.html#index-mfentry-section)
+
+mskip-rax-setup
+UrlSuffix(gcc/x86-Options.html#index-mskip-rax-setup)
+
+m8bit-idiv
+UrlSuffix(gcc/x86-Options.html#index-m8bit-idiv)
+
+mavx256-split-unaligned-load
+UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-load)
+
+mavx256-split-unaligned-store
+UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-store)
+
+mrtm
+UrlSuffix(gcc/x86-Options.html#index-mrtm)
+
+mmwaitx
+UrlSuffix(gcc/x86-Options.html#index-mmwaitx)
+
+mclzero
+UrlSuffix(gcc/x86-Options.html#index-mclzero)
+
+mpku
+UrlSuffix(gcc/x86-Options.html#index-mpku)
+
+mstack-protector-guard=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-4)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-reg-3)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-offset-4)
+
+; skipping UrlSuffix for 'mstack-protector-guard-symbol=' due to finding no URLs
+
+mgeneral-regs-only
+UrlSuffix(gcc/x86-Options.html#index-mgeneral-regs-only-2)
+
+mshstk
+UrlSuffix(gcc/x86-Options.html#index-mshstk)
+
+mcet-switch
+UrlSuffix(gcc/x86-Options.html#index-mcet-switch)
+
+mmanual-endbr
+UrlSuffix(gcc/x86-Options.html#index-mmanual-endbr)
+
+mforce-indirect-call
+UrlSuffix(gcc/x86-Options.html#index-mforce-indirect-call)
+
+mindirect-branch=
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch)
+
+mfunction-return=
+UrlSuffix(gcc/x86-Options.html#index-mfunction-return)
+
+mindirect-branch-cs-prefix
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-cs-prefix)
+
+mindirect-branch-register
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-register)
+
+mmovdiri
+UrlSuffix(gcc/x86-Options.html#index-mmovdiri)
+
+mmovdir64b
+UrlSuffix(gcc/x86-Options.html#index-mmovdir64b)
+
+mwaitpkg
+UrlSuffix(gcc/x86-Options.html#index-mwaitpkg)
+
+mcldemote
+UrlSuffix(gcc/x86-Options.html#index-mcldemote)
+
+minstrument-return=
+UrlSuffix(gcc/x86-Options.html#index-minstrument-return)
+
+mrecord-return
+UrlSuffix(gcc/x86-Options.html#index-mrecord-return)
+
+mharden-sls=
+UrlSuffix(gcc/x86-Options.html#index-mharden-sls-1)
+
+mavx512bf16
+UrlSuffix(gcc/x86-Options.html#index-mavx512bf16)
+
+menqcmd
+UrlSuffix(gcc/x86-Options.html#index-menqcmd)
+
+mserialize
+UrlSuffix(gcc/x86-Options.html#index-mserialize)
+
+mtsxldtrk
+UrlSuffix(gcc/x86-Options.html#index-mtsxldtrk)
+
+mamx-tile
+UrlSuffix(gcc/x86-Options.html#index-mamx-tile)
+
+mamx-int8
+UrlSuffix(gcc/x86-Options.html#index-mamx-int8)
+
+mamx-bf16
+UrlSuffix(gcc/x86-Options.html#index-mamx-bf16)
+
+mhreset
+UrlSuffix(gcc/x86-Options.html#index-mhreset)
+
+mkl
+UrlSuffix(gcc/x86-Options.html#index-mkl)
+
+mwidekl
+UrlSuffix(gcc/x86-Options.html#index-mwidekl)
+
+mavxvnni
+UrlSuffix(gcc/x86-Options.html#index-mavxvnni)
+
+mneeded
+UrlSuffix(gcc/x86-Options.html#index-mneeded)
+
+mmwait
+UrlSuffix(gcc/x86-Options.html#index-mmwait)
+
+mavx512fp16
+UrlSuffix(gcc/x86-Options.html#index-mavx512fp16)
+
+mdirect-extern-access
+UrlSuffix(gcc/x86-Options.html#index-mdirect-extern-access-1)
+
+mavxifma
+UrlSuffix(gcc/x86-Options.html#index-mavxifma)
+
+mavxvnniint8
+UrlSuffix(gcc/x86-Options.html#index-mavxvnniint8)
+
+mavxneconvert
+UrlSuffix(gcc/x86-Options.html#index-mavxneconvert)
+
+mcmpccxadd
+UrlSuffix(gcc/x86-Options.html#index-mcmpccxadd)
+
+mamx-fp16
+UrlSuffix(gcc/x86-Options.html#index-mamx-fp16)
+
+mprefetchi
+UrlSuffix(gcc/x86-Options.html#index-mprefetchi)
+
+mraoint
+UrlSuffix(gcc/x86-Options.html#index-mraoint)
+
+munroll-only-small-loops
+UrlSuffix(gcc/x86-Options.html#index-munroll-only-small-loops)
+
+mlam=
+UrlSuffix(gcc/x86-Options.html#index-mlam)
+
+mamx-complex
+UrlSuffix(gcc/x86-Options.html#index-mamx-complex)
+
+mavxvnniint16
+UrlSuffix(gcc/x86-Options.html#index-mavxvnniint16)
+
+msm3
+UrlSuffix(gcc/x86-Options.html#index-msm3)
+
+msha512
+UrlSuffix(gcc/x86-Options.html#index-msha512)
+
+msm4
+UrlSuffix(gcc/x86-Options.html#index-msm4)
+
+mapxf
+UrlSuffix(gcc/x86-Options.html#index-mapxf)
+
+musermsr
+UrlSuffix(gcc/x86-Options.html#index-musermsr)
+
diff --git a/gcc/config/i386/mingw-w64.opt.urls b/gcc/config/i386/mingw-w64.opt.urls
new file mode 100644
index 000000000000..6bb53ef29b2b
--- /dev/null
+++ b/gcc/config/i386/mingw-w64.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw-w64.opt and generated HTML
+
+municode
+UrlSuffix(gcc/x86-Windows-Options.html#index-municode)
+
diff --git a/gcc/config/i386/mingw.opt.urls b/gcc/config/i386/mingw.opt.urls
new file mode 100644
index 000000000000..2cbbaadf310d
--- /dev/null
+++ b/gcc/config/i386/mingw.opt.urls
@@ -0,0 +1,12 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw.opt and generated HTML
+
+mcrtdll=
+UrlSuffix(gcc/x86-Windows-Options.html#index-mcrtdll)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+Wpedantic-ms-format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic-ms-format)
+
diff --git a/gcc/config/i386/nto.opt.urls b/gcc/config/i386/nto.opt.urls
new file mode 100644
index 000000000000..37c07a5b88be
--- /dev/null
+++ b/gcc/config/i386/nto.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/nto.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
diff --git a/gcc/config/ia64/ia64.opt.urls b/gcc/config/ia64/ia64.opt.urls
new file mode 100644
index 000000000000..1e1d0631550a
--- /dev/null
+++ b/gcc/config/ia64/ia64.opt.urls
@@ -0,0 +1,122 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ia64.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/IA-64-Options.html#index-mbig-endian-6)
+
+mlittle-endian
+UrlSuffix(gcc/IA-64-Options.html#index-mlittle-endian-6)
+
+mgnu-as
+UrlSuffix(gcc/IA-64-Options.html#index-mgnu-as)
+
+mgnu-ld
+UrlSuffix(gcc/IA-64-Options.html#index-mgnu-ld-1)
+
+mvolatile-asm-stop
+UrlSuffix(gcc/IA-64-Options.html#index-mvolatile-asm-stop)
+
+mregister-names
+UrlSuffix(gcc/IA-64-Options.html#index-mregister-names)
+
+mno-sdata
+UrlSuffix(gcc/IA-64-Options.html#index-mno-sdata-1)
+
+msdata
+UrlSuffix(gcc/IA-64-Options.html#index-msdata-1)
+
+mno-pic
+UrlSuffix(gcc/IA-64-Options.html#index-mno-pic)
+
+mconstant-gp
+UrlSuffix(gcc/IA-64-Options.html#index-mconstant-gp)
+
+mauto-pic
+UrlSuffix(gcc/IA-64-Options.html#index-mauto-pic)
+
+minline-float-divide-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-min-latency)
+
+minline-float-divide-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-max-throughput)
+
+mno-inline-float-divide
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-float-divide)
+
+minline-int-divide-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-min-latency)
+
+minline-int-divide-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-max-throughput)
+
+mno-inline-int-divide
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-int-divide)
+
+minline-sqrt-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-min-latency)
+
+minline-sqrt-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-max-throughput)
+
+mno-inline-sqrt
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-sqrt)
+
+mdwarf2-asm
+UrlSuffix(gcc/IA-64-Options.html#index-mdwarf2-asm)
+
+mearly-stop-bits
+UrlSuffix(gcc/IA-64-Options.html#index-mearly-stop-bits)
+
+mfixed-range=
+UrlSuffix(gcc/IA-64-Options.html#index-mfixed-range-1)
+
+mtls-size=
+UrlSuffix(gcc/IA-64-Options.html#index-mtls-size-1)
+
+mtune=
+UrlSuffix(gcc/IA-64-Options.html#index-mtune-7)
+
+msched-br-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-br-data-spec)
+
+msched-ar-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-data-spec)
+
+msched-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-control-spec)
+
+msched-br-in-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-br-in-data-spec)
+
+msched-ar-in-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-in-data-spec)
+
+msched-in-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-in-control-spec)
+
+msched-spec-ldc
+UrlSuffix(gcc/IA-64-Options.html#index-msched-spec-ldc)
+
+msched-prefer-non-data-spec-insns
+UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-data-spec-insns)
+
+msched-prefer-non-control-spec-insns
+UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-control-spec-insns)
+
+msched-count-spec-in-critical-path
+UrlSuffix(gcc/IA-64-Options.html#index-msched-count-spec-in-critical-path)
+
+msched-stop-bits-after-every-cycle
+UrlSuffix(gcc/IA-64-Options.html#index-msched-stop-bits-after-every-cycle)
+
+msched-fp-mem-deps-zero-cost
+UrlSuffix(gcc/IA-64-Options.html#index-msched-fp-mem-deps-zero-cost)
+
+msched-max-memory-insns=
+UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns)
+
+msched-max-memory-insns-hard-limit
+UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns-hard-limit)
+
+msel-sched-dont-check-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msel-sched-dont-check-control-spec)
+
diff --git a/gcc/config/ia64/ilp32.opt.urls b/gcc/config/ia64/ilp32.opt.urls
new file mode 100644
index 000000000000..07bd47d6d13f
--- /dev/null
+++ b/gcc/config/ia64/ilp32.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ilp32.opt and generated HTML
+
+milp32
+UrlSuffix(gcc/IA-64-Options.html#index-milp32)
+
+mlp64
+UrlSuffix(gcc/IA-64-Options.html#index-mlp64)
+
diff --git a/gcc/config/ia64/vms.opt.urls b/gcc/config/ia64/vms.opt.urls
new file mode 100644
index 000000000000..e7797d9325e7
--- /dev/null
+++ b/gcc/config/ia64/vms.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/vms.opt and generated HTML
+
diff --git a/gcc/config/iq2000/iq2000.opt.urls b/gcc/config/iq2000/iq2000.opt.urls
new file mode 100644
index 000000000000..6aadab6be3af
--- /dev/null
+++ b/gcc/config/iq2000/iq2000.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/iq2000/iq2000.opt and generated HTML
+
+; skipping UrlSuffix for 'march=' due to finding no URLs
+
+; skipping UrlSuffix for 'mcpu=' due to finding no URLs
+
+; skipping UrlSuffix for 'membedded-data' due to finding no URLs
+
+; skipping UrlSuffix for 'mgpopt' due to finding no URLs
+
+; skipping UrlSuffix for 'mno-crt0' due to finding no URLs
+
+; skipping UrlSuffix for 'muninit-const-in-rodata' due to finding no URLs
+
diff --git a/gcc/config/linux-android.opt.urls b/gcc/config/linux-android.opt.urls
new file mode 100644
index 000000000000..48d38e925aa1
--- /dev/null
+++ b/gcc/config/linux-android.opt.urls
@@ -0,0 +1,11 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/linux-android.opt and generated HTML
+
+mandroid
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mandroid)
+
+tno-android-cc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-cc)
+
+tno-android-ld
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-ld)
+
diff --git a/gcc/config/linux.opt.urls b/gcc/config/linux.opt.urls
new file mode 100644
index 000000000000..792a73fb0a69
--- /dev/null
+++ b/gcc/config/linux.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/linux.opt and generated HTML
+
+mbionic
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mbionic)
+
+mglibc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mglibc)
+
+muclibc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-muclibc)
+
+mmusl
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mmusl)
+
diff --git a/gcc/config/lm32/lm32.opt.urls b/gcc/config/lm32/lm32.opt.urls
new file mode 100644
index 000000000000..89c8c47d3f44
--- /dev/null
+++ b/gcc/config/lm32/lm32.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/lm32/lm32.opt and generated HTML
+
+mdivide-enabled
+UrlSuffix(gcc/LM32-Options.html#index-mdivide-enabled)
+
+mbarrel-shift-enabled
+UrlSuffix(gcc/LM32-Options.html#index-mbarrel-shift-enabled)
+
+msign-extend-enabled
+UrlSuffix(gcc/LM32-Options.html#index-msign-extend-enabled)
+
+muser-enabled
+UrlSuffix(gcc/LM32-Options.html#index-muser-enabled)
+
diff --git a/gcc/config/loongarch/loongarch.opt.urls b/gcc/config/loongarch/loongarch.opt.urls
new file mode 100644
index 000000000000..fbf0b53b969c
--- /dev/null
+++ b/gcc/config/loongarch/loongarch.opt.urls
@@ -0,0 +1,64 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/loongarch/loongarch.opt and generated HTML
+
+mfpu=
+UrlSuffix(gcc/LoongArch-Options.html#index-mfpu-2)
+
+msoft-float
+UrlSuffix(gcc/LoongArch-Options.html#index-msoft-float-5)
+
+msingle-float
+UrlSuffix(gcc/LoongArch-Options.html#index-msingle-float)
+
+mdouble-float
+UrlSuffix(gcc/LoongArch-Options.html#index-mdouble-float-1)
+
+msimd=
+UrlSuffix(gcc/LoongArch-Options.html#index-msimd-1)
+
+march=
+UrlSuffix(gcc/LoongArch-Options.html#index-march-7)
+
+mtune=
+UrlSuffix(gcc/LoongArch-Options.html#index-mtune-8)
+
+mabi=
+UrlSuffix(gcc/LoongArch-Options.html#index-mabi-2)
+
+mbranch-cost=
+UrlSuffix(gcc/LoongArch-Options.html#index-mbranch-cost-2)
+
+mcheck-zero-division
+UrlSuffix(gcc/LoongArch-Options.html#index-mcheck-zero-division)
+
+mcond-move-int
+UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-int)
+
+mcond-move-float
+UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-float)
+
+mmemcpy
+UrlSuffix(gcc/LoongArch-Options.html#index-mmemcpy)
+
+mstrict-align
+UrlSuffix(gcc/LoongArch-Options.html#index-mstrict-align-1)
+
+mmax-inline-memcpy-size=
+UrlSuffix(gcc/LoongArch-Options.html#index-mmax-inline-memcpy-size)
+
+mexplicit-relocs=
+UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
+
+mexplicit-relocs
+UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
+
+; skipping UrlSuffix for 'mrecip' due to finding no URLs
+
+; skipping UrlSuffix for 'mrecip=' due to finding no URLs
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mdirect-extern-access
+UrlSuffix(gcc/LoongArch-Options.html#index-mdirect-extern-access)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
diff --git a/gcc/config/lynx.opt.urls b/gcc/config/lynx.opt.urls
new file mode 100644
index 000000000000..63e7b9c4b33f
--- /dev/null
+++ b/gcc/config/lynx.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/lynx.opt and generated HTML
+
+mthreads
+UrlSuffix(gcc/x86-Windows-Options.html#index-mthreads-1)
+
diff --git a/gcc/config/m32c/m32c.opt.urls b/gcc/config/m32c/m32c.opt.urls
new file mode 100644
index 000000000000..da1bc024f74a
--- /dev/null
+++ b/gcc/config/m32c/m32c.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m32c/m32c.opt and generated HTML
+
+msim
+UrlSuffix(gcc/M32C-Options.html#index-msim-4)
+
+memregs=
+UrlSuffix(gcc/M32C-Options.html#index-memregs_003d)
+
diff --git a/gcc/config/m32r/m32r.opt.urls b/gcc/config/m32r/m32r.opt.urls
new file mode 100644
index 000000000000..ca33866970d8
--- /dev/null
+++ b/gcc/config/m32r/m32r.opt.urls
@@ -0,0 +1,27 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m32r/m32r.opt and generated HTML
+
+m32rx
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32rx)
+
+m32r2
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r2)
+
+m32r
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r)
+
+malign-loops
+UrlSuffix(gcc/M32R_002fD-Options.html#index-malign-loops)
+
+mdebug
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mdebug)
+
+; skipping UrlSuffix for 'mflush-func=' due to finding no URLs
+
+mno-flush-func
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-func)
+
+mno-flush-trap
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-trap)
+
+; skipping UrlSuffix for 'msdata=' due to finding no URLs
+
diff --git a/gcc/config/m68k/ieee.opt.urls b/gcc/config/m68k/ieee.opt.urls
new file mode 100644
index 000000000000..9c0c0f9b68a7
--- /dev/null
+++ b/gcc/config/m68k/ieee.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/ieee.opt and generated HTML
+
+; skipping UrlSuffix for 'mieee-fp' due to finding no URLs
+
diff --git a/gcc/config/m68k/m68k-tables.opt.urls b/gcc/config/m68k/m68k-tables.opt.urls
new file mode 100644
index 000000000000..380dc4370846
--- /dev/null
+++ b/gcc/config/m68k/m68k-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k-tables.opt and generated HTML
+
diff --git a/gcc/config/m68k/m68k.opt.urls b/gcc/config/m68k/m68k.opt.urls
new file mode 100644
index 000000000000..079fbf4a88e4
--- /dev/null
+++ b/gcc/config/m68k/m68k.opt.urls
@@ -0,0 +1,107 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k.opt and generated HTML
+
+m5200
+UrlSuffix(gcc/M680x0-Options.html#index-m5200)
+
+m5206e
+UrlSuffix(gcc/M680x0-Options.html#index-m5206e)
+
+m528x
+UrlSuffix(gcc/M680x0-Options.html#index-m528x)
+
+m5307
+UrlSuffix(gcc/M680x0-Options.html#index-m5307)
+
+m5407
+UrlSuffix(gcc/M680x0-Options.html#index-m5407)
+
+m68000
+UrlSuffix(gcc/M680x0-Options.html#index-m68000)
+
+m68010
+UrlSuffix(gcc/M680x0-Options.html#index-m68010)
+
+m68020
+UrlSuffix(gcc/M680x0-Options.html#index-m68020)
+
+m68020-40
+UrlSuffix(gcc/M680x0-Options.html#index-m68020-40)
+
+m68020-60
+UrlSuffix(gcc/M680x0-Options.html#index-m68020-60)
+
+m68030
+UrlSuffix(gcc/M680x0-Options.html#index-m68030)
+
+m68040
+UrlSuffix(gcc/M680x0-Options.html#index-m68040)
+
+m68060
+UrlSuffix(gcc/M680x0-Options.html#index-m68060)
+
+m68881
+UrlSuffix(gcc/M680x0-Options.html#index-m68881)
+
+malign-int
+UrlSuffix(gcc/M680x0-Options.html#index-malign-int)
+
+march=
+UrlSuffix(gcc/M680x0-Options.html#index-march-8)
+
+mbitfield
+UrlSuffix(gcc/M680x0-Options.html#index-mbitfield)
+
+mc68000
+UrlSuffix(gcc/M680x0-Options.html#index-mc68000)
+
+mc68020
+UrlSuffix(gcc/M680x0-Options.html#index-mc68020)
+
+mcfv4e
+UrlSuffix(gcc/M680x0-Options.html#index-mcfv4e)
+
+mcpu=
+UrlSuffix(gcc/M680x0-Options.html#index-mcpu-7)
+
+mcpu32
+UrlSuffix(gcc/M680x0-Options.html#index-mcpu32)
+
+mdiv
+UrlSuffix(gcc/M680x0-Options.html#index-mdiv-1)
+
+mhard-float
+UrlSuffix(gcc/M680x0-Options.html#index-mhard-float-2)
+
+; skipping UrlSuffix for 'mid-shared-library' due to finding no URLs
+
+mlong-jump-table-offsets
+UrlSuffix(gcc/M680x0-Options.html#index-mlong-jump-table-offsets)
+
+mnobitfield
+UrlSuffix(gcc/M680x0-Options.html#index-mnobitfield)
+
+mpcrel
+UrlSuffix(gcc/M680x0-Options.html#index-mpcrel)
+
+mrtd
+UrlSuffix(gcc/M680x0-Options.html#index-mrtd)
+
+; skipping UrlSuffix for 'msep-data' due to finding no URLs
+
+; skipping UrlSuffix for 'mshared-library-id=' due to finding no URLs
+
+mshort
+UrlSuffix(gcc/M680x0-Options.html#index-mshort)
+
+msoft-float
+UrlSuffix(gcc/M680x0-Options.html#index-msoft-float-6)
+
+mstrict-align
+UrlSuffix(gcc/M680x0-Options.html#index-mstrict-align-2)
+
+mtune=
+UrlSuffix(gcc/M680x0-Options.html#index-mtune-9)
+
+mxgot
+UrlSuffix(gcc/M680x0-Options.html#index-mxgot)
+
diff --git a/gcc/config/m68k/uclinux.opt.urls b/gcc/config/m68k/uclinux.opt.urls
new file mode 100644
index 000000000000..3fd1392f88a6
--- /dev/null
+++ b/gcc/config/m68k/uclinux.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/uclinux.opt and generated HTML
+
diff --git a/gcc/config/mcore/mcore.opt.urls b/gcc/config/mcore/mcore.opt.urls
new file mode 100644
index 000000000000..a876c8c13eff
--- /dev/null
+++ b/gcc/config/mcore/mcore.opt.urls
@@ -0,0 +1,38 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mcore/mcore.opt and generated HTML
+
+m210
+UrlSuffix(gcc/MCore-Options.html#index-m210)
+
+m340
+UrlSuffix(gcc/MCore-Options.html#index-m340)
+
+m4byte-functions
+UrlSuffix(gcc/MCore-Options.html#index-m4byte-functions)
+
+mbig-endian
+UrlSuffix(gcc/MCore-Options.html#index-mbig-endian-7)
+
+mcallgraph-data
+UrlSuffix(gcc/MCore-Options.html#index-mcallgraph-data)
+
+mdiv
+UrlSuffix(gcc/MCore-Options.html#index-mdiv-2)
+
+mhardlit
+UrlSuffix(gcc/MCore-Options.html#index-mhardlit)
+
+mlittle-endian
+UrlSuffix(gcc/MCore-Options.html#index-mlittle-endian-7)
+
+mno-lsim
+UrlSuffix(gcc/MCore-Options.html#index-mno-lsim-1)
+
+mslow-bytes
+UrlSuffix(gcc/MCore-Options.html#index-mslow-bytes)
+
+mstack-increment=
+UrlSuffix(gcc/MCore-Options.html#index-mstack-increment)
+
+mwide-bitfields
+UrlSuffix(gcc/MCore-Options.html#index-mwide-bitfields)
+
diff --git a/gcc/config/microblaze/microblaze.opt.urls b/gcc/config/microblaze/microblaze.opt.urls
new file mode 100644
index 000000000000..33b13b84e2c2
--- /dev/null
+++ b/gcc/config/microblaze/microblaze.opt.urls
@@ -0,0 +1,59 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/microblaze/microblaze.opt and generated HTML
+
+msoft-float
+UrlSuffix(gcc/MicroBlaze-Options.html#index-msoft-float-7)
+
+mhard-float
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mhard-float-3)
+
+msmall-divides
+UrlSuffix(gcc/MicroBlaze-Options.html#index-msmall-divides)
+
+mcpu=
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mcpu_003d-3)
+
+mmemcpy
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mmemcpy-1)
+
+mbig-endian
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mbig-endian-8)
+
+mlittle-endian
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mlittle-endian-8)
+
+mxl-soft-mul
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-mul)
+
+mxl-reorder
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-reorder)
+
+mxl-soft-div
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-div)
+
+mxl-barrel-shift
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-barrel-shift)
+
+mxl-pattern-compare
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-pattern-compare)
+
+mxl-stack-check
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-stack-check)
+
+mxl-gp-opt
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-gp-opt)
+
+mno-clearbss
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mno-clearbss)
+
+mxl-multiply-high
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-multiply-high)
+
+mxl-float-convert
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-convert)
+
+mxl-float-sqrt
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-sqrt)
+
+mpic-data-is-text-relative
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mpic-data-is-text-relative-1)
+
diff --git a/gcc/config/mips/mips-tables.opt.urls b/gcc/config/mips/mips-tables.opt.urls
new file mode 100644
index 000000000000..3b2a77f2ea9c
--- /dev/null
+++ b/gcc/config/mips/mips-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips-tables.opt and generated HTML
+
diff --git a/gcc/config/mips/mips.opt.urls b/gcc/config/mips/mips.opt.urls
new file mode 100644
index 000000000000..ff2f0aee0e37
--- /dev/null
+++ b/gcc/config/mips/mips.opt.urls
@@ -0,0 +1,269 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips.opt and generated HTML
+
+EB
+UrlSuffix(gcc/MIPS-Options.html#index-EB-2)
+
+EL
+UrlSuffix(gcc/MIPS-Options.html#index-EL-2)
+
+; skipping UrlSuffix for 'mabi=' due to finding no URLs
+
+mabicalls
+UrlSuffix(gcc/MIPS-Options.html#index-mabicalls)
+
+mmad
+UrlSuffix(gcc/MIPS-Options.html#index-mmad)
+
+mimadd
+UrlSuffix(gcc/MIPS-Options.html#index-mimadd)
+
+march=
+UrlSuffix(gcc/MIPS-Options.html#index-march-9)
+
+mbranch-cost=
+UrlSuffix(gcc/MIPS-Options.html#index-mbranch-cost-3)
+
+mbranch-likely
+UrlSuffix(gcc/MIPS-Options.html#index-mbranch-likely)
+
+mflip-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mflip-mips16)
+
+mcheck-zero-division
+UrlSuffix(gcc/MIPS-Options.html#index-mcheck-zero-division-1)
+
+mcode-readable=
+UrlSuffix(gcc/MIPS-Options.html#index-mcode-readable)
+
+mdivide-breaks
+UrlSuffix(gcc/MIPS-Options.html#index-mdivide-breaks)
+
+mdivide-traps
+UrlSuffix(gcc/MIPS-Options.html#index-mdivide-traps)
+
+mdmx
+UrlSuffix(gcc/MIPS-Options.html#index-mdmx)
+
+mdouble-float
+UrlSuffix(gcc/MIPS-Options.html#index-mdouble-float-2)
+
+mdsp
+UrlSuffix(gcc/MIPS-Options.html#index-mdsp-1)
+
+mdspr2
+UrlSuffix(gcc/MIPS-Options.html#index-mdspr2)
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+; skipping UrlSuffix for 'meb' due to finding no URLs
+
+; skipping UrlSuffix for 'mel' due to finding no URLs
+
+membedded-data
+UrlSuffix(gcc/MIPS-Options.html#index-membedded-data)
+
+meva
+UrlSuffix(gcc/MIPS-Options.html#index-meva)
+
+mexplicit-relocs
+UrlSuffix(gcc/MIPS-Options.html#index-mexplicit-relocs-2)
+
+mextern-sdata
+UrlSuffix(gcc/MIPS-Options.html#index-mextern-sdata)
+
+mfix-24k
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-24k)
+
+mfix-r4000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4000)
+
+mfix-r4400
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4400)
+
+mfix-r5900
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r5900)
+
+mfix-rm7000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-rm7000)
+
+mfix-r10000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r10000)
+
+mfix-sb1
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-sb1)
+
+mfix-vr4120
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4120)
+
+mfix-vr4130
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4130)
+
+mfp-exceptions
+UrlSuffix(gcc/MIPS-Options.html#index-mfp-exceptions)
+
+mfp32
+UrlSuffix(gcc/MIPS-Options.html#index-mfp32)
+
+mfpxx
+UrlSuffix(gcc/MIPS-Options.html#index-mfpxx)
+
+mfp64
+UrlSuffix(gcc/MIPS-Options.html#index-mfp64)
+
+mflush-func=
+UrlSuffix(gcc/MIPS-Options.html#index-mflush-func)
+
+mgp32
+UrlSuffix(gcc/MIPS-Options.html#index-mgp32)
+
+mgp64
+UrlSuffix(gcc/MIPS-Options.html#index-mgp64)
+
+mgpopt
+UrlSuffix(gcc/MIPS-Options.html#index-mgpopt)
+
+mplt
+UrlSuffix(gcc/MIPS-Options.html#index-mplt)
+
+mhard-float
+UrlSuffix(gcc/MIPS-Options.html#index-mhard-float-4)
+
+minterlink-compressed
+UrlSuffix(gcc/MIPS-Options.html#index-minterlink-compressed)
+
+minterlink-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-minterlink-mips16)
+
+mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mips16)
+
+mips3d
+UrlSuffix(gcc/MIPS-Options.html#index-mips3d)
+
+mllsc
+UrlSuffix(gcc/MIPS-Options.html#index-mllsc)
+
+mlocal-sdata
+UrlSuffix(gcc/MIPS-Options.html#index-mlocal-sdata)
+
+mlong-calls
+UrlSuffix(gcc/MIPS-Options.html#index-mlong-calls-6)
+
+mlong32
+UrlSuffix(gcc/MIPS-Options.html#index-mlong32)
+
+mlong64
+UrlSuffix(gcc/MIPS-Options.html#index-mlong64)
+
+mmcount-ra-address
+UrlSuffix(gcc/MIPS-Options.html#index-mmcount-ra-address)
+
+mmemcpy
+UrlSuffix(gcc/MIPS-Options.html#index-mmemcpy-2)
+
+mmicromips
+UrlSuffix(gcc/MIPS-Options.html#index-mmicromips)
+
+mmt
+UrlSuffix(gcc/MIPS-Options.html#index-mmt)
+
+mno-float
+UrlSuffix(gcc/MIPS-Options.html#index-mno-float)
+
+mmcu
+UrlSuffix(gcc/MIPS-Options.html#index-mmcu-1)
+
+; skipping UrlSuffix for 'mno-flush-func' due to finding no URLs
+
+mno-mdmx
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mdmx)
+
+mno-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mips16)
+
+mno-mips3d
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mips3d)
+
+mpaired-single
+UrlSuffix(gcc/MIPS-Options.html#index-mpaired-single)
+
+mr10k-cache-barrier=
+UrlSuffix(gcc/MIPS-Options.html#index-mr10k-cache-barrier)
+
+mrelax-pic-calls
+UrlSuffix(gcc/MIPS-Options.html#index-mrelax-pic-calls)
+
+msingle-float
+UrlSuffix(gcc/MIPS-Options.html#index-msingle-float-1)
+
+msmartmips
+UrlSuffix(gcc/MIPS-Options.html#index-msmartmips)
+
+msoft-float
+UrlSuffix(gcc/MIPS-Options.html#index-msoft-float-8)
+
+msplit-addresses
+UrlSuffix(gcc/MIPS-Options.html#index-msplit-addresses)
+
+mmips16e2
+UrlSuffix(gcc/MIPS-Options.html#index-mmips16e2)
+
+msym32
+UrlSuffix(gcc/MIPS-Options.html#index-msym32)
+
+msynci
+UrlSuffix(gcc/MIPS-Options.html#index-msynci)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mlxc1-sxc1
+UrlSuffix(gcc/MIPS-Options.html#index-mlxc1-sxc1)
+
+mmadd4
+UrlSuffix(gcc/MIPS-Options.html#index-mmadd4)
+
+mtune=
+UrlSuffix(gcc/MIPS-Options.html#index-mtune-10)
+
+munaligned-access
+UrlSuffix(gcc/MIPS-Options.html#index-munaligned-access-1)
+
+muninit-const-in-rodata
+UrlSuffix(gcc/MIPS-Options.html#index-muninit-const-in-rodata)
+
+mvirt
+UrlSuffix(gcc/MIPS-Options.html#index-mvirt)
+
+mxpa
+UrlSuffix(gcc/MIPS-Options.html#index-mxpa)
+
+mcrc
+UrlSuffix(gcc/MIPS-Options.html#index-mcrc)
+
+mginv
+UrlSuffix(gcc/MIPS-Options.html#index-mginv)
+
+mvr4130-align
+UrlSuffix(gcc/MIPS-Options.html#index-mvr4130-align)
+
+mxgot
+UrlSuffix(gcc/MIPS-Options.html#index-mxgot-1)
+
+modd-spreg
+UrlSuffix(gcc/MIPS-Options.html#index-modd-spreg)
+
+mframe-header-opt
+UrlSuffix(gcc/MIPS-Options.html#index-mframe-header-opt)
+
+mload-store-pairs
+UrlSuffix(gcc/MIPS-Options.html#index-mload-store-pairs)
+
+mloongson-mmi
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-mmi)
+
+mloongson-ext
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext)
+
+mloongson-ext2
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext2)
+
diff --git a/gcc/config/mips/sde.opt.urls b/gcc/config/mips/sde.opt.urls
new file mode 100644
index 000000000000..2a3d290545f0
--- /dev/null
+++ b/gcc/config/mips/sde.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/sde.opt and generated HTML
+
diff --git a/gcc/config/mmix/mmix.opt.urls b/gcc/config/mmix/mmix.opt.urls
new file mode 100644
index 000000000000..6722f9e4e01d
--- /dev/null
+++ b/gcc/config/mmix/mmix.opt.urls
@@ -0,0 +1,44 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mmix/mmix.opt and generated HTML
+
+mlibfuncs
+UrlSuffix(gcc/MMIX-Options.html#index-mlibfuncs)
+
+mabi=mmixware
+UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dmmixware)
+
+mabi=gnu
+UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dgnu)
+
+mepsilon
+UrlSuffix(gcc/MMIX-Options.html#index-mepsilon)
+
+mzero-extend
+UrlSuffix(gcc/MMIX-Options.html#index-mzero-extend)
+
+mknuthdiv
+UrlSuffix(gcc/MMIX-Options.html#index-mknuthdiv)
+
+mtoplevel-symbols
+UrlSuffix(gcc/MMIX-Options.html#index-mtoplevel-symbols)
+
+melf
+UrlSuffix(gcc/MMIX-Options.html#index-melf-1)
+
+mbranch-predict
+UrlSuffix(gcc/MMIX-Options.html#index-mbranch-predict)
+
+mno-branch-predict
+UrlSuffix(gcc/MMIX-Options.html#index-mno-branch-predict)
+
+mbase-addresses
+UrlSuffix(gcc/MMIX-Options.html#index-mbase-addresses)
+
+mno-base-addresses
+UrlSuffix(gcc/MMIX-Options.html#index-mno-base-addresses)
+
+msingle-exit
+UrlSuffix(gcc/MMIX-Options.html#index-msingle-exit)
+
+mno-single-exit
+UrlSuffix(gcc/MMIX-Options.html#index-mno-single-exit)
+
diff --git a/gcc/config/mn10300/mn10300.opt.urls b/gcc/config/mn10300/mn10300.opt.urls
new file mode 100644
index 000000000000..396ca4aa2e60
--- /dev/null
+++ b/gcc/config/mn10300/mn10300.opt.urls
@@ -0,0 +1,32 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mn10300/mn10300.opt and generated HTML
+
+mam33
+UrlSuffix(gcc/MN10300-Options.html#index-mam33)
+
+mam33-2
+UrlSuffix(gcc/MN10300-Options.html#index-mam33-2)
+
+mam34
+UrlSuffix(gcc/MN10300-Options.html#index-mam34)
+
+mtune=
+UrlSuffix(gcc/MN10300-Options.html#index-mtune-11)
+
+mmult-bug
+UrlSuffix(gcc/MN10300-Options.html#index-mmult-bug)
+
+mno-crt0
+UrlSuffix(gcc/MN10300-Options.html#index-mno-crt0)
+
+mrelax
+UrlSuffix(gcc/MN10300-Options.html#index-mrelax-2)
+
+mreturn-pointer-on-d0
+UrlSuffix(gcc/MN10300-Options.html#index-mreturn-pointer-on-d0)
+
+mliw
+UrlSuffix(gcc/MN10300-Options.html#index-mliw)
+
+msetlb
+UrlSuffix(gcc/MN10300-Options.html#index-msetlb)
+
diff --git a/gcc/config/moxie/moxie.opt.urls b/gcc/config/moxie/moxie.opt.urls
new file mode 100644
index 000000000000..a1b8b8a7a767
--- /dev/null
+++ b/gcc/config/moxie/moxie.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/moxie/moxie.opt and generated HTML
+
+meb
+UrlSuffix(gcc/Moxie-Options.html#index-meb)
+
+mel
+UrlSuffix(gcc/Moxie-Options.html#index-mel)
+
+mmul.x
+UrlSuffix(gcc/Moxie-Options.html#index-mmul_002ex)
+
+mno-crt0
+UrlSuffix(gcc/Moxie-Options.html#index-mno-crt0-1)
+
diff --git a/gcc/config/msp430/msp430.opt.urls b/gcc/config/msp430/msp430.opt.urls
new file mode 100644
index 000000000000..420c1c50f13e
--- /dev/null
+++ b/gcc/config/msp430/msp430.opt.urls
@@ -0,0 +1,53 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/msp430/msp430.opt and generated HTML
+
+msim
+UrlSuffix(gcc/MSP430-Options.html#index-msim-5)
+
+mtiny-printf
+UrlSuffix(gcc/MSP430-Options.html#index-mtiny-printf)
+
+masm-hex
+UrlSuffix(gcc/MSP430-Options.html#index-masm-hex)
+
+mmcu=
+UrlSuffix(gcc/MSP430-Options.html#index-mmcu_003d)
+
+mwarn-mcu
+UrlSuffix(gcc/MSP430-Options.html#index-mwarn-mcu)
+
+mwarn-devices-csv
+UrlSuffix(gcc/MSP430-Options.html#index-mwarn-devices-csv)
+
+mcpu=
+UrlSuffix(gcc/MSP430-Options.html#index-mcpu_003d-4)
+
+mlarge
+UrlSuffix(gcc/MSP430-Options.html#index-mlarge)
+
+msmall
+UrlSuffix(gcc/MSP430-Options.html#index-msmall)
+
+mrelax
+UrlSuffix(gcc/MSP430-Options.html#index-mrelax-3)
+
+minrt
+UrlSuffix(gcc/MSP430-Options.html#index-minrt)
+
+mhwmult=
+UrlSuffix(gcc/MSP430-Options.html#index-mhwmult_003d)
+
+mcode-region=
+UrlSuffix(gcc/MSP430-Options.html#index-mcode-region)
+
+mdata-region=
+UrlSuffix(gcc/MSP430-Options.html#index-mdata-region)
+
+msilicon-errata=
+UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata)
+
+msilicon-errata-warn=
+UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata-warn)
+
+mmax-inline-shift=
+UrlSuffix(gcc/MSP430-Options.html#index-mmax-inline-shift_003d)
+
diff --git a/gcc/config/nds32/nds32-elf.opt.urls b/gcc/config/nds32/nds32-elf.opt.urls
new file mode 100644
index 000000000000..5399afba7d3d
--- /dev/null
+++ b/gcc/config/nds32/nds32-elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-elf.opt and generated HTML
+
+mcmodel=
+UrlSuffix(gcc/NDS32-Options.html#index-mcmodel)
+
diff --git a/gcc/config/nds32/nds32-linux.opt.urls b/gcc/config/nds32/nds32-linux.opt.urls
new file mode 100644
index 000000000000..27d39f04ad95
--- /dev/null
+++ b/gcc/config/nds32/nds32-linux.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-linux.opt and generated HTML
+
+mcmodel=
+UrlSuffix(gcc/NDS32-Options.html#index-mcmodel)
+
diff --git a/gcc/config/nds32/nds32.opt.urls b/gcc/config/nds32/nds32.opt.urls
new file mode 100644
index 000000000000..e34512d69ba9
--- /dev/null
+++ b/gcc/config/nds32/nds32.opt.urls
@@ -0,0 +1,57 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32.opt and generated HTML
+
+; skipping UrlSuffix for 'EB' due to finding no URLs
+
+; skipping UrlSuffix for 'EL' due to finding no URLs
+
+; skipping UrlSuffix for 'mabi=' due to finding no URLs
+
+mreduced-regs
+UrlSuffix(gcc/NDS32-Options.html#index-mreduced-regs)
+
+mfull-regs
+UrlSuffix(gcc/NDS32-Options.html#index-mfull-regs)
+
+mbig-endian
+UrlSuffix(gcc/NDS32-Options.html#index-mbig-endian-9)
+
+mlittle-endian
+UrlSuffix(gcc/NDS32-Options.html#index-mlittle-endian-9)
+
+mcmov
+UrlSuffix(gcc/NDS32-Options.html#index-mcmov)
+
+mext-perf
+UrlSuffix(gcc/NDS32-Options.html#index-mext-perf)
+
+mext-perf2
+UrlSuffix(gcc/NDS32-Options.html#index-mext-perf2)
+
+mext-string
+UrlSuffix(gcc/NDS32-Options.html#index-mext-string)
+
+mv3push
+UrlSuffix(gcc/NDS32-Options.html#index-mv3push)
+
+m16-bit
+UrlSuffix(gcc/NDS32-Options.html#index-m16-bit-1)
+
+misr-vector-size=
+UrlSuffix(gcc/NDS32-Options.html#index-misr-vector-size)
+
+mcache-block-size=
+UrlSuffix(gcc/NDS32-Options.html#index-mcache-block-size)
+
+march=
+UrlSuffix(gcc/NDS32-Options.html#index-march-10)
+
+; skipping UrlSuffix for 'mcpu=' due to finding no URLs
+
+mctor-dtor
+UrlSuffix(gcc/NDS32-Options.html#index-mctor-dtor)
+
+mrelax
+UrlSuffix(gcc/NDS32-Options.html#index-mrelax-4)
+
+; skipping UrlSuffix for 'munaligned-access' due to finding no URLs
+
diff --git a/gcc/config/netbsd-elf.opt.urls b/gcc/config/netbsd-elf.opt.urls
new file mode 100644
index 000000000000..c0e791c3a35f
--- /dev/null
+++ b/gcc/config/netbsd-elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd-elf.opt and generated HTML
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/netbsd.opt.urls b/gcc/config/netbsd.opt.urls
new file mode 100644
index 000000000000..513bf9b7cba6
--- /dev/null
+++ b/gcc/config/netbsd.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/nios2/elf.opt.urls b/gcc/config/nios2/elf.opt.urls
new file mode 100644
index 000000000000..1367c6ba50cf
--- /dev/null
+++ b/gcc/config/nios2/elf.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/elf.opt and generated HTML
+
+msmallc
+UrlSuffix(gcc/Nios-II-Options.html#index-msmallc)
+
+msys-lib=
+UrlSuffix(gcc/Nios-II-Options.html#index-msys-lib)
+
+msys-crt0=
+UrlSuffix(gcc/Nios-II-Options.html#index-msys-crt0)
+
+mhal
+UrlSuffix(gcc/Nios-II-Options.html#index-mhal)
+
diff --git a/gcc/config/nios2/nios2.opt.urls b/gcc/config/nios2/nios2.opt.urls
new file mode 100644
index 000000000000..a38ea285a6e2
--- /dev/null
+++ b/gcc/config/nios2/nios2.opt.urls
@@ -0,0 +1,50 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/nios2.opt and generated HTML
+
+mhw-div
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-div)
+
+mhw-mul
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mul)
+
+mhw-mulx
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mulx)
+
+mfast-sw-div
+UrlSuffix(gcc/Nios-II-Options.html#index-mfast-sw-div)
+
+mbypass-cache
+UrlSuffix(gcc/Nios-II-Options.html#index-mbypass-cache)
+
+mno-cache-volatile
+UrlSuffix(gcc/Nios-II-Options.html#index-mno-cache-volatile)
+
+mcache-volatile
+UrlSuffix(gcc/Nios-II-Options.html#index-mcache-volatile)
+
+mgpopt=
+UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1)
+
+mgpopt
+UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1)
+
+mno-gpopt
+UrlSuffix(gcc/Nios-II-Options.html#index-mno-gpopt-1)
+
+meb
+UrlSuffix(gcc/Nios-II-Options.html#index-meb-1)
+
+mel
+UrlSuffix(gcc/Nios-II-Options.html#index-mel-1)
+
+mcustom-fpu-cfg=
+UrlSuffix(gcc/Nios-II-Options.html#index-mcustom-fpu-cfg)
+
+march=
+UrlSuffix(gcc/Nios-II-Options.html#index-march-11)
+
+mgprel-sec=
+UrlSuffix(gcc/Nios-II-Options.html#index-mgprel-sec)
+
+mr0rel-sec=
+UrlSuffix(gcc/Nios-II-Options.html#index-mr0rel-sec)
+
diff --git a/gcc/config/nvptx/nvptx-gen.opt.urls b/gcc/config/nvptx/nvptx-gen.opt.urls
new file mode 100644
index 000000000000..7ea132489aad
--- /dev/null
+++ b/gcc/config/nvptx/nvptx-gen.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx-gen.opt and generated HTML
+
diff --git a/gcc/config/nvptx/nvptx.opt.urls b/gcc/config/nvptx/nvptx.opt.urls
new file mode 100644
index 000000000000..5c8942ca7522
--- /dev/null
+++ b/gcc/config/nvptx/nvptx.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx.opt and generated HTML
+
+m64
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-m64)
+
+mmainkernel
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mmainkernel)
+
+moptimize
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-moptimize)
+
+msoft-stack
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-msoft-stack)
+
+muniform-simt
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-muniform-simt)
+
+mgomp
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mgomp)
+
+misa=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-misa)
+
+march=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-march-12)
+
+mptx=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mptx)
+
diff --git a/gcc/config/openbsd.opt.urls b/gcc/config/openbsd.opt.urls
new file mode 100644
index 000000000000..d7ea1ae26e43
--- /dev/null
+++ b/gcc/config/openbsd.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/openbsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/or1k/elf.opt.urls b/gcc/config/or1k/elf.opt.urls
new file mode 100644
index 000000000000..ea3d5d76ac7d
--- /dev/null
+++ b/gcc/config/or1k/elf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/elf.opt and generated HTML
+
+mboard=
+UrlSuffix(gcc/OpenRISC-Options.html#index-mboard)
+
+mnewlib
+UrlSuffix(gcc/OpenRISC-Options.html#index-mnewlib)
+
diff --git a/gcc/config/or1k/or1k.opt.urls b/gcc/config/or1k/or1k.opt.urls
new file mode 100644
index 000000000000..2016ea622cfc
--- /dev/null
+++ b/gcc/config/or1k/or1k.opt.urls
@@ -0,0 +1,46 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/or1k.opt and generated HTML
+
+mhard-div
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-div)
+
+msoft-div
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-div)
+
+mhard-mul
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-mul)
+
+msoft-mul
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-mul)
+
+msoft-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-float-9)
+
+mhard-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-float-5)
+
+mdouble-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-mdouble-float-3)
+
+munordered-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-munordered-float)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mcmov
+UrlSuffix(gcc/OpenRISC-Options.html#index-mcmov-1)
+
+mror
+UrlSuffix(gcc/OpenRISC-Options.html#index-mror)
+
+mrori
+UrlSuffix(gcc/OpenRISC-Options.html#index-mrori)
+
+msext
+UrlSuffix(gcc/OpenRISC-Options.html#index-msext)
+
+msfimm
+UrlSuffix(gcc/OpenRISC-Options.html#index-msfimm)
+
+mshftimm
+UrlSuffix(gcc/OpenRISC-Options.html#index-mshftimm)
+
diff --git a/gcc/config/pa/pa-hpux.opt.urls b/gcc/config/pa/pa-hpux.opt.urls
new file mode 100644
index 000000000000..6a52dd08e482
--- /dev/null
+++ b/gcc/config/pa/pa-hpux.opt.urls
@@ -0,0 +1,11 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux.opt and generated HTML
+
+msio
+UrlSuffix(gcc/HPPA-Options.html#index-msio)
+
+nolibdld
+UrlSuffix(gcc/HPPA-Options.html#index-nolibdld)
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/pa/pa-hpux1010.opt.urls b/gcc/config/pa/pa-hpux1010.opt.urls
new file mode 100644
index 000000000000..9b96cafbf065
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1010.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1010.opt and generated HTML
+
diff --git a/gcc/config/pa/pa-hpux1111.opt.urls b/gcc/config/pa/pa-hpux1111.opt.urls
new file mode 100644
index 000000000000..706e63c534bd
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1111.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1111.opt and generated HTML
+
diff --git a/gcc/config/pa/pa-hpux1131.opt.urls b/gcc/config/pa/pa-hpux1131.opt.urls
new file mode 100644
index 000000000000..497c49d186f3
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1131.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1131.opt and generated HTML
+
diff --git a/gcc/config/pa/pa.opt.urls b/gcc/config/pa/pa.opt.urls
new file mode 100644
index 000000000000..5b8bcebdd0da
--- /dev/null
+++ b/gcc/config/pa/pa.opt.urls
@@ -0,0 +1,71 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa.opt and generated HTML
+
+matomic-libcalls
+UrlSuffix(gcc/HPPA-Options.html#index-matomic-libcalls)
+
+mbig-switch
+UrlSuffix(gcc/HPPA-Options.html#index-mbig-switch)
+
+mcaller-copies
+UrlSuffix(gcc/HPPA-Options.html#index-mcaller-copies)
+
+mcoherent-ldcw
+UrlSuffix(gcc/HPPA-Options.html#index-mcoherent-ldcw)
+
+mdisable-fpregs
+UrlSuffix(gcc/HPPA-Options.html#index-mdisable-fpregs)
+
+mdisable-indexing
+UrlSuffix(gcc/HPPA-Options.html#index-mdisable-indexing)
+
+mfast-indirect-calls
+UrlSuffix(gcc/HPPA-Options.html#index-mfast-indirect-calls)
+
+mfixed-range=
+UrlSuffix(gcc/HPPA-Options.html#index-mfixed-range)
+
+mgas
+UrlSuffix(gcc/HPPA-Options.html#index-mgas)
+
+mjump-in-delay
+UrlSuffix(gcc/HPPA-Options.html#index-mjump-in-delay)
+
+mlinker-opt
+UrlSuffix(gcc/HPPA-Options.html#index-mlinker-opt)
+
+mlong-calls
+UrlSuffix(gcc/HPPA-Options.html#index-mlong-calls-5)
+
+mlong-load-store
+UrlSuffix(gcc/HPPA-Options.html#index-mlong-load-store)
+
+mno-space-regs
+UrlSuffix(gcc/HPPA-Options.html#index-mno-space-regs)
+
+mordered
+UrlSuffix(gcc/HPPA-Options.html#index-mordered)
+
+mpa-risc-1-0
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-0)
+
+mpa-risc-1-1
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-1)
+
+mpa-risc-2-0
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-2-0)
+
+mportable-runtime
+UrlSuffix(gcc/HPPA-Options.html#index-mportable-runtime)
+
+mschedule=
+UrlSuffix(gcc/HPPA-Options.html#index-mschedule)
+
+msoft-float
+UrlSuffix(gcc/HPPA-Options.html#index-msoft-float-4)
+
+msoft-mult
+UrlSuffix(gcc/HPPA-Options.html#index-msoft-mult)
+
+mspace-regs
+UrlSuffix(gcc/HPPA-Options.html#index-mspace-regs)
+
diff --git a/gcc/config/pa/pa64-hpux.opt.urls b/gcc/config/pa/pa64-hpux.opt.urls
new file mode 100644
index 000000000000..9ebf02759520
--- /dev/null
+++ b/gcc/config/pa/pa64-hpux.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa64-hpux.opt and generated HTML
+
+mgnu-ld
+UrlSuffix(gcc/HPPA-Options.html#index-mgnu-ld)
+
+mhp-ld
+UrlSuffix(gcc/HPPA-Options.html#index-mhp-ld)
+
diff --git a/gcc/config/pdp11/pdp11.opt.urls b/gcc/config/pdp11/pdp11.opt.urls
new file mode 100644
index 000000000000..f0544ca84f69
--- /dev/null
+++ b/gcc/config/pdp11/pdp11.opt.urls
@@ -0,0 +1,41 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pdp11/pdp11.opt and generated HTML
+
+m10
+UrlSuffix(gcc/PDP-11-Options.html#index-m10)
+
+m40
+UrlSuffix(gcc/PDP-11-Options.html#index-m40)
+
+m45
+UrlSuffix(gcc/PDP-11-Options.html#index-m45)
+
+mac0
+UrlSuffix(gcc/PDP-11-Options.html#index-mac0)
+
+mdec-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-mdec-asm)
+
+mgnu-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-mgnu-asm)
+
+mfpu
+UrlSuffix(gcc/PDP-11-Options.html#index-mfpu-3)
+
+mint16
+UrlSuffix(gcc/PDP-11-Options.html#index-mint16)
+
+mint32
+UrlSuffix(gcc/PDP-11-Options.html#index-mint32-1)
+
+msoft-float
+UrlSuffix(gcc/PDP-11-Options.html#index-msoft-float-10)
+
+msplit
+UrlSuffix(gcc/PDP-11-Options.html#index-msplit)
+
+munix-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-munix-asm)
+
+mlra
+UrlSuffix(gcc/PDP-11-Options.html#index-mlra-2)
+
diff --git a/gcc/config/pru/pru.opt.urls b/gcc/config/pru/pru.opt.urls
new file mode 100644
index 000000000000..373b02d5aedc
--- /dev/null
+++ b/gcc/config/pru/pru.opt.urls
@@ -0,0 +1,17 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pru/pru.opt and generated HTML
+
+minrt
+UrlSuffix(gcc/PRU-Options.html#index-minrt-1)
+
+mmcu=
+UrlSuffix(gcc/PRU-Options.html#index-mmcu-2)
+
+mno-relax
+UrlSuffix(gcc/PRU-Options.html#index-mno-relax)
+
+mloop
+UrlSuffix(gcc/PRU-Options.html#index-mloop)
+
+mabi=
+UrlSuffix(gcc/PRU-Options.html#index-mabi-3)
+
diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls
new file mode 100644
index 000000000000..668384910109
--- /dev/null
+++ b/gcc/config/riscv/riscv.opt.urls
@@ -0,0 +1,88 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/riscv/riscv.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/RISC-V-Options.html#index-mbig-endian-10)
+
+mlittle-endian
+UrlSuffix(gcc/RISC-V-Options.html#index-mlittle-endian-10)
+
+mbranch-cost=
+UrlSuffix(gcc/RISC-V-Options.html#index-mbranch-cost-4)
+
+; skipping UrlSuffix for 'mplt' due to finding no URLs
+
+mabi=
+UrlSuffix(gcc/RISC-V-Options.html#index-mabi-4)
+
+mpreferred-stack-boundary=
+UrlSuffix(gcc/RISC-V-Options.html#index-mpreferred-stack-boundary)
+
+mfdiv
+UrlSuffix(gcc/RISC-V-Options.html#index-mfdiv)
+
+mdiv
+UrlSuffix(gcc/RISC-V-Options.html#index-mdiv-3)
+
+march=
+UrlSuffix(gcc/RISC-V-Options.html#index-march-14)
+
+mtune=
+UrlSuffix(gcc/RISC-V-Options.html#index-mtune-12)
+
+mcpu=
+UrlSuffix(gcc/RISC-V-Options.html#index-mcpu-8)
+
+msmall-data-limit=
+UrlSuffix(gcc/RISC-V-Options.html#index-msmall-data-limit-1)
+
+msave-restore
+UrlSuffix(gcc/RISC-V-Options.html#index-msave-restore)
+
+mshorten-memrefs
+UrlSuffix(gcc/RISC-V-Options.html#index-mshorten-memrefs)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mstrict-align
+UrlSuffix(gcc/RISC-V-Options.html#index-mstrict-align-3)
+
+; skipping UrlSuffix for 'mexplicit-relocs' due to finding no URLs
+
+mrelax
+UrlSuffix(gcc/RISC-V-Options.html#index-mrelax-5)
+
+mcsr-check
+UrlSuffix(gcc/RISC-V-Options.html#index-mcsr-check)
+
+; skipping UrlSuffix for 'momit-leaf-frame-pointer' due to finding no URLs
+
+mriscv-attribute
+UrlSuffix(gcc/RISC-V-Options.html#index-mriscv-attribute)
+
+malign-data=
+UrlSuffix(gcc/RISC-V-Options.html#index-malign-data)
+
+mstack-protector-guard=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-2)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-reg-1)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-offset-2)
+
+misa-spec=
+UrlSuffix(gcc/RISC-V-Options.html#index-misa-spec)
+
+minline-atomics
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-atomics)
+
+minline-strcmp
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strcmp)
+
+minline-strncmp
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strncmp)
+
+minline-strlen
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strlen)
+
diff --git a/gcc/config/rl78/rl78.opt.urls b/gcc/config/rl78/rl78.opt.urls
new file mode 100644
index 000000000000..96eff5f72041
--- /dev/null
+++ b/gcc/config/rl78/rl78.opt.urls
@@ -0,0 +1,31 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rl78/rl78.opt and generated HTML
+
+msim
+UrlSuffix(gcc/RL78-Options.html#index-msim-6)
+
+mmul=
+UrlSuffix(gcc/RL78-Options.html#index-mmul)
+
+mallregs
+UrlSuffix(gcc/RL78-Options.html#index-mallregs)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/RL78-Options.html#index-mcpu-9)
+
+mg10
+UrlSuffix(gcc/RL78-Options.html#index-mg10)
+
+mg13
+UrlSuffix(gcc/RL78-Options.html#index-mg13)
+
+mg14
+UrlSuffix(gcc/RL78-Options.html#index-mg14)
+
+mrl78
+UrlSuffix(gcc/RL78-Options.html#index-mrl78)
+
+msave-mduc-in-interrupts
+UrlSuffix(gcc/RL78-Options.html#index-msave-mduc-in-interrupts)
+
diff --git a/gcc/config/rpath.opt.urls b/gcc/config/rpath.opt.urls
new file mode 100644
index 000000000000..249dfdfb762d
--- /dev/null
+++ b/gcc/config/rpath.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rpath.opt and generated HTML
+
diff --git a/gcc/config/rs6000/476.opt.urls b/gcc/config/rs6000/476.opt.urls
new file mode 100644
index 000000000000..cecf72200a51
--- /dev/null
+++ b/gcc/config/rs6000/476.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/476.opt and generated HTML
+
diff --git a/gcc/config/rs6000/aix64.opt.urls b/gcc/config/rs6000/aix64.opt.urls
new file mode 100644
index 000000000000..89600bb27956
--- /dev/null
+++ b/gcc/config/rs6000/aix64.opt.urls
@@ -0,0 +1,23 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/aix64.opt and generated HTML
+
+maix64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix64)
+
+maix32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix32)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mpe
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpe)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
diff --git a/gcc/config/rs6000/darwin.opt.urls b/gcc/config/rs6000/darwin.opt.urls
new file mode 100644
index 000000000000..3b7fa1a80f80
--- /dev/null
+++ b/gcc/config/rs6000/darwin.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/darwin.opt and generated HTML
+
+ffix-and-continue
+UrlSuffix(gcc/Darwin-Options.html#index-ffix-and-continue)
+
+findirect-data
+UrlSuffix(gcc/Darwin-Options.html#index-findirect-data)
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
diff --git a/gcc/config/rs6000/linux64.opt.urls b/gcc/config/rs6000/linux64.opt.urls
new file mode 100644
index 000000000000..eb81aa17fd2b
--- /dev/null
+++ b/gcc/config/rs6000/linux64.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/linux64.opt and generated HTML
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
diff --git a/gcc/config/rs6000/rs6000-tables.opt.urls b/gcc/config/rs6000/rs6000-tables.opt.urls
new file mode 100644
index 000000000000..a44ce0d7aaa3
--- /dev/null
+++ b/gcc/config/rs6000/rs6000-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000-tables.opt and generated HTML
+
diff --git a/gcc/config/rs6000/rs6000.opt.urls b/gcc/config/rs6000/rs6000.opt.urls
new file mode 100644
index 000000000000..fdc33fc759bb
--- /dev/null
+++ b/gcc/config/rs6000/rs6000.opt.urls
@@ -0,0 +1,214 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000.opt and generated HTML
+
+mpowerpc64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc64)
+
+mpowerpc-gpopt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gpopt)
+
+mpowerpc-gfxopt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gfxopt)
+
+mmfcrf
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmfcrf)
+
+mpopcntb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntb)
+
+mfprnd
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfprnd)
+
+mcmpb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcmpb)
+
+maltivec
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maltivec)
+
+mhard-dfp
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-dfp)
+
+mmulhw
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmulhw)
+
+mdlmzb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mdlmzb)
+
+mmultiple
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmultiple)
+
+msoft-float
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msoft-float-11)
+
+mhard-float
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-float-6)
+
+mpopcntd
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntd)
+
+mfriz
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfriz)
+
+mveclibabi=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mveclibabi)
+
+mvsx
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvsx)
+
+mno-update
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-update)
+
+mupdate
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mupdate)
+
+msingle-pic-base
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msingle-pic-base-1)
+
+mavoid-indexed-addresses
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mavoid-indexed-addresses)
+
+; skipping UrlSuffix for 'msched-prolog' due to finding no URLs
+
+maix-struct-return
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix-struct-return)
+
+msvr4-struct-return
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msvr4-struct-return)
+
+mxl-compat
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mxl-compat)
+
+mrecip
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip)
+
+mrecip=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip)
+
+mrecip-precision
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-precision)
+
+mno-fp-in-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-fp-in-toc)
+
+mno-sum-in-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-sum-in-toc)
+
+mminimal-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mminimal-toc)
+
+mfull-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfull-toc)
+
+mvrsave
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvrsave)
+
+mblock-move-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-move-inline-limit)
+
+mblock-compare-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-limit)
+
+mblock-compare-inline-loop-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-loop-limit)
+
+mstring-compare-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstring-compare-inline-limit)
+
+misel
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-misel)
+
+; skipping UrlSuffix for 'mdebug=' due to finding no URLs
+
+mabi=elfv1
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv1)
+
+mabi=elfv2
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv2)
+
+mabi=ieeelongdouble
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dieeelongdouble)
+
+mabi=ibmlongdouble
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dibmlongdouble)
+
+mcpu=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcpu-10)
+
+mtune=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtune-13)
+
+mtraceback=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtraceback)
+
+mlongcall
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlongcall)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+msched-costly-dep=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msched-costly-dep)
+
+minsert-sched-nops=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-minsert-sched-nops)
+
+mprioritize-restricted-insns=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprioritize-restricted-insns)
+
+mpointers-to-nested-functions
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpointers-to-nested-functions)
+
+msave-toc-indirect
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msave-toc-indirect)
+
+mpower8-fusion
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-fusion)
+
+mpower8-vector
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-vector)
+
+mcrypto
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcrypto)
+
+mhtm
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhtm)
+
+mquad-memory
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory)
+
+mquad-memory-atomic
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory-atomic)
+
+mcompat-align-parm
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcompat-align-parm)
+
+; skipping UrlSuffix for 'munroll-only-small-loops' due to finding no URLs
+
+mfloat128
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128)
+
+mfloat128-hardware
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128-hardware)
+
+mstack-protector-guard=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-3)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-reg-2)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-offset-3)
+
+mprefixed
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprefixed)
+
+mpcrel
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpcrel-1)
+
+mmma
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmma)
+
+mrop-protect
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrop-protect)
+
+mprivileged
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprivileged)
+
diff --git a/gcc/config/rs6000/sysv4.opt.urls b/gcc/config/rs6000/sysv4.opt.urls
new file mode 100644
index 000000000000..f8d58d6602cd
--- /dev/null
+++ b/gcc/config/rs6000/sysv4.opt.urls
@@ -0,0 +1,87 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/sysv4.opt and generated HTML
+
+msdata=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2)
+
+mreadonly-in-sdata
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mreadonly-in-sdata)
+
+; skipping UrlSuffix for 'mtls-size=' due to finding no URLs
+
+mbit-align
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbit-align)
+
+mstrict-align
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstrict-align-4)
+
+mrelocatable
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable)
+
+mrelocatable-lib
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable-lib)
+
+mlittle-endian
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle-endian-11)
+
+mlittle
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle)
+
+mbig-endian
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig-endian-11)
+
+mbig
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig)
+
+mno-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-toc)
+
+mtoc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtoc)
+
+mprototype
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprototype)
+
+meabi
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-meabi)
+
+mregnames
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mregnames)
+
+msdata
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2)
+
+msim
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msim-7)
+
+mads
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mads)
+
+myellowknife
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-myellowknife)
+
+mmvme
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmvme)
+
+memb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-memb)
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
+; skipping UrlSuffix for 'mnewlib' due to finding no URLs
+
+msecure-plt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msecure-plt)
+
+mbss-plt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbss-plt)
+
+mpltseq
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpltseq)
+
+mgnu-attribute
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mgnu-attribute)
+
diff --git a/gcc/config/rtems.opt.urls b/gcc/config/rtems.opt.urls
new file mode 100644
index 000000000000..211a70d46ef3
--- /dev/null
+++ b/gcc/config/rtems.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rtems.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/rx/elf.opt.urls b/gcc/config/rx/elf.opt.urls
new file mode 100644
index 000000000000..c43973a9d490
--- /dev/null
+++ b/gcc/config/rx/elf.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/elf.opt and generated HTML
+
+msim
+UrlSuffix(gcc/RX-Options.html#index-msim-8)
+
+mas100-syntax
+UrlSuffix(gcc/RX-Options.html#index-mas100-syntax)
+
+mint-register=
+UrlSuffix(gcc/RX-Options.html#index-mint-register)
+
+msave-acc-in-interrupts
+UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts)
+
diff --git a/gcc/config/rx/rx.opt.urls b/gcc/config/rx/rx.opt.urls
new file mode 100644
index 000000000000..4cb037313b49
--- /dev/null
+++ b/gcc/config/rx/rx.opt.urls
@@ -0,0 +1,54 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/rx.opt and generated HTML
+
+m64bit-doubles
+UrlSuffix(gcc/RX-Options.html#index-m64bit-doubles-1)
+
+m32bit-doubles
+UrlSuffix(gcc/RX-Options.html#index-m32bit-doubles-1)
+
+nofpu
+UrlSuffix(gcc/RX-Options.html#index-nofpu)
+
+fpu
+UrlSuffix(gcc/RX-Options.html#index-fpu)
+
+mcpu=
+UrlSuffix(gcc/RX-Options.html#index-mcpu-11)
+
+mbig-endian-data
+UrlSuffix(gcc/RX-Options.html#index-mbig-endian-data)
+
+mlittle-endian-data
+UrlSuffix(gcc/RX-Options.html#index-mlittle-endian-data)
+
+msmall-data-limit=
+UrlSuffix(gcc/RX-Options.html#index-msmall-data-limit-2)
+
+mrelax
+UrlSuffix(gcc/RX-Options.html#index-mrelax-6)
+
+mmax-constant-size=
+UrlSuffix(gcc/RX-Options.html#index-mmax-constant-size)
+
+mint-register=
+UrlSuffix(gcc/RX-Options.html#index-mint-register)
+
+msave-acc-in-interrupts
+UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts)
+
+mpid
+UrlSuffix(gcc/RX-Options.html#index-mpid)
+
+mwarn-multiple-fast-interrupts
+UrlSuffix(gcc/RX-Options.html#index-mwarn-multiple-fast-interrupts)
+
+; skipping UrlSuffix for 'mgcc-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mallow-string-insns
+UrlSuffix(gcc/RX-Options.html#index-mallow-string-insns)
+
+mjsr
+UrlSuffix(gcc/RX-Options.html#index-mjsr)
+
diff --git a/gcc/config/s390/s390.opt.urls b/gcc/config/s390/s390.opt.urls
new file mode 100644
index 000000000000..ab1e761efa88
--- /dev/null
+++ b/gcc/config/s390/s390.opt.urls
@@ -0,0 +1,92 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/s390.opt and generated HTML
+
+m31
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m31)
+
+m64
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m64-2)
+
+march=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-march-15)
+
+mbackchain
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mbackchain)
+
+mdebug
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mdebug-1)
+
+mesa
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mesa)
+
+mhard-dfp
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-dfp-1)
+
+mhard-float
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-float-7)
+
+mhotpatch=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhotpatch)
+
+mlong-double-128
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-128)
+
+mlong-double-64
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-64)
+
+mhtm
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhtm-1)
+
+mvx
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mvx)
+
+mpacked-stack
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mpacked-stack)
+
+msmall-exec
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msmall-exec)
+
+msoft-float
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msoft-float-12)
+
+mstack-guard=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-guard)
+
+mstack-size=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-size-2)
+
+mtune=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtune-14)
+
+mmvcle
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mmvcle)
+
+mzvector
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzvector)
+
+mwarn-dynamicstack
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-dynamicstack)
+
+mwarn-framesize=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-framesize)
+
+mzarch
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzarch)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+; skipping UrlSuffix for 'mpic-data-is-text-relative' due to finding no URLs
+
+; skipping UrlSuffix for 'mindirect-branch=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfunction-return=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfentry' due to finding no URLs
+
+; skipping UrlSuffix for 'mrecord-mcount' due to finding no URLs
+
+; skipping UrlSuffix for 'mnop-mcount' due to finding no URLs
+
+; skipping UrlSuffix for 'munroll-only-small-loops' due to finding no URLs
+
diff --git a/gcc/config/s390/tpf.opt.urls b/gcc/config/s390/tpf.opt.urls
new file mode 100644
index 000000000000..8322d7eaa001
--- /dev/null
+++ b/gcc/config/s390/tpf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/tpf.opt and generated HTML
+
+mtpf-trace
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace)
+
+mtpf-trace-skip
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace-skip)
+
diff --git a/gcc/config/sh/sh.opt.urls b/gcc/config/sh/sh.opt.urls
new file mode 100644
index 000000000000..2c3bc0699ec5
--- /dev/null
+++ b/gcc/config/sh/sh.opt.urls
@@ -0,0 +1,174 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/sh.opt and generated HTML
+
+m1
+UrlSuffix(gcc/SH-Options.html#index-m1)
+
+m2
+UrlSuffix(gcc/SH-Options.html#index-m2)
+
+m2a
+UrlSuffix(gcc/SH-Options.html#index-m2a)
+
+m2a-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m2a-nofpu)
+
+m2a-single
+UrlSuffix(gcc/SH-Options.html#index-m2a-single)
+
+m2a-single-only
+UrlSuffix(gcc/SH-Options.html#index-m2a-single-only)
+
+m3
+UrlSuffix(gcc/SH-Options.html#index-m3)
+
+m3e
+UrlSuffix(gcc/SH-Options.html#index-m3e)
+
+m4
+UrlSuffix(gcc/SH-Options.html#index-m4)
+
+m4-100
+UrlSuffix(gcc/SH-Options.html#index-m4-100)
+
+m4-200
+UrlSuffix(gcc/SH-Options.html#index-m4-200)
+
+m4-300
+UrlSuffix(gcc/SH-Options.html#index-m4-300)
+
+m4-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-nofpu)
+
+m4-100-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-100-nofpu)
+
+m4-200-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-200-nofpu)
+
+m4-300-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-300-nofpu)
+
+m4-340
+UrlSuffix(gcc/SH-Options.html#index-m4-340)
+
+m4-500
+UrlSuffix(gcc/SH-Options.html#index-m4-500)
+
+m4-single
+UrlSuffix(gcc/SH-Options.html#index-m4-single)
+
+m4-100-single
+UrlSuffix(gcc/SH-Options.html#index-m4-100-single)
+
+m4-200-single
+UrlSuffix(gcc/SH-Options.html#index-m4-200-single)
+
+m4-300-single
+UrlSuffix(gcc/SH-Options.html#index-m4-300-single)
+
+m4-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-single-only)
+
+m4-100-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-100-single-only)
+
+m4-200-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-200-single-only)
+
+m4-300-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-300-single-only)
+
+m4a
+UrlSuffix(gcc/SH-Options.html#index-m4a)
+
+m4a-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4a-nofpu)
+
+m4a-single
+UrlSuffix(gcc/SH-Options.html#index-m4a-single)
+
+m4a-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4a-single-only)
+
+m4al
+UrlSuffix(gcc/SH-Options.html#index-m4al)
+
+maccumulate-outgoing-args
+UrlSuffix(gcc/SH-Options.html#index-maccumulate-outgoing-args)
+
+mb
+UrlSuffix(gcc/SH-Options.html#index-mb)
+
+mbigtable
+UrlSuffix(gcc/SH-Options.html#index-mbigtable)
+
+mbitops
+UrlSuffix(gcc/SH-Options.html#index-mbitops)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mzdcbranch
+UrlSuffix(gcc/SH-Options.html#index-mzdcbranch)
+
+mcbranch-force-delay-slot
+UrlSuffix(gcc/SH-Options.html#index-mcbranch-force-delay-slot)
+
+mdalign
+UrlSuffix(gcc/SH-Options.html#index-mdalign)
+
+; skipping UrlSuffix for 'mdiv=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfdpic' due to finding no URLs
+
+mfmovd
+UrlSuffix(gcc/SH-Options.html#index-mfmovd)
+
+mfixed-range=
+UrlSuffix(gcc/SH-Options.html#index-mfixed-range-2)
+
+mieee
+UrlSuffix(gcc/SH-Options.html#index-mieee-1)
+
+minline-ic_invalidate
+UrlSuffix(gcc/SH-Options.html#index-minline-ic_005finvalidate)
+
+misize
+UrlSuffix(gcc/SH-Options.html#index-misize-1)
+
+ml
+UrlSuffix(gcc/SH-Options.html#index-ml)
+
+mnomacsave
+UrlSuffix(gcc/SH-Options.html#index-mnomacsave)
+
+mpadstruct
+UrlSuffix(gcc/SH-Options.html#index-mpadstruct)
+
+mprefergot
+UrlSuffix(gcc/SH-Options.html#index-mprefergot)
+
+mrelax
+UrlSuffix(gcc/SH-Options.html#index-mrelax-7)
+
+mrenesas
+UrlSuffix(gcc/SH-Options.html#index-mrenesas)
+
+mtas
+UrlSuffix(gcc/SH-Options.html#index-mtas)
+
+; skipping UrlSuffix for 'multcost=' due to finding no URLs
+
+musermode
+UrlSuffix(gcc/SH-Options.html#index-musermode)
+
+mpretend-cmove
+UrlSuffix(gcc/SH-Options.html#index-mpretend-cmove)
+
+mfsca
+UrlSuffix(gcc/SH-Options.html#index-mfsca)
+
+mfsrra
+UrlSuffix(gcc/SH-Options.html#index-mfsrra)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
diff --git a/gcc/config/sh/superh.opt.urls b/gcc/config/sh/superh.opt.urls
new file mode 100644
index 000000000000..c098ec12c276
--- /dev/null
+++ b/gcc/config/sh/superh.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/superh.opt and generated HTML
+
+; skipping UrlSuffix for 'mboard=' due to finding no URLs
+
diff --git a/gcc/config/sol2.opt.urls b/gcc/config/sol2.opt.urls
new file mode 100644
index 000000000000..ef64d47d65ee
--- /dev/null
+++ b/gcc/config/sol2.opt.urls
@@ -0,0 +1,21 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sol2.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
+mclear-hwcap
+UrlSuffix(gcc/Solaris-2-Options.html#index-mclear-hwcap)
+
+mimpure-text
+UrlSuffix(gcc/Solaris-2-Options.html#index-mimpure-text)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+pthreads
+UrlSuffix(gcc/Solaris-2-Options.html#index-pthreads)
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/sparc/long-double-switch.opt.urls b/gcc/config/sparc/long-double-switch.opt.urls
new file mode 100644
index 000000000000..62f5738f756c
--- /dev/null
+++ b/gcc/config/sparc/long-double-switch.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/long-double-switch.opt and generated HTML
+
+; skipping UrlSuffix for 'mlong-double-128' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-double-64' due to finding no URLs
+
diff --git a/gcc/config/sparc/sparc.opt.urls b/gcc/config/sparc/sparc.opt.urls
new file mode 100644
index 000000000000..79774678984f
--- /dev/null
+++ b/gcc/config/sparc/sparc.opt.urls
@@ -0,0 +1,108 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/sparc.opt and generated HTML
+
+mfpu
+UrlSuffix(gcc/SPARC-Options.html#index-mfpu-4)
+
+mhard-float
+UrlSuffix(gcc/SPARC-Options.html#index-mhard-float-8)
+
+msoft-float
+UrlSuffix(gcc/SPARC-Options.html#index-msoft-float-13)
+
+mflat
+UrlSuffix(gcc/SPARC-Options.html#index-mflat)
+
+munaligned-doubles
+UrlSuffix(gcc/SPARC-Options.html#index-munaligned-doubles)
+
+mapp-regs
+UrlSuffix(gcc/SPARC-Options.html#index-mapp-regs)
+
+mhard-quad-float
+UrlSuffix(gcc/SPARC-Options.html#index-mhard-quad-float)
+
+msoft-quad-float
+UrlSuffix(gcc/SPARC-Options.html#index-msoft-quad-float)
+
+mlra
+UrlSuffix(gcc/SPARC-Options.html#index-mlra-3)
+
+mv8plus
+UrlSuffix(gcc/SPARC-Options.html#index-mv8plus)
+
+mvis
+UrlSuffix(gcc/SPARC-Options.html#index-mvis)
+
+mvis2
+UrlSuffix(gcc/SPARC-Options.html#index-mvis2)
+
+mvis3
+UrlSuffix(gcc/SPARC-Options.html#index-mvis3)
+
+mvis4
+UrlSuffix(gcc/SPARC-Options.html#index-mvis4)
+
+mvis4b
+UrlSuffix(gcc/SPARC-Options.html#index-mvis4b)
+
+mcbcond
+UrlSuffix(gcc/SPARC-Options.html#index-mcbcond)
+
+mfmaf
+UrlSuffix(gcc/SPARC-Options.html#index-mfmaf)
+
+mfsmuld
+UrlSuffix(gcc/SPARC-Options.html#index-mfsmuld)
+
+mpopc
+UrlSuffix(gcc/SPARC-Options.html#index-mpopc)
+
+msubxc
+UrlSuffix(gcc/SPARC-Options.html#index-msubxc)
+
+m64
+UrlSuffix(gcc/SPARC-Options.html#index-m64-3)
+
+m32
+UrlSuffix(gcc/SPARC-Options.html#index-m32-1)
+
+mstack-bias
+UrlSuffix(gcc/SPARC-Options.html#index-mstack-bias)
+
+mfaster-structs
+UrlSuffix(gcc/SPARC-Options.html#index-mfaster-structs)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+muser-mode
+UrlSuffix(gcc/SPARC-Options.html#index-muser-mode)
+
+mcpu=
+UrlSuffix(gcc/SPARC-Options.html#index-mcpu-12)
+
+mtune=
+UrlSuffix(gcc/SPARC-Options.html#index-mtune-15)
+
+mcmodel=
+UrlSuffix(gcc/SPARC-Options.html#index-mcmodel-1)
+
+; skipping UrlSuffix for 'mdebug=' due to finding no URLs
+
+mstd-struct-return
+UrlSuffix(gcc/SPARC-Options.html#index-mstd-struct-return)
+
+mfix-at697f
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-at697f)
+
+mfix-ut699
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut699)
+
+mfix-ut700
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut700)
+
+mfix-gr712rc
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-gr712rc)
+
+mmemory-model=
+UrlSuffix(gcc/SPARC-Options.html#index-mmemory-model)
+
diff --git a/gcc/config/stormy16/stormy16.opt.urls b/gcc/config/stormy16/stormy16.opt.urls
new file mode 100644
index 000000000000..6f47d4c5c180
--- /dev/null
+++ b/gcc/config/stormy16/stormy16.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/stormy16/stormy16.opt and generated HTML
+
+msim
+UrlSuffix(gcc/Xstormy16-Options.html#index-msim-10)
+
diff --git a/gcc/config/v850/v850.opt.urls b/gcc/config/v850/v850.opt.urls
new file mode 100644
index 000000000000..dc5a83107b3b
--- /dev/null
+++ b/gcc/config/v850/v850.opt.urls
@@ -0,0 +1,60 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/v850/v850.opt and generated HTML
+
+; skipping UrlSuffix for 'mapp-regs' due to finding no URLs
+
+; skipping UrlSuffix for 'mbig-switch' due to finding no URLs
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+; skipping UrlSuffix for 'mdisable-callt' due to finding no URLs
+
+; skipping UrlSuffix for 'mep' due to finding no URLs
+
+; skipping UrlSuffix for 'mghs' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-calls' due to finding no URLs
+
+; skipping UrlSuffix for 'mprolog-function' due to finding no URLs
+
+; skipping UrlSuffix for 'msda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mspace' due to finding no URLs
+
+; skipping UrlSuffix for 'mtda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mno-strict-align' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e1' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850es' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2v3' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e3v5' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2v4' due to finding no URLs
+
+; skipping UrlSuffix for 'mloop' due to finding no URLs
+
+; skipping UrlSuffix for 'mzda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-jumps' due to finding no URLs
+
+; skipping UrlSuffix for 'msoft-float' due to finding no URLs
+
+; skipping UrlSuffix for 'mhard-float' due to finding no URLs
+
+; skipping UrlSuffix for 'mrh850-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'mgcc-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'm8byte-align' due to finding no URLs
+
diff --git a/gcc/config/vax/elf.opt.urls b/gcc/config/vax/elf.opt.urls
new file mode 100644
index 000000000000..0903513694b9
--- /dev/null
+++ b/gcc/config/vax/elf.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/elf.opt and generated HTML
+
diff --git a/gcc/config/vax/vax.opt.urls b/gcc/config/vax/vax.opt.urls
new file mode 100644
index 000000000000..c6b1c418b617
--- /dev/null
+++ b/gcc/config/vax/vax.opt.urls
@@ -0,0 +1,10 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/vax.opt and generated HTML
+
+; skipping UrlSuffix for 'mg' due to finding no URLs
+
+; skipping UrlSuffix for 'mgnu' due to finding no URLs
+
+; skipping UrlSuffix for 'munix' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
diff --git a/gcc/config/visium/visium.opt.urls b/gcc/config/visium/visium.opt.urls
new file mode 100644
index 000000000000..38ba88dfe612
--- /dev/null
+++ b/gcc/config/visium/visium.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/visium/visium.opt and generated HTML
+
+mdebug
+UrlSuffix(gcc/Visium-Options.html#index-mdebug-2)
+
+msim
+UrlSuffix(gcc/Visium-Options.html#index-msim-9)
+
+mfpu
+UrlSuffix(gcc/Visium-Options.html#index-mfpu-5)
+
+mhard-float
+UrlSuffix(gcc/Visium-Options.html#index-mhard-float-10)
+
+msoft-float
+UrlSuffix(gcc/Visium-Options.html#index-msoft-float-15)
+
+mcpu=
+UrlSuffix(gcc/Visium-Options.html#index-mcpu-13)
+
+mtune=
+UrlSuffix(gcc/Visium-Options.html#index-mtune-16)
+
+msv-mode
+UrlSuffix(gcc/Visium-Options.html#index-msv-mode)
+
+muser-mode
+UrlSuffix(gcc/Visium-Options.html#index-muser-mode-1)
+
diff --git a/gcc/config/vms/vms.opt.urls b/gcc/config/vms/vms.opt.urls
new file mode 100644
index 000000000000..177b281cc774
--- /dev/null
+++ b/gcc/config/vms/vms.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vms/vms.opt and generated HTML
+
+mmalloc64
+UrlSuffix(gcc/VMS-Options.html#index-mmalloc64)
+
+mvms-return-codes
+UrlSuffix(gcc/VMS-Options.html#index-mvms-return-codes)
+
diff --git a/gcc/config/vxworks-smp.opt.urls b/gcc/config/vxworks-smp.opt.urls
new file mode 100644
index 000000000000..0a91011000f8
--- /dev/null
+++ b/gcc/config/vxworks-smp.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks-smp.opt and generated HTML
+
+msmp
+UrlSuffix(gcc/VxWorks-Options.html#index-msmp)
+
diff --git a/gcc/config/vxworks.opt.urls b/gcc/config/vxworks.opt.urls
new file mode 100644
index 000000000000..52888d0d91de
--- /dev/null
+++ b/gcc/config/vxworks.opt.urls
@@ -0,0 +1,20 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks.opt and generated HTML
+
+Bdynamic
+UrlSuffix(gcc/VxWorks-Options.html#index-Bdynamic)
+
+Bstatic
+UrlSuffix(gcc/VxWorks-Options.html#index-Bstatic)
+
+Xbind-lazy
+UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-lazy)
+
+Xbind-now
+UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-now)
+
+mrtp
+UrlSuffix(gcc/VxWorks-Options.html#index-mrtp)
+
+non-static
+UrlSuffix(gcc/VxWorks-Options.html#index-non-static)
+
diff --git a/gcc/config/xtensa/elf.opt.urls b/gcc/config/xtensa/elf.opt.urls
new file mode 100644
index 000000000000..6774adadbf7a
--- /dev/null
+++ b/gcc/config/xtensa/elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/elf.opt and generated HTML
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/xtensa/uclinux.opt.urls b/gcc/config/xtensa/uclinux.opt.urls
new file mode 100644
index 000000000000..bd69ce56d4c6
--- /dev/null
+++ b/gcc/config/xtensa/uclinux.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/uclinux.opt and generated HTML
+
diff --git a/gcc/config/xtensa/xtensa.opt.urls b/gcc/config/xtensa/xtensa.opt.urls
new file mode 100644
index 000000000000..146db23d1e30
--- /dev/null
+++ b/gcc/config/xtensa/xtensa.opt.urls
@@ -0,0 +1,37 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/xtensa.opt and generated HTML
+
+mconst16
+UrlSuffix(gcc/Xtensa-Options.html#index-mconst16)
+
+mforce-no-pic
+UrlSuffix(gcc/Xtensa-Options.html#index-mforce-no-pic)
+
+mlongcalls
+UrlSuffix(gcc/Xtensa-Options.html#index-mlongcalls)
+
+mextra-l32r-costs=
+UrlSuffix(gcc/Xtensa-Options.html#index-mextra-l32r-costs)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mtarget-align
+UrlSuffix(gcc/Xtensa-Options.html#index-mtarget-align)
+
+mtext-section-literals
+UrlSuffix(gcc/Xtensa-Options.html#index-mtext-section-literals)
+
+mauto-litpools
+UrlSuffix(gcc/Xtensa-Options.html#index-mauto-litpools)
+
+mserialize-volatile
+UrlSuffix(gcc/Xtensa-Options.html#index-mserialize-volatile)
+
+mabi=call0
+UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dcall0)
+
+mabi=windowed
+UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dwindowed)
+
+mstrict-align
+UrlSuffix(gcc/Xtensa-Options.html#index-mstrict-align-5)
+
diff --git a/gcc/d/lang.opt.urls b/gcc/d/lang.opt.urls
new file mode 100644
index 000000000000..09b2a261e254
--- /dev/null
+++ b/gcc/d/lang.opt.urls
@@ -0,0 +1,223 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/d/lang.opt and generated HTML
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+Hd
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Hd)
+
+Hf
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Hf)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+J
+LangUrlSuffix_D(gdc/Directory-Options.html#index-J)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+Waddress
+UrlSuffix(gcc/Warning-Options.html#index-Waddress)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Walloca
+UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca)
+
+Walloca-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
+
+Wbuiltin-declaration-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
+
+Wcast-result
+LangUrlSuffix_D(gdc/Warnings.html#index-Wcast-result)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wmismatched-special-enum
+LangUrlSuffix_D(gdc/Warnings.html#index-Wmismatched-special-enum)
+
+Wspeculative
+LangUrlSuffix_D(gdc/Warnings.html#index-Wno-speculative)
+
+Wunknown-pragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
+
+Wvarargs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-varargs)
+
+X
+LangUrlSuffix_D(gdc/Code-Generation.html#index-X)
+
+Xf
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Xf)
+
+debuglib=
+LangUrlSuffix_D(gdc/Linking.html#index-debuglib_003d)
+
+defaultlib=
+LangUrlSuffix_D(gdc/Linking.html#index-defaultlib_003d)
+
+fall-instantiations
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fall-instantiations)
+
+fassert
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fassert)
+
+fbounds-check
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+fbounds-check=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+; skipping UrlSuffix for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
+;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
+;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
+; skipping LangUrlSuffix_D for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gdc/Other-Builtins.html#index-fno-builtin-1'
+;   duplicate: 'gdc/Runtime-Options.html#index-fbuiltin'
+
+fcheckaction=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fcheckaction)
+
+fdebug
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdebug)
+
+fdebug=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdebug)
+
+fdoc
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc)
+
+fdoc-dir=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-dir)
+
+fdoc-file=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-file)
+
+fdoc-inc=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-inc)
+
+fdruntime
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdruntime)
+
+fdump-d-original
+LangUrlSuffix_D(gdc/Developer-Options.html#index-fdump-d-original)
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fextern-std=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fextern-std)
+
+fignore-unknown-pragmas
+LangUrlSuffix_D(gdc/Warnings.html#index-fignore-unknown-pragmas)
+
+finvariants
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-finvariants)
+
+fmain
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fmain)
+
+fmodule-file=
+LangUrlSuffix_D(gdc/Directory-Options.html#index-fmodule-file)
+
+fmoduleinfo
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fmoduleinfo)
+
+fonly=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fonly)
+
+fpostconditions
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-postconditions)
+
+fpreconditions
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-preconditions)
+
+frelease
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-release)
+
+frtti
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti) LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-rtti)
+
+fsave-mixins=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fsave-mixins)
+
+fswitch-errors
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-switch-errors)
+
+funittest
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-unittest)
+
+fversion=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+fweak-templates
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-weak-templates)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+nophoboslib
+LangUrlSuffix_D(gdc/Linking.html#index-nophoboslib)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+static-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-static-libphobos)
+
+shared-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-shared-libphobos)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
diff --git a/gcc/fortran/lang.opt.urls b/gcc/fortran/lang.opt.urls
new file mode 100644
index 000000000000..a7d9bdc142c5
--- /dev/null
+++ b/gcc/fortran/lang.opt.urls
@@ -0,0 +1,161 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/fortran/lang.opt and generated HTML
+
+A
+UrlSuffix(gcc/Preprocessor-Options.html#index-A)
+
+C
+UrlSuffix(gcc/Preprocessor-Options.html#index-C)
+
+CC
+UrlSuffix(gcc/Preprocessor-Options.html#index-CC)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+J
+LangUrlSuffix_D(gdc/Directory-Options.html#index-J)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+U
+UrlSuffix(gcc/Preprocessor-Options.html#index-U)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wdate-time
+UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
+
+Wconversion
+UrlSuffix(gcc/Warning-Options.html#index-Wconversion)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wmissing-include-dirs
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
+
+Wopenacc-parallelism
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
+
+Wopenmp-simd
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+; skipping UrlSuffix for 'nocpp' due to finding no URLs
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+ff2c
+LangUrlSuffix_Fortran(gfortran/Code-Gen-Options.html#index-ff2c)
+
+fopenacc
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc)
+
+fopenacc-dim=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
+
+fopenmp
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp)
+
+fopenmp-simd
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd)
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
diff --git a/gcc/go/lang.opt.urls b/gcc/go/lang.opt.urls
new file mode 100644
index 000000000000..34d3154f2c50
--- /dev/null
+++ b/gcc/go/lang.opt.urls
@@ -0,0 +1,17 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/go/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
diff --git a/gcc/lto/lang.opt.urls b/gcc/lto/lang.opt.urls
new file mode 100644
index 000000000000..f7509c8211ec
--- /dev/null
+++ b/gcc/lto/lang.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/lto/lang.opt and generated HTML
+
+flinker-output=
+UrlSuffix(gcc/Link-Options.html#index-flinker-output)
+
+help
+UrlSuffix(gcc/Overall-Options.html#index-help)
+
diff --git a/gcc/m2/lang.opt.urls b/gcc/m2/lang.opt.urls
new file mode 100644
index 000000000000..e9028f9656fa
--- /dev/null
+++ b/gcc/m2/lang.opt.urls
@@ -0,0 +1,118 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/m2/lang.opt and generated HTML
+
+fversion
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter)
+
+B
+UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+Mno-modules
+UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+; skipping UrlSuffix for 'ansi' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
+;   duplicate: 'gcc/Non-bugs.html#index-ansi-3'
+;   duplicate: 'gcc/Other-Builtins.html#index-ansi-2'
+;   duplicate: 'gcc/Standards.html#index-ansi'
+
+; skipping UrlSuffix for 'c' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-c-1'
+;   duplicate: 'gcc/Overall-Options.html#index-c'
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+save-temps
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+save-temps=
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+traditional-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp)
+
diff --git a/gcc/params.opt.urls b/gcc/params.opt.urls
new file mode 100644
index 000000000000..e76310c6ac04
--- /dev/null
+++ b/gcc/params.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/params.opt and generated HTML
+
diff --git a/gcc/rust/lang.opt.urls b/gcc/rust/lang.opt.urls
new file mode 100644
index 000000000000..9cf8987e7344
--- /dev/null
+++ b/gcc/rust/lang.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/rust/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-result
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
-- 
2.26.3


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

* [PATCH 3/4; v2] opts: add logic to generate options-urls.cc
  2023-12-14 15:01                     ` [PATCH 0/4] v3 of: " David Malcolm
  2023-12-14 15:01                       ` [PATCH 1/4; v3] options: add gcc/regenerate-opt-urls.py David Malcolm
  2023-12-14 15:01                       ` [PATCH 2/4; v3] Add generated .opt.urls files David Malcolm
@ 2023-12-14 15:01                       ` David Malcolm
  2023-12-14 15:01                       ` [PATCH 4/4; v2] options: wire up options-urls.cc into gcc_urlifier David Malcolm
                                         ` (2 subsequent siblings)
  5 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-12-14 15:01 UTC (permalink / raw)
  To: Joseph Myers; +Cc: Mark Wielaard, Tobias Burnus, gcc-patches, David Malcolm

Changed in v2:
- split out from the code that uses this
- now handles lang-specific URLs, as well as generic URLs
- the generated options-urls.cc now contains a function with a
  switch statement, rather than an array, to support
  lang-specific URLs:

const char *
get_opt_url_suffix (int option_index, unsigned lang_mask)
{
  switch (option_index)
    {
     [...snip...]
     case OPT_B:
       if (lang_mask & CL_D)
         return "gdc/Directory-Options.html#index-B";
       return "gcc/Directory-Options.html#index-B";
    [...snip...]
  return nullptr;
}

gcc/ChangeLog:
	* Makefile.in (ALL_OPT_URL_FILES): New.
	(GCC_OBJS): Add options-urls.o.
	(OBJS): Likewise.
	(OBJS-libcommon): Likewise.
	(s-options): Depend on $(ALL_OPT_URL_FILES), and add this to
	inputs to opt-gather.awk.
	(options-urls.cc): New Makefile target.
	* opt-functions.awk (url_suffix): New function.
	(lang_url_suffix): New function.
	* options-urls-cc-gen.awk: New file.
	* opts.h (get_opt_url_suffix): New decl.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
 gcc/Makefile.in             |  18 +++++--
 gcc/opt-functions.awk       |  15 ++++++
 gcc/options-urls-cc-gen.awk | 105 ++++++++++++++++++++++++++++++++++++
 gcc/opts.h                  |   4 ++
 4 files changed, 138 insertions(+), 4 deletions(-)
 create mode 100644 gcc/options-urls-cc-gen.awk

diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index d85953495ce8..33b29ab50280 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1273,6 +1273,8 @@ FLAGS_TO_PASS = \
 # All option source files
 ALL_OPT_FILES=$(lang_opt_files) $(extra_opt_files)
 
+ALL_OPT_URL_FILES=$(patsubst %, %.urls, $(ALL_OPT_FILES))
+
 # Target specific, C specific object file
 C_TARGET_OBJS=@c_target_objs@
 
@@ -1289,7 +1291,7 @@ FORTRAN_TARGET_OBJS=@fortran_target_objs@
 RUST_TARGET_OBJS=@rust_target_objs@
 
 # Object files for gcc many-languages driver.
-GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o
+GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o options-urls.o
 
 c-family-warn = $(STRICT_WARN)
 
@@ -1611,6 +1613,7 @@ OBJS = \
 	optinfo.o \
 	optinfo-emit-json.o \
 	options-save.o \
+	options-urls.o \
 	opts-global.o \
 	ordered-hash-map-tests.o \
 	passes.o \
@@ -1837,7 +1840,8 @@ OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
 # compiler and containing target-dependent code.
 OBJS-libcommon-target = $(common_out_object_file) prefix.o \
 	opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o \
-	hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o
+	hash-table.o file-find.o spellcheck.o selftest.o opt-suggestions.o \
+	options-urls.o
 
 # This lists all host objects for the front ends.
 ALL_HOST_FRONTEND_OBJS = $(foreach v,$(CONFIG_LANGUAGES),$($(v)_OBJS))
@@ -2440,9 +2444,9 @@ s-specs : Makefile
 	$(STAMP) s-specs
 
 optionlist: s-options ; @true
-s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
+s-options: $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) Makefile $(srcdir)/opt-gather.awk
 	LC_ALL=C ; export LC_ALL ; \
-	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) > tmp-optionlist
+	$(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) $(ALL_OPT_URL_FILES) > tmp-optionlist
 	$(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist
 	$(STAMP) s-options
 
@@ -2458,6 +2462,12 @@ options-save.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
 	       -f $(srcdir)/optc-save-gen.awk \
 	       -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
 
+options-urls.cc: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
+    $(srcdir)/options-urls-cc-gen.awk
+	$(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/opt-read.awk \
+	       -f $(srcdir)/options-urls-cc-gen.awk \
+	       -v header_name="config.h system.h coretypes.h tm.h" < $< > $@
+
 options.h: s-options-h ; @true
 s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opt-read.awk \
     $(srcdir)/opth-gen.awk
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
index a58e93815e30..c31e66f2105a 100644
--- a/gcc/opt-functions.awk
+++ b/gcc/opt-functions.awk
@@ -193,6 +193,21 @@ function var_name(flags)
 	return nth_arg(0, opt_args("Var", flags))
 }
 
+# If FLAGS includes a UrlSuffix flag, return the value it specifies.
+# Return the empty string otherwise.
+function url_suffix(flags)
+{
+	return nth_arg(0, opt_args("UrlSuffix", flags))
+}
+
+# If FLAGS includes a LangUrlSuffix_LANG flag, return the
+# value it specifies.
+# Return the empty string otherwise.
+function lang_url_suffix(flags, lang)
+{
+	return nth_arg(0, opt_args("LangUrlSuffix_" lang, flags))
+}
+
 # Return the name of the variable if FLAGS has a HOST_WIDE_INT variable. 
 # Return the empty string otherwise.
 function host_wide_int_var_name(flags)
diff --git a/gcc/options-urls-cc-gen.awk b/gcc/options-urls-cc-gen.awk
new file mode 100644
index 000000000000..e021e7c3f1bc
--- /dev/null
+++ b/gcc/options-urls-cc-gen.awk
@@ -0,0 +1,105 @@
+#  Copyright (C) 2023 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 3, or (at your option) any
+# later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# This Awk script reads in the option records generated from 
+# opt-gather.awk, and generates a C++ file containing an array
+# of URL suffixes (possibly NULL), one per option.
+
+# This program uses functions from opt-functions.awk and code from
+# opt-read.awk.
+#
+# Usage: awk -f opt-functions.awk -f opt-read.awk -f options-urls-cc-gen.awk \
+#            [-v header_name=header.h] < inputfile > options-urls.cc
+
+END {
+
+
+print "/* This file is auto-generated by options-urls-cc-gen.awk.  */"
+print ""
+n_headers = split(header_name, headers, " ")
+for (i = 1; i <= n_headers; i++)
+	print "#include " quote headers[i] quote
+print "#include " quote "opts.h" quote
+print "#include " quote "intl.h" quote
+print "#include " quote "insn-attr-common.h" quote
+print ""
+
+if (n_extra_c_includes > 0) {
+	for (i = 0; i < n_extra_c_includes; i++) {
+		print "#include " quote extra_c_includes[i] quote
+	}
+	print ""
+}
+
+print "const char *"
+print "get_opt_url_suffix (int option_index, unsigned lang_mask)"
+print "{"
+print "  switch (option_index)"
+print "    {"
+
+
+optindex = 0
+for (i = 0; i < n_opts; i++) {
+	# Combine the flags of identical switches.  Switches
+	# appear many times if they are handled by many front
+	# ends, for example.
+	while( i + 1 != n_opts && opts[i] == opts[i + 1] ) {
+		flags[i + 1] = flags[i] " " flags[i + 1];
+		i++;
+	}
+
+	len = length (opts[i]);
+	enum = opt_enum(opts[i])
+
+	# Aliases do not get enumeration names.
+	if ((flag_set_p("Alias.*", flags[i]) \
+	     && !flag_set_p("SeparateAlias", flags[i])) \
+	    || flag_set_p("Ignore", flags[i])) {
+	    show_case = 0;
+	} else {
+	    show_case = 1;
+	}
+
+	if (show_case) {
+	    printf("     case %s:\n", opt_enum(opts[i]))
+
+	    # Handle any lang-specific LangUrlSuffix directives:
+	    for (lang_idx = 0; lang_idx < n_langs; lang_idx++) {
+		lang_name = lang_sanitized_name(langs[lang_idx])
+		u = lang_url_suffix(flags[i], lang_name)
+		if (u != "") {
+		    printf("       if (lang_mask & CL_%s)\n", lang_name)
+		    printf("         return \"%s\";\n", u)
+		}
+	    }
+
+	    # Use any language-independent UrlSuffix directive:
+	    u = url_suffix(flags[i])
+	    if (u != "") {
+		printf("       return \"%s\";\n", u)
+	    } else {
+		printf("       break;\n")
+	    }
+	}
+
+	# Bump up the informational option index.
+	++optindex
+ }
+
+print "    }"
+print "  return nullptr;"
+print "}"
+}
diff --git a/gcc/opts.h b/gcc/opts.h
index d89c5de81143..398ab7a1b239 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -152,6 +152,10 @@ struct cl_option_state {
 
 extern const struct cl_option cl_options[];
 extern const unsigned int cl_options_count;
+
+extern const char *
+get_opt_url_suffix (int option_index, unsigned lang_mask);
+
 #ifdef ENABLE_PLUGIN
 extern const struct cl_var cl_vars[];
 #endif
-- 
2.26.3


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

* [PATCH 4/4; v2] options: wire up options-urls.cc into gcc_urlifier
  2023-12-14 15:01                     ` [PATCH 0/4] v3 of: " David Malcolm
                                         ` (2 preceding siblings ...)
  2023-12-14 15:01                       ` [PATCH 3/4; v2] opts: add logic to generate options-urls.cc David Malcolm
@ 2023-12-14 15:01                       ` David Malcolm
  2023-12-15  0:59                       ` [PATCH 0/4] v3 of: Option handling: add documentation URLs Mark Wielaard
  2023-12-20  0:28                       ` [PATCH 0/4] v3 of: Option handling: add documentation URLs Joseph Myers
  5 siblings, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-12-14 15:01 UTC (permalink / raw)
  To: Joseph Myers; +Cc: Mark Wielaard, Tobias Burnus, gcc-patches, David Malcolm

Changed in v2:
- split out from the code that generates options-urls.cc
- call the generated function, rather than use a generated array
- pass around lang_mask

gcc/ChangeLog:
	* diagnostic.h (diagnostic_make_option_url_cb): Add lang_mask
	param.
	(diagnostic_context::make_option_url): Update for lang_mask param.
	* gcc-urlifier.cc: Include "opts.h" and "options.h".
	(gcc_urlifier::gcc_urlifier): Add lang_mask param.
	(gcc_urlifier::m_lang_mask): New field.
	(doc_urls): Make static.
	(gcc_urlifier::get_url_for_quoted_text): Use label_text.
	(gcc_urlifier::get_url_suffix_for_quoted_text): Use label_text.
	Look for an option by name before trying a binary search in
	doc_urls.
	(gcc_urlifier::get_url_suffix_for_quoted_text): Use label_text.
	(gcc_urlifier::get_url_suffix_for_option): New.
	(make_gcc_urlifier): Add lang_mask param.
	(selftest::gcc_urlifier_cc_tests): Update for above changes.
	Verify that a URL is found for "-fpack-struct".
	* gcc-urlifier.def: Drop options "--version" and "-fpack-struct".
	* gcc-urlifier.h (make_gcc_urlifier): Add lang_mask param.
	* gcc.cc (driver::global_initializations): Pass 0 for lang_mask
	to make_gcc_urlifier.
	* opts-diagnostic.h (get_option_url): Add lang_mask param.
	* opts.cc (get_option_html_page): Remove special-casing for
	analyzer and LTO.
	(get_option_url_suffix): New.
	(get_option_url): Reimplement.
	(selftest::test_get_option_html_page): Rename to...
	(selftest::test_get_option_url_suffix): ...this and update for
	above changes.
	(selftest::opts_cc_tests): Update for renaming.
	* opts.h: Include "rich-location.h".
	(get_option_url_suffix): New decl.

gcc/testsuite/ChangeLog:
	* lib/gcc-dg.exp: Set TERM to xterm.

gcc/ChangeLog:
	* toplev.cc (general_init): Pass lang_mask to urlifier.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
 gcc/diagnostic.h             |   6 +-
 gcc/gcc-urlifier.cc          | 106 ++++++++++++++++++++++++++++-------
 gcc/gcc-urlifier.def         |   2 -
 gcc/gcc-urlifier.h           |   2 +-
 gcc/gcc.cc                   |   2 +-
 gcc/opts-diagnostic.h        |   3 +-
 gcc/opts.cc                  |  95 ++++++++++++++++++++-----------
 gcc/opts.h                   |   4 ++
 gcc/testsuite/lib/gcc-dg.exp |   6 ++
 gcc/toplev.cc                |   5 +-
 10 files changed, 169 insertions(+), 62 deletions(-)

diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index 80e53ec92b06..0ee0e6485937 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -186,7 +186,8 @@ typedef char *(*diagnostic_make_option_name_cb) (const diagnostic_context *,
 						 diagnostic_t,
 						 diagnostic_t);
 typedef char *(*diagnostic_make_option_url_cb) (const diagnostic_context *,
-						int);
+						int,
+						unsigned);
 
 class edit_context;
 namespace json { class value; }
@@ -526,7 +527,8 @@ public:
   {
     if (!m_option_callbacks.m_make_option_url_cb)
       return nullptr;
-    return m_option_callbacks.m_make_option_url_cb (this, option_index);
+    return m_option_callbacks.m_make_option_url_cb (this, option_index,
+						    get_lang_mask ());
   }
 
   void
diff --git a/gcc/gcc-urlifier.cc b/gcc/gcc-urlifier.cc
index 0dbff9853132..ae762a45f4a1 100644
--- a/gcc/gcc-urlifier.cc
+++ b/gcc/gcc-urlifier.cc
@@ -24,6 +24,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "pretty-print.h"
 #include "pretty-print-urlifier.h"
 #include "gcc-urlifier.h"
+#include "opts.h"
+#include "options.h"
 #include "selftest.h"
 
 namespace {
@@ -34,23 +36,34 @@ namespace {
 class gcc_urlifier : public urlifier
 {
 public:
+  gcc_urlifier (unsigned int lang_mask)
+  : m_lang_mask (lang_mask)
+  {}
+
   char *get_url_for_quoted_text (const char *p, size_t sz) const final override;
 
-  const char *get_url_suffix_for_quoted_text (const char *p, size_t sz) const;
+  label_text get_url_suffix_for_quoted_text (const char *p, size_t sz) const;
   /* We use ATTRIBUTE_UNUSED as this helper is called only from ASSERTs.  */
-  const char *get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED;
+  label_text get_url_suffix_for_quoted_text (const char *p) const ATTRIBUTE_UNUSED;
 
 private:
+  label_text get_url_suffix_for_option (const char *p, size_t sz) const;
+
   static char *
   make_doc_url (const char *doc_url_suffix);
+
+  unsigned int m_lang_mask;
 };
 
 /* class gcc_urlifier : public urlifier.  */
 
+/* Manage a hard-coded mapping from quoted string to URL suffixes
+   in gcc-urlifier.def  */
+
 #define DOC_URL(QUOTED_TEXT, URL_SUFFIX) \
   { (QUOTED_TEXT), (URL_SUFFIX) }
 
-const struct
+static const struct
 {
   const char *quoted_text;
   const char *url_suffix;
@@ -60,32 +73,53 @@ const struct
 
 };
 
+/* Implementation of urlifier::get_url_for_quoted_text vfunc for GCC
+   diagnostics.  */
+
 char *
 gcc_urlifier::get_url_for_quoted_text (const char *p, size_t sz) const
 {
-  if (const char *url_suffix = get_url_suffix_for_quoted_text (p, sz))
-    return make_doc_url (url_suffix);
+  label_text url_suffix = get_url_suffix_for_quoted_text (p, sz);
+  if (url_suffix.get ())
+    return make_doc_url (url_suffix.get ());
   return nullptr;
 }
 
-const char *
+/* Look for a URL for the quoted string (P, SZ).
+   Return the url suffix if found, or nullptr otherwise.  */
+
+label_text
 gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const
 {
-  /* Binary search.  This assumes that the quoted_text fields of doc_urls
+  if (sz == 0)
+    return label_text ();
+
+  /* If this is an option, look up the option and see if we have
+     a URL for it.  */
+  if (p[0] == '-')
+    {
+      label_text suffix = get_url_suffix_for_option (p, sz);
+      if (suffix.get ())
+	return suffix;
+    }
+
+  /* Otherwise, look within the hard-coded data table in gcc-urlifier.def.
+
+     Binary search.  This assumes that the quoted_text fields of doc_urls
      are in sorted order.  */
   int min = 0;
   int max = ARRAY_SIZE (doc_urls) - 1;
   while (true)
     {
       if (min > max)
-	return nullptr;
+	return label_text ();
       int midpoint = (min + max) / 2;
       gcc_assert ((size_t)midpoint < ARRAY_SIZE (doc_urls));
       int cmp = strncmp (p, doc_urls[midpoint].quoted_text, sz);
       if (cmp == 0)
 	{
 	  if (doc_urls[midpoint].quoted_text[sz] == '\0')
-	    return doc_urls[midpoint].url_suffix;
+	    return label_text::borrow (doc_urls[midpoint].url_suffix);
 	  else
 	    max = midpoint - 1;
 	}
@@ -94,15 +128,45 @@ gcc_urlifier::get_url_suffix_for_quoted_text (const char *p, size_t sz) const
       else
 	min = midpoint + 1;
     }
-  return nullptr;
+
+  /* Not found.  */
+  return label_text ();
 }
 
-const char *
+/* For use in selftests.  */
+
+label_text
 gcc_urlifier::get_url_suffix_for_quoted_text (const char *p) const
 {
   return get_url_suffix_for_quoted_text (p, strlen (p));
 }
 
+/* Look for a URL for the quoted string (P, SZ) that appears to be
+   an option.
+   Return the url suffix if found, or nullptr otherwise.  */
+
+label_text
+gcc_urlifier::get_url_suffix_for_option (const char *p, size_t sz) const
+{
+  /* Look up this option
+
+     find_opt does a binary search, taking a 0-terminated string,
+     and skipping the leading '-'.
+
+     We have a (pointer,size) pair that doesn't necessarily have a
+     terminator, so create a 0-terminated clone of the string.  */
+  gcc_assert (sz > 0);
+  char *tmp = xstrndup (p + 1, sz - 1); // skip the leading '-'
+  size_t opt = find_opt (tmp, m_lang_mask);
+  free (tmp);
+
+  if (opt >= N_OPTS)
+    /* Option not recognized.  */
+    return label_text ();
+
+  return get_option_url_suffix (opt, m_lang_mask);
+}
+
 char *
 gcc_urlifier::make_doc_url (const char *doc_url_suffix)
 {
@@ -115,9 +179,9 @@ gcc_urlifier::make_doc_url (const char *doc_url_suffix)
 } // anonymous namespace
 
 urlifier *
-make_gcc_urlifier ()
+make_gcc_urlifier (unsigned int lang_mask)
 {
-  return new gcc_urlifier ();
+  return new gcc_urlifier (lang_mask);
 }
 
 #if CHECKING_P
@@ -137,22 +201,26 @@ gcc_urlifier_cc_tests ()
 			doc_urls[idx].quoted_text)
 		< 0);
 
-  gcc_urlifier u;
+  gcc_urlifier u (0);
 
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text (""), nullptr);
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text (")"), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("").get (), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text (")").get (), nullptr);
 
-  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message"),
+  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("#pragma message").get (),
 		"gcc/Diagnostic-Pragmas.html");
 
   // Incomplete prefix of a quoted_text
-  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess"), nullptr);
+  ASSERT_EQ (u.get_url_suffix_for_quoted_text ("#pragma mess").get (), nullptr);
 
   /* Check that every element is findable.  */
   for (size_t idx = 0; idx < ARRAY_SIZE (doc_urls); idx++)
     ASSERT_STREQ
-      (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text),
+      (u.get_url_suffix_for_quoted_text (doc_urls[idx].quoted_text).get (),
        doc_urls[idx].url_suffix);
+
+  /* Check an option.  */
+  ASSERT_STREQ (u.get_url_suffix_for_quoted_text ("-fpack-struct").get (),
+		"gcc/Code-Gen-Options.html#index-fpack-struct");
 }
 
 } // namespace selftest
diff --git a/gcc/gcc-urlifier.def b/gcc/gcc-urlifier.def
index 360de930e9ec..de6d9a3eb962 100644
--- a/gcc/gcc-urlifier.def
+++ b/gcc/gcc-urlifier.def
@@ -16,5 +16,3 @@ DOC_URL ("#pragma pack", "gcc/Structure-Layout-Pragmas.html"),
 DOC_URL ("#pragma redefine_extname", "gcc/Symbol-Renaming-Pragmas.html"),
 DOC_URL ("#pragma scalar_storage_order", "gcc/Structure-Layout-Pragmas.html"),
 DOC_URL ("#pragma weak", "gcc/Weak-Pragmas.html"),
-DOC_URL ("--version", "gcc/Overall-Options.html#index-version"),
-DOC_URL ("-fpack-struct", "gcc/Code-Gen-Options.html#index-fpack-struct"),
diff --git a/gcc/gcc-urlifier.h b/gcc/gcc-urlifier.h
index 614e1c64b94d..77eb13463928 100644
--- a/gcc/gcc-urlifier.h
+++ b/gcc/gcc-urlifier.h
@@ -21,6 +21,6 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_GCC_URLIFIER_H
 #define GCC_GCC_URLIFIER_H
 
-extern urlifier *make_gcc_urlifier ();
+extern urlifier *make_gcc_urlifier (unsigned int lang_mask);
 
 #endif /* GCC_GCC_URLIFIER_H */
diff --git a/gcc/gcc.cc b/gcc/gcc.cc
index 701f5cdfb59c..77b49caaa3e5 100644
--- a/gcc/gcc.cc
+++ b/gcc/gcc.cc
@@ -8340,7 +8340,7 @@ driver::global_initializations ()
   diagnostic_initialize (global_dc, 0);
   diagnostic_color_init (global_dc);
   diagnostic_urls_init (global_dc);
-  global_dc->set_urlifier (make_gcc_urlifier ());
+  global_dc->set_urlifier (make_gcc_urlifier (0));
 
 #ifdef GCC_DRIVER_HOST_INITIALIZATION
   /* Perform host dependent initialization when needed.  */
diff --git a/gcc/opts-diagnostic.h b/gcc/opts-diagnostic.h
index 8c3b695f07a2..5bede4ef48f3 100644
--- a/gcc/opts-diagnostic.h
+++ b/gcc/opts-diagnostic.h
@@ -24,6 +24,7 @@ extern char *option_name (const diagnostic_context *context, int option_index,
 			  diagnostic_t orig_diag_kind, diagnostic_t diag_kind);
 
 extern char *get_option_url (const diagnostic_context *context,
-			     int option_index);
+			     int option_index,
+			     unsigned lang_mask);
 
 #endif
diff --git a/gcc/opts.cc b/gcc/opts.cc
index 7a3830caaa31..4f2884eb910b 100644
--- a/gcc/opts.cc
+++ b/gcc/opts.cc
@@ -3710,14 +3710,6 @@ get_option_html_page (int option_index)
 {
   const cl_option *cl_opt = &cl_options[option_index];
 
-  /* Analyzer options are on their own page.  */
-  if (strstr (cl_opt->opt_text, "analyzer-"))
-    return "gcc/Static-Analyzer-Options.html";
-
-  /* Handle -flto= option.  */
-  if (strstr (cl_opt->opt_text, "flto"))
-    return "gcc/Optimize-Options.html";
-
 #ifdef CL_Fortran
   if ((cl_opt->flags & CL_Fortran) != 0
       /* If it is option common to both C/C++ and Fortran, it is documented
@@ -3730,32 +3722,49 @@ get_option_html_page (int option_index)
     return "gfortran/Error-and-Warning-Options.html";
 #endif
 
-  return "gcc/Warning-Options.html";
+  return nullptr;
+}
+
+/* Get the url within the documentation for this option, or NULL.  */
+
+label_text
+get_option_url_suffix (int option_index, unsigned lang_mask)
+{
+  if (const char *url = get_opt_url_suffix (option_index, lang_mask))
+
+    return label_text::borrow (url);
+
+  /* Fallback code for some options that aren't handled byt opt_url_suffixes
+     e.g. links below "gfortran/".  */
+  if (const char *html_page = get_option_html_page (option_index))
+    return label_text::take
+      (concat (html_page,
+	       /* Expect an anchor of the form "index-Wfoo" e.g.
+		  <a name="index-Wformat"></a>, and thus an id within
+		  the page of "#index-Wformat".  */
+	       "#index",
+	       cl_options[option_index].opt_text,
+	       NULL));
+
+  return label_text ();
 }
 
 /* Return malloced memory for a URL describing the option OPTION_INDEX
    which enabled a diagnostic (context CONTEXT).  */
 
 char *
-get_option_url (const diagnostic_context *, int option_index)
+get_option_url (const diagnostic_context *,
+		int option_index,
+		unsigned lang_mask)
 {
   if (option_index)
-    return concat (/* DOCUMENTATION_ROOT_URL should be supplied via
-		      #include "config.h" (see --with-documentation-root-url),
-		      and should have a trailing slash.  */
-		   DOCUMENTATION_ROOT_URL,
-
-		   /* get_option_html_page will return something like
-		      "gcc/Warning-Options.html".  */
-		   get_option_html_page (option_index),
-
-		   /* Expect an anchor of the form "index-Wfoo" e.g.
-		      <a name="index-Wformat"></a>, and thus an id within
-		      the URL of "#index-Wformat".  */
-		   "#index", cl_options[option_index].opt_text,
-		   NULL);
-  else
-    return NULL;
+    {
+      label_text url_suffix = get_option_url_suffix (option_index, lang_mask);
+      if (url_suffix.get ())
+	return concat (DOCUMENTATION_ROOT_URL, url_suffix.get (), nullptr);
+    }
+
+  return nullptr;
 }
 
 /* Return a heap allocated producer with command line options.  */
@@ -3886,17 +3895,35 @@ gen_producer_string (const char *language_string, cl_decoded_option *options,
 
 namespace selftest {
 
-/* Verify that get_option_html_page works as expected.  */
+/* Verify that get_option_url_suffix works as expected.  */
 
 static void
-test_get_option_html_page ()
+test_get_option_url_suffix ()
 {
-  ASSERT_STREQ (get_option_html_page (OPT_Wcpp), "gcc/Warning-Options.html");
-  ASSERT_STREQ (get_option_html_page (OPT_Wanalyzer_double_free),
-	     "gcc/Static-Analyzer-Options.html");
+  ASSERT_STREQ (get_option_url_suffix (OPT_Wcpp, 0).get (),
+		"gcc/Warning-Options.html#index-Wcpp");
+  ASSERT_STREQ (get_option_url_suffix (OPT_Wanalyzer_double_free, 0).get (),
+		"gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free");
+
+  /* Test of a D-specific option.  */
+#ifdef CL_D
+  ASSERT_EQ (get_option_url_suffix (OPT_fbounds_check_, 0).get (), nullptr);
+  ASSERT_STREQ (get_option_url_suffix (OPT_fbounds_check_, CL_D).get (),
+		"gdc/Runtime-Options.html#index-fbounds-check");
+
+  /* Test of a D-specific override to an option URL.  */
+  /* Generic URL.  */
+  ASSERT_STREQ (get_option_url_suffix (OPT_fmax_errors_, 0).get (),
+		"gcc/Warning-Options.html#index-fmax-errors");
+  /* D-specific URL.  */
+  ASSERT_STREQ (get_option_url_suffix (OPT_fmax_errors_, CL_D).get (),
+		"gdc/Warnings.html#index-fmax-errors");
+#endif
+
 #ifdef CL_Fortran
-  ASSERT_STREQ (get_option_html_page (OPT_Wline_truncation),
-		"gfortran/Error-and-Warning-Options.html");
+  ASSERT_STREQ
+    (get_option_url_suffix (OPT_Wline_truncation, CL_Fortran).get (),
+     "gfortran/Error-and-Warning-Options.html#index-Wline-truncation");
 #endif
 }
 
@@ -3959,7 +3986,7 @@ test_enum_sets ()
 void
 opts_cc_tests ()
 {
-  test_get_option_html_page ();
+  test_get_option_url_suffix ();
   test_enum_sets ();
 }
 
diff --git a/gcc/opts.h b/gcc/opts.h
index 398ab7a1b239..348792c884c9 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -20,6 +20,7 @@ along with GCC; see the file COPYING3.  If not see
 #ifndef GCC_OPTS_H
 #define GCC_OPTS_H
 
+#include "rich-location.h"
 #include "obstack.h"
 
 /* Specifies how a switch's VAR_VALUE relates to its FLAG_VAR.  */
@@ -569,4 +570,7 @@ struct switchstr
   bool ordering;
 };
 
+extern label_text
+get_option_url_suffix (int option_index, unsigned lang_mask);
+
 #endif
diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 28529f57ef60..30642a72b756 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -46,6 +46,12 @@ if { [ishost "*-*-cygwin*"] } {
   setenv LANG C.ASCII
 }
 
+# Set TERM to xterm to ensure that URL escapes are disabled.
+# This avoids issues where a diagnostic which could embed a URL
+# is emitted before -fdiagnostics-plain-output is handled, where
+# otherwise the output could be affected by the environment.
+setenv TERM xterm
+
 # Avoid sporadic data-losses with expect
 match_max -d 10000
 
diff --git a/gcc/toplev.cc b/gcc/toplev.cc
index 85450d97a1a9..21302bf2aace 100644
--- a/gcc/toplev.cc
+++ b/gcc/toplev.cc
@@ -1044,12 +1044,13 @@ general_init (const char *argv0, bool init_signals)
   global_dc->m_show_column
     = global_options_init.x_flag_show_column;
   global_dc->m_internal_error = internal_error_function;
+  const unsigned lang_mask = lang_hooks.option_lang_mask ();
   global_dc->set_option_hooks (option_enabled,
 			       &global_options,
 			       option_name,
 			       get_option_url,
-			       lang_hooks.option_lang_mask ());
-  global_dc->set_urlifier (make_gcc_urlifier ());
+			       lang_mask);
+  global_dc->set_urlifier (make_gcc_urlifier (lang_mask));
 
   if (init_signals)
     {
-- 
2.26.3


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

* Re: [PATCH 0/4] v3 of: Option handling: add documentation URLs
  2023-12-14 15:01                     ` [PATCH 0/4] v3 of: " David Malcolm
                                         ` (3 preceding siblings ...)
  2023-12-14 15:01                       ` [PATCH 4/4; v2] options: wire up options-urls.cc into gcc_urlifier David Malcolm
@ 2023-12-15  0:59                       ` Mark Wielaard
  2023-12-15 14:47                         ` David Malcolm
  2024-01-04 14:57                         ` CI for "Option handling: add documentation URLs" David Malcolm
  2023-12-20  0:28                       ` [PATCH 0/4] v3 of: Option handling: add documentation URLs Joseph Myers
  5 siblings, 2 replies; 47+ messages in thread
From: Mark Wielaard @ 2023-12-15  0:59 UTC (permalink / raw)
  To: David Malcolm; +Cc: Joseph Myers, Tobias Burnus, gcc-patches, buildbot

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

Hi David,

On Thu, Dec 14, 2023 at 10:01:39AM -0500, David Malcolm wrote:
> > Once your patch is in please feel free to sent an email to
> > buildbot@sourceware.org
> > https://sourceware.org/mailman/listinfo/buildbot
> > And we'll add the above build steps and update the autotools
> > Containerfile to include the fortran (gfortran?) and d (gdc?) build
> > dependencies.
> 
> Joseph: it seems that we have a way to add CI for this.
> 
> I refreshed the patches and successfully bootstrapped & regrtested them
> on x86_64-pc-linux-gnu; here's the v3 version of them.
> 
> Are these OK for trunk, assuming I followup with adding CI for this?
> (that said, I disappear for the rest of 2023 at the end of this week, so
> I'd work on the CI in early January)

I will be around next week to fixup any CI issues.
But once you commit this we can immediate activate the check.

I have attached a patch for the gcc-autoregen builder to also do
regenerate-opt-urls. Since it is a --disable-bootstrap build and uses
ccache it should take just a few minutes. So can be done on every
commit.

Note that with you patch applied to master it does flag and generate
the attached diff (I assume that is expected).

Cheers,

Mark

[-- Attachment #2: 0001-Add-regenerate-opt-urls-to-gcc-autoregen.patch --]
[-- Type: text/plain, Size: 2985 bytes --]

From 83914698dfb77a85496e93e3faa5de9131347cb8 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Fri, 15 Dec 2023 01:43:27 +0100
Subject: [PATCH] Add regenerate-opt-urls to gcc-autoregen

Add gcc build dependencies and ccacheto Containerfile-autotools.
Add regenerate_opt_urls steps to gcc_autoregen_factory.
---
 builder/containers/Containerfile-autotools |  2 ++
 builder/master.cfg                         | 34 ++++++++++++++++++++++
 2 files changed, 36 insertions(+)

diff --git a/builder/containers/Containerfile-autotools b/builder/containers/Containerfile-autotools
index 1099986..8cc8a22 100644
--- a/builder/containers/Containerfile-autotools
+++ b/builder/containers/Containerfile-autotools
@@ -7,6 +7,8 @@ RUN apt-get update && \
     apt-get upgrade -y && \
     apt-get install -y \
       build-essential libtool perl python3-minimal bash \
+      libmpc-dev libgmp-dev libmpfr-dev gdc texinfo flex \
+      ccache \
       make git \
       gettext \
       m4 pkg-config \
diff --git a/builder/master.cfg b/builder/master.cfg
index 04c54da..0e5ce62 100644
--- a/builder/master.cfg
+++ b/builder/master.cfg
@@ -1200,6 +1200,35 @@ git_diff_step = steps.ShellCommand(
         name="git diff",
         haltOnFailure=True)
 
+# Note that the name of the default workdir is 'build'
+# 'build' is the name of the source checkout (yes, confusing).
+# So this creates 'build/objdir'.
+gcc_build_mkdir_step = steps.ShellCommand(
+        command=['mkdir', '-p', 'objdir'],
+        name='mkdir objdir',
+        haltOnFailure=True)
+
+gcc_configure_opt_urls_step = steps.Configure(
+        workdir='build/objdir',
+        command=["../configure",
+                 "--disable-multilib",
+                 "--disable-bootstrap",
+                 "--enable-languages=c,d,fortran"],
+        name="configure",
+        haltOnFailure=True)
+
+gcc_make_html_step = steps.Compile(
+        workdir='build/objdir',
+        command=['make', util.Interpolate('-j%(prop:ncpus)s'), 'html'],
+        name='make html',
+        haltOnFailure=True)
+
+gcc_make_regenerate_opt_urls_step = steps.Compile(
+        workdir='build/objdir/gcc',
+        command=['make', 'regenerate-opt-urls'],
+        name='make regenerate-opt-urls',
+        haltOnFailure=True)
+
 # Generic make clean step to be run at the end of a build
 make_clean_step = steps.ShellCommand(
         command=["make", "clean"],
@@ -3454,6 +3483,11 @@ gcc_autoregen_factory = util.BuildFactory()
 gcc_autoregen_factory.addStep(gcc_git_step)
 gcc_autoregen_factory.addStep(autoregen_step)
 gcc_autoregen_factory.addStep(git_diff_step)
+gcc_autoregen_factory.addStep(gcc_build_mkdir_step)
+gcc_autoregen_factory.addStep(gcc_configure_opt_urls_step)
+gcc_autoregen_factory.addStep(gcc_make_html_step)
+gcc_autoregen_factory.addStep(gcc_make_regenerate_opt_urls_step)
+gcc_autoregen_factory.addStep(git_diff_step)
 
 gcc_autoregen_builder = util.BuilderConfig(
         name="gcc-autoregen",
-- 
2.39.3


[-- Attachment #3: opt.urls.diff --]
[-- Type: text/plain, Size: 12644 bytes --]

diff --git a/gcc/analyzer/analyzer.opt.urls b/gcc/analyzer/analyzer.opt.urls
index 9f7d33ff434..5fcab720582 100644
--- a/gcc/analyzer/analyzer.opt.urls
+++ b/gcc/analyzer/analyzer.opt.urls
@@ -48,6 +48,9 @@ UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-free-of-non-heap)
 Wanalyzer-imprecise-fp-arithmetic
 UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-imprecise-fp-arithmetic)
 
+Wanalyzer-infinite-loop
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-loop)
+
 Wanalyzer-infinite-recursion
 UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-recursion)
 
@@ -111,6 +114,9 @@ UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-offset)
 Wanalyzer-tainted-size
 UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-size)
 
+Wanalyzer-undefined-behavior-strtok
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-undefined-behavior-strtok)
+
 Wanalyzer-use-after-free
 UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-after-free)
 
@@ -138,6 +144,9 @@ UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-liter
 Wanalyzer-use-of-uninitialized-value
 UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-uninitialized-value)
 
+Wanalyzer-symbol-too-complex
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-symbol-too-complex)
+
 Wanalyzer-too-complex
 UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-too-complex)
 
diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
index 8fccbc77ea3..cb4c2e24685 100644
--- a/gcc/c-family/c.opt.urls
+++ b/gcc/c-family/c.opt.urls
@@ -103,6 +103,9 @@ LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
 Walloca
 UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca)
 
+Walloc-size
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-size)
+
 Walloc-size-larger-than=
 UrlSuffix(gcc/Warning-Options.html#index-Walloc-size-larger-than_003d)
 
@@ -154,8 +157,8 @@ UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlS
 Wbuiltin-macro-redefined
 UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-macro-redefined)
 
-Wc11-c2x-compat
-UrlSuffix(gcc/Warning-Options.html#index-Wc11-c2x-compat)
+Wc11-c23-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc11-c23-compat)
 
 Wc90-c99-compat
 UrlSuffix(gcc/Warning-Options.html#index-Wc90-c99-compat)
@@ -193,6 +196,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-extensions)
 Wc++23-extensions
 UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b23-extensions)
 
+Wc++26-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b26-extensions)
+
 Wcast-function-type
 UrlSuffix(gcc/Warning-Options.html#index-Wcast-function-type)
 
@@ -256,6 +262,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
 Wdeclaration-after-statement
 UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-after-statement)
 
+Wdeclaration-missing-parameter-type
+UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-missing-parameter-type)
+
 Wdelete-incomplete
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-incomplete)
 
@@ -649,6 +658,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-definition)
 Wopenacc-parallelism
 UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
 
+Wopenmp
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp)
+
 Wopenmp-simd
 UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
 
@@ -726,6 +738,9 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register)
 Wreorder
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder)
 
+Wreturn-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-mismatch)
+
 Wreturn-type
 UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
 
@@ -1014,6 +1029,9 @@ UrlSuffix(gcc/Inline.html#index-fno-default-inline)
 fdiagnostics-show-template-tree
 UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-template-tree)
 
+fdiagnostics-all-candidates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fdiagnostics-all-candidates)
+
 fdirectives-only
 UrlSuffix(gcc/Preprocessor-Options.html#index-fdirectives-only)
 
@@ -1068,6 +1086,9 @@ UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu89-inline)
 fhosted
 UrlSuffix(gcc/C-Dialect-Options.html#index-fhosted)
 
+fimmediate-escalation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimmediate-escalation)
+
 ; skipping UrlSuffix for 'fimplement-inlines' due to multiple URLs:
 ;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplement-inlines'
 ;   duplicate: 'gcc/C_002b_002b-Interface.html#index-fno-implement-inlines-1'
@@ -1181,16 +1202,16 @@ fobjc-nilcheck
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-nilcheck)
 
 fopenacc
-UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc)
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenacc)
 
 fopenacc-dim=
 UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
 
 fopenmp
-UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp)
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp)
 
 fopenmp-simd
-UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd)
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-simd)
 
 foperator-names
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-operator-names)
diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
index 407c86018fc..4cb2d7dc628 100644
--- a/gcc/common.opt.urls
+++ b/gcc/common.opt.urls
@@ -123,6 +123,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wframe-larger-than_003d)
 Wfree-nonheap-object
 UrlSuffix(gcc/Warning-Options.html#index-Wfree-nonheap-object)
 
+Whardened
+UrlSuffix(gcc/Warning-Options.html#index-Whardened)
+
 Wimplicit-fallthrough
 UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
 
@@ -540,6 +543,9 @@ UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-colo
 fdiagnostics-color=
 UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
 
+fdiagnostics-json-formatting
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-json-formatting)
+
 fdiagnostics-urls=
 UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-urls)
 
@@ -733,6 +739,9 @@ UrlSuffix(gcc/Optimize-Options.html#index-fstore-merging)
 fguess-branch-probability
 UrlSuffix(gcc/Optimize-Options.html#index-fguess-branch-probability)
 
+fhardened
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardened)
+
 fharden-compares
 UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-compares)
 
@@ -787,6 +796,12 @@ UrlSuffix(gcc/Optimize-Options.html#index-finline-functions-called-once)
 finline-limit=
 UrlSuffix(gcc/Optimize-Options.html#index-finline-limit)
 
+finline-stringops
+UrlSuffix(gcc/Optimize-Options.html#index-finline-stringops)
+
+finline-stringops=
+UrlSuffix(gcc/Optimize-Options.html#index-finline-stringops)
+
 fcf-protection
 UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
 
@@ -1315,6 +1330,21 @@ UrlSuffix(gcc/Optimize-Options.html#index-fstrict-aliasing)
 fstrict-overflow
 UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-overflow)
 
+fstrub=strict
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dstrict)
+
+fstrub=relaxed
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003drelaxed)
+
+fstrub=all
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dall)
+
+fstrub=at-calls
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dat-calls)
+
+fstrub=internal
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dinternal)
+
 fsync-libcalls
 UrlSuffix(gcc/Code-Gen-Options.html#index-fsync-libcalls)
 
diff --git a/gcc/config/aarch64/aarch64.opt.urls b/gcc/config/aarch64/aarch64.opt.urls
index 82882fee064..ab0d26c1857 100644
--- a/gcc/config/aarch64/aarch64.opt.urls
+++ b/gcc/config/aarch64/aarch64.opt.urls
@@ -67,6 +67,9 @@ UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-sqrt)
 mlow-precision-div
 UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-div)
 
+mearly-ra=
+UrlSuffix(gcc/AArch64-Options.html#index-mearly-ra)
+
 msve-vector-bits=
 UrlSuffix(gcc/AArch64-Options.html#index-msve-vector-bits)
 
diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls
index 6ee69e35a61..9b988fd6996 100644
--- a/gcc/config/i386/i386.opt.urls
+++ b/gcc/config/i386/i386.opt.urls
@@ -158,10 +158,10 @@ mvect8-ret-in-mem
 UrlSuffix(gcc/x86-Options.html#index-mvect8-ret-in-mem)
 
 mrecip
-UrlSuffix(gcc/x86-Options.html#index-mrecip-1)
+UrlSuffix(gcc/x86-Options.html#index-mrecip-2)
 
 mrecip=
-UrlSuffix(gcc/x86-Options.html#index-mrecip-1)
+UrlSuffix(gcc/x86-Options.html#index-mrecip-2)
 
 mcld
 UrlSuffix(gcc/x86-Options.html#index-mcld)
@@ -600,3 +600,12 @@ UrlSuffix(gcc/x86-Options.html#index-mapxf)
 musermsr
 UrlSuffix(gcc/x86-Options.html#index-musermsr)
 
+mavx10.1-256
+UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1-256)
+
+mavx10.1-512
+UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1-512)
+
+mavx10.1
+UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1)
+
diff --git a/gcc/config/loongarch/loongarch.opt.urls b/gcc/config/loongarch/loongarch.opt.urls
index fbf0b53b969..c78bbfea2da 100644
--- a/gcc/config/loongarch/loongarch.opt.urls
+++ b/gcc/config/loongarch/loongarch.opt.urls
@@ -51,9 +51,11 @@ UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
 mexplicit-relocs
 UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
 
-; skipping UrlSuffix for 'mrecip' due to finding no URLs
+mrecip
+UrlSuffix(gcc/LoongArch-Options.html#index-mrecip)
 
-; skipping UrlSuffix for 'mrecip=' due to finding no URLs
+mrecip=
+UrlSuffix(gcc/LoongArch-Options.html#index-mrecip)
 
 ; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
 
diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls
index 66838491010..e1ab96658ea 100644
--- a/gcc/config/riscv/riscv.opt.urls
+++ b/gcc/config/riscv/riscv.opt.urls
@@ -74,6 +74,9 @@ UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-offset-2)
 misa-spec=
 UrlSuffix(gcc/RISC-V-Options.html#index-misa-spec)
 
+mmovcc
+UrlSuffix(gcc/RISC-V-Options.html#index-mmovcc)
+
 minline-atomics
 UrlSuffix(gcc/RISC-V-Options.html#index-minline-atomics)
 
diff --git a/gcc/config/rs6000/rs6000.opt.urls b/gcc/config/rs6000/rs6000.opt.urls
index fdc33fc759b..28bf073c6cf 100644
--- a/gcc/config/rs6000/rs6000.opt.urls
+++ b/gcc/config/rs6000/rs6000.opt.urls
@@ -78,10 +78,10 @@ mxl-compat
 UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mxl-compat)
 
 mrecip
-UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip)
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-1)
 
 mrecip=
-UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip)
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-1)
 
 mrecip-precision
 UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-precision)
diff --git a/gcc/fortran/lang.opt.urls b/gcc/fortran/lang.opt.urls
index a7d9bdc142c..e335b42e357 100644
--- a/gcc/fortran/lang.opt.urls
+++ b/gcc/fortran/lang.opt.urls
@@ -82,6 +82,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
 Wopenacc-parallelism
 UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
 
+Wopenmp
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp)
+
 Wopenmp-simd
 UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
 
@@ -107,16 +110,19 @@ ff2c
 LangUrlSuffix_Fortran(gfortran/Code-Gen-Options.html#index-ff2c)
 
 fopenacc
-UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc)
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenacc)
 
 fopenacc-dim=
 UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
 
 fopenmp
-UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp)
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp)
 
 fopenmp-simd
-UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd)
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-simd)
+
+fopenmp-allocators
+LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-allocators)
 
 fpreprocessed
 UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)

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

* Re: [PATCH 0/4] v3 of: Option handling: add documentation URLs
  2023-12-15  0:59                       ` [PATCH 0/4] v3 of: Option handling: add documentation URLs Mark Wielaard
@ 2023-12-15 14:47                         ` David Malcolm
  2024-01-04 14:57                         ` CI for "Option handling: add documentation URLs" David Malcolm
  1 sibling, 0 replies; 47+ messages in thread
From: David Malcolm @ 2023-12-15 14:47 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: Joseph Myers, Tobias Burnus, gcc-patches, buildbot

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

On Fri, 2023-12-15 at 01:59 +0100, Mark Wielaard wrote:
> Hi David,
> 
> On Thu, Dec 14, 2023 at 10:01:39AM -0500, David Malcolm wrote:
> > > Once your patch is in please feel free to sent an email to
> > > buildbot@sourceware.org
> > > https://sourceware.org/mailman/listinfo/buildbot
> > > And we'll add the above build steps and update the autotools
> > > Containerfile to include the fortran (gfortran?) and d (gdc?)
> > > build
> > > dependencies.
> > 
> > Joseph: it seems that we have a way to add CI for this.
> > 
> > I refreshed the patches and successfully bootstrapped & regrtested
> > them
> > on x86_64-pc-linux-gnu; here's the v3 version of them.
> > 
> > Are these OK for trunk, assuming I followup with adding CI for
> > this?
> > (that said, I disappear for the rest of 2023 at the end of this
> > week, so
> > I'd work on the CI in early January)
> 
> I will be around next week to fixup any CI issues.
> But once you commit this we can immediate activate the check.
> 
> I have attached a patch for the gcc-autoregen builder to also do
> regenerate-opt-urls. Since it is a --disable-bootstrap build and uses
> ccache it should take just a few minutes. So can be done on every
> commit.

Thanks - this looks great.

> 
> Note that with you patch applied to master it does flag and generate
> the attached diff (I assume that is expected).

As it happens, it wasn't - the test detected that I messed up when I
regenerated the .opt.urls.  Mea culpa, and I guess that's a win for CI.

I now see that the jit html documentation is failing to build on my
machine [1].  So what I think happened is that I ran "make html"
(without -k), it failed on the jit docs, and I didn't notice, and
regenerated the .opt.urls with an old copy of the texinfo-generated
html for gcc, d, and fortran.

I'm attaching a regenerated version of patch 2 of the kit (regenerated
using 863df360fb6549ae35af9f052343d2578d4d2b63); I checked it by hand
and it includes all the entries your CI script indicated were missing

Dave

[1]v fwiw with ImportError: cannot import name 'environmentfilter' from
'jinja2' (/usr/local/lib64/python3.8/site-packages/jinja2/__init__.py)


[-- Attachment #2: 0001-Add-generated-.opt.urls-files.patch --]
[-- Type: text/x-patch, Size: 282467 bytes --]

From 1c0267872fe04be1ed5094c4dd90d8adcfa5cc2d Mon Sep 17 00:00:00 2001
From: David Malcolm <dmalcolm@redhat.com>
Date: Wed, 8 Nov 2023 18:33:36 -0500
Subject: [PATCH] Add generated .opt.urls files

Changed in v4: regenerated
Changed in v3: regenerated
Changed in v2: the files now contain some lang-specific URLs.

gcc/ada/ChangeLog:
	* gcc-interface/lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/analyzer/ChangeLog:
	* analyzer.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/c-family/ChangeLog:
	* c.opt.urls: New file, autogenerated by regenerate-opt-urls.py.

gcc/ChangeLog:
	* common.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.
	* config/aarch64/aarch64.opt.urls: Likewise.
	* config/alpha/alpha.opt.urls: Likewise.
	* config/alpha/elf.opt.urls: Likewise.
	* config/arc/arc-tables.opt.urls: Likewise.
	* config/arc/arc.opt.urls: Likewise.
	* config/arm/arm-tables.opt.urls: Likewise.
	* config/arm/arm.opt.urls: Likewise.
	* config/arm/vxworks.opt.urls: Likewise.
	* config/avr/avr.opt.urls: Likewise.
	* config/bpf/bpf.opt.urls: Likewise.
	* config/c6x/c6x-tables.opt.urls: Likewise.
	* config/c6x/c6x.opt.urls: Likewise.
	* config/cris/cris.opt.urls: Likewise.
	* config/cris/elf.opt.urls: Likewise.
	* config/csky/csky.opt.urls: Likewise.
	* config/csky/csky_tables.opt.urls: Likewise.
	* config/darwin.opt.urls: Likewise.
	* config/dragonfly.opt.urls: Likewise.
	* config/epiphany/epiphany.opt.urls: Likewise.
	* config/fr30/fr30.opt.urls: Likewise.
	* config/freebsd.opt.urls: Likewise.
	* config/frv/frv.opt.urls: Likewise.
	* config/ft32/ft32.opt.urls: Likewise.
	* config/fused-madd.opt.urls: Likewise.
	* config/g.opt.urls: Likewise.
	* config/gcn/gcn.opt.urls: Likewise.
	* config/gnu-user.opt.urls: Likewise.
	* config/h8300/h8300.opt.urls: Likewise.
	* config/hpux11.opt.urls: Likewise.
	* config/i386/cygming.opt.urls: Likewise.
	* config/i386/cygwin.opt.urls: Likewise.
	* config/i386/djgpp.opt.urls: Likewise.
	* config/i386/i386.opt.urls: Likewise.
	* config/i386/mingw-w64.opt.urls: Likewise.
	* config/i386/mingw.opt.urls: Likewise.
	* config/i386/nto.opt.urls: Likewise.
	* config/ia64/ia64.opt.urls: Likewise.
	* config/ia64/ilp32.opt.urls: Likewise.
	* config/ia64/vms.opt.urls: Likewise.
	* config/iq2000/iq2000.opt.urls: Likewise.
	* config/linux-android.opt.urls: Likewise.
	* config/linux.opt.urls: Likewise.
	* config/lm32/lm32.opt.urls: Likewise.
	* config/loongarch/loongarch.opt.urls: Likewise.
	* config/lynx.opt.urls: Likewise.
	* config/m32c/m32c.opt.urls: Likewise.
	* config/m32r/m32r.opt.urls: Likewise.
	* config/m68k/ieee.opt.urls: Likewise.
	* config/m68k/m68k-tables.opt.urls: Likewise.
	* config/m68k/m68k.opt.urls: Likewise.
	* config/m68k/uclinux.opt.urls: Likewise.
	* config/mcore/mcore.opt.urls: Likewise.
	* config/microblaze/microblaze.opt.urls: Likewise.
	* config/mips/mips-tables.opt.urls: Likewise.
	* config/mips/mips.opt.urls: Likewise.
	* config/mips/sde.opt.urls: Likewise.
	* config/mmix/mmix.opt.urls: Likewise.
	* config/mn10300/mn10300.opt.urls: Likewise.
	* config/moxie/moxie.opt.urls: Likewise.
	* config/msp430/msp430.opt.urls: Likewise.
	* config/nds32/nds32-elf.opt.urls: Likewise.
	* config/nds32/nds32-linux.opt.urls: Likewise.
	* config/nds32/nds32.opt.urls: Likewise.
	* config/netbsd-elf.opt.urls: Likewise.
	* config/netbsd.opt.urls: Likewise.
	* config/nios2/elf.opt.urls: Likewise.
	* config/nios2/nios2.opt.urls: Likewise.
	* config/nvptx/nvptx-gen.opt.urls: Likewise.
	* config/nvptx/nvptx.opt.urls: Likewise.
	* config/openbsd.opt.urls: Likewise.
	* config/or1k/elf.opt.urls: Likewise.
	* config/or1k/or1k.opt.urls: Likewise.
	* config/pa/pa-hpux.opt.urls: Likewise.
	* config/pa/pa-hpux1010.opt.urls: Likewise.
	* config/pa/pa-hpux1111.opt.urls: Likewise.
	* config/pa/pa-hpux1131.opt.urls: Likewise.
	* config/pa/pa.opt.urls: Likewise.
	* config/pa/pa64-hpux.opt.urls: Likewise.
	* config/pdp11/pdp11.opt.urls: Likewise.
	* config/pru/pru.opt.urls: Likewise.
	* config/riscv/riscv.opt.urls: Likewise.
	* config/rl78/rl78.opt.urls: Likewise.
	* config/rpath.opt.urls: Likewise.
	* config/rs6000/476.opt.urls: Likewise.
	* config/rs6000/aix64.opt.urls: Likewise.
	* config/rs6000/darwin.opt.urls: Likewise.
	* config/rs6000/linux64.opt.urls: Likewise.
	* config/rs6000/rs6000-tables.opt.urls: Likewise.
	* config/rs6000/rs6000.opt.urls: Likewise.
	* config/rs6000/sysv4.opt.urls: Likewise.
	* config/rtems.opt.urls: Likewise.
	* config/rx/elf.opt.urls: Likewise.
	* config/rx/rx.opt.urls: Likewise.
	* config/s390/s390.opt.urls: Likewise.
	* config/s390/tpf.opt.urls: Likewise.
	* config/sh/sh.opt.urls: Likewise.
	* config/sh/superh.opt.urls: Likewise.
	* config/sol2.opt.urls: Likewise.
	* config/sparc/long-double-switch.opt.urls: Likewise.
	* config/sparc/sparc.opt.urls: Likewise.
	* config/stormy16/stormy16.opt.urls: Likewise.
	* config/v850/v850.opt.urls: Likewise.
	* config/vax/elf.opt.urls: Likewise.
	* config/vax/vax.opt.urls: Likewise.
	* config/visium/visium.opt.urls: Likewise.
	* config/vms/vms.opt.urls: Likewise.
	* config/vxworks-smp.opt.urls: Likewise.
	* config/vxworks.opt.urls: Likewise.
	* config/xtensa/elf.opt.urls: Likewise.
	* config/xtensa/uclinux.opt.urls: Likewise.
	* config/xtensa/xtensa.opt.urls: Likewise.

gcc/d/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/fortran/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/go/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/lto/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/m2/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/ChangeLog:
	* params.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

gcc/rust/ChangeLog:
	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
 gcc/ada/gcc-interface/lang.opt.urls          |   30 +
 gcc/analyzer/analyzer.opt.urls               |  215 ++
 gcc/c-family/c.opt.urls                      | 1430 ++++++++++++++
 gcc/common.opt.urls                          | 1862 ++++++++++++++++++
 gcc/config/aarch64/aarch64.opt.urls          |   87 +
 gcc/config/alpha/alpha.opt.urls              |   76 +
 gcc/config/alpha/elf.opt.urls                |    2 +
 gcc/config/arc/arc-tables.opt.urls           |    2 +
 gcc/config/arc/arc.opt.urls                  |  260 +++
 gcc/config/arm/arm-tables.opt.urls           |    2 +
 gcc/config/arm/arm.opt.urls                  |  149 ++
 gcc/config/arm/vxworks.opt.urls              |    2 +
 gcc/config/avr/avr.opt.urls                  |   71 +
 gcc/config/bfin/bfin.opt.urls                |   61 +
 gcc/config/bpf/bpf.opt.urls                  |   35 +
 gcc/config/c6x/c6x-tables.opt.urls           |    2 +
 gcc/config/c6x/c6x.opt.urls                  |   18 +
 gcc/config/cris/cris.opt.urls                |   65 +
 gcc/config/cris/elf.opt.urls                 |    8 +
 gcc/config/csky/csky.opt.urls                |  104 +
 gcc/config/csky/csky_tables.opt.urls         |    2 +
 gcc/config/darwin.opt.urls                   |  224 +++
 gcc/config/dragonfly.opt.urls                |    9 +
 gcc/config/epiphany/epiphany.opt.urls        |   52 +
 gcc/config/fr30/fr30.opt.urls                |    8 +
 gcc/config/freebsd.opt.urls                  |    9 +
 gcc/config/frv/frv.opt.urls                  |  111 ++
 gcc/config/ft32/ft32.opt.urls                |   20 +
 gcc/config/fused-madd.opt.urls               |    4 +
 gcc/config/g.opt.urls                        |    5 +
 gcc/config/gcn/gcn.opt.urls                  |   23 +
 gcc/config/gnu-user.opt.urls                 |    9 +
 gcc/config/h8300/h8300.opt.urls              |   29 +
 gcc/config/hpux11.opt.urls                   |    6 +
 gcc/config/i386/cygming.opt.urls             |   30 +
 gcc/config/i386/cygwin.opt.urls              |    6 +
 gcc/config/i386/djgpp.opt.urls               |    2 +
 gcc/config/i386/i386.opt.urls                |  611 ++++++
 gcc/config/i386/mingw-w64.opt.urls           |    5 +
 gcc/config/i386/mingw.opt.urls               |   12 +
 gcc/config/i386/nto.opt.urls                 |    5 +
 gcc/config/ia64/ia64.opt.urls                |  122 ++
 gcc/config/ia64/ilp32.opt.urls               |    8 +
 gcc/config/ia64/vms.opt.urls                 |    2 +
 gcc/config/iq2000/iq2000.opt.urls            |   14 +
 gcc/config/linux-android.opt.urls            |   11 +
 gcc/config/linux.opt.urls                    |   14 +
 gcc/config/lm32/lm32.opt.urls                |   14 +
 gcc/config/loongarch/loongarch.opt.urls      |   66 +
 gcc/config/lynx.opt.urls                     |    5 +
 gcc/config/m32c/m32c.opt.urls                |    8 +
 gcc/config/m32r/m32r.opt.urls                |   27 +
 gcc/config/m68k/ieee.opt.urls                |    4 +
 gcc/config/m68k/m68k-tables.opt.urls         |    2 +
 gcc/config/m68k/m68k.opt.urls                |  107 +
 gcc/config/m68k/uclinux.opt.urls             |    2 +
 gcc/config/mcore/mcore.opt.urls              |   38 +
 gcc/config/microblaze/microblaze.opt.urls    |   59 +
 gcc/config/mips/mips-tables.opt.urls         |    2 +
 gcc/config/mips/mips.opt.urls                |  269 +++
 gcc/config/mips/sde.opt.urls                 |    2 +
 gcc/config/mmix/mmix.opt.urls                |   44 +
 gcc/config/mn10300/mn10300.opt.urls          |   32 +
 gcc/config/moxie/moxie.opt.urls              |   14 +
 gcc/config/msp430/msp430.opt.urls            |   53 +
 gcc/config/nds32/nds32-elf.opt.urls          |    5 +
 gcc/config/nds32/nds32-linux.opt.urls        |    5 +
 gcc/config/nds32/nds32.opt.urls              |   57 +
 gcc/config/netbsd-elf.opt.urls               |    5 +
 gcc/config/netbsd.opt.urls                   |    6 +
 gcc/config/nios2/elf.opt.urls                |   14 +
 gcc/config/nios2/nios2.opt.urls              |   50 +
 gcc/config/nvptx/nvptx-gen.opt.urls          |    2 +
 gcc/config/nvptx/nvptx.opt.urls              |   29 +
 gcc/config/openbsd.opt.urls                  |    6 +
 gcc/config/or1k/elf.opt.urls                 |    8 +
 gcc/config/or1k/or1k.opt.urls                |   46 +
 gcc/config/pa/pa-hpux.opt.urls               |   11 +
 gcc/config/pa/pa-hpux1010.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1111.opt.urls           |    2 +
 gcc/config/pa/pa-hpux1131.opt.urls           |    2 +
 gcc/config/pa/pa.opt.urls                    |   71 +
 gcc/config/pa/pa64-hpux.opt.urls             |    8 +
 gcc/config/pdp11/pdp11.opt.urls              |   41 +
 gcc/config/pru/pru.opt.urls                  |   17 +
 gcc/config/riscv/riscv.opt.urls              |   91 +
 gcc/config/rl78/rl78.opt.urls                |   31 +
 gcc/config/rpath.opt.urls                    |    2 +
 gcc/config/rs6000/476.opt.urls               |    2 +
 gcc/config/rs6000/aix64.opt.urls             |   23 +
 gcc/config/rs6000/darwin.opt.urls            |   14 +
 gcc/config/rs6000/linux64.opt.urls           |    4 +
 gcc/config/rs6000/rs6000-tables.opt.urls     |    2 +
 gcc/config/rs6000/rs6000.opt.urls            |  214 ++
 gcc/config/rs6000/sysv4.opt.urls             |   87 +
 gcc/config/rtems.opt.urls                    |    6 +
 gcc/config/rx/elf.opt.urls                   |   14 +
 gcc/config/rx/rx.opt.urls                    |   54 +
 gcc/config/s390/s390.opt.urls                |   92 +
 gcc/config/s390/tpf.opt.urls                 |    8 +
 gcc/config/sh/sh.opt.urls                    |  174 ++
 gcc/config/sh/superh.opt.urls                |    4 +
 gcc/config/sol2.opt.urls                     |   21 +
 gcc/config/sparc/long-double-switch.opt.urls |    6 +
 gcc/config/sparc/sparc.opt.urls              |  108 +
 gcc/config/stormy16/stormy16.opt.urls        |    5 +
 gcc/config/v850/v850.opt.urls                |   60 +
 gcc/config/vax/elf.opt.urls                  |    2 +
 gcc/config/vax/vax.opt.urls                  |   10 +
 gcc/config/visium/visium.opt.urls            |   29 +
 gcc/config/vms/vms.opt.urls                  |    8 +
 gcc/config/vxworks-smp.opt.urls              |    5 +
 gcc/config/vxworks.opt.urls                  |   20 +
 gcc/config/xtensa/elf.opt.urls               |    5 +
 gcc/config/xtensa/uclinux.opt.urls           |    2 +
 gcc/config/xtensa/xtensa.opt.urls            |   37 +
 gcc/d/lang.opt.urls                          |  223 +++
 gcc/fortran/lang.opt.urls                    |  167 ++
 gcc/go/lang.opt.urls                         |   17 +
 gcc/lto/lang.opt.urls                        |    8 +
 gcc/m2/lang.opt.urls                         |  118 ++
 gcc/params.opt.urls                          |    2 +
 gcc/rust/lang.opt.urls                       |   29 +
 123 files changed, 8673 insertions(+)
 create mode 100644 gcc/ada/gcc-interface/lang.opt.urls
 create mode 100644 gcc/analyzer/analyzer.opt.urls
 create mode 100644 gcc/c-family/c.opt.urls
 create mode 100644 gcc/common.opt.urls
 create mode 100644 gcc/config/aarch64/aarch64.opt.urls
 create mode 100644 gcc/config/alpha/alpha.opt.urls
 create mode 100644 gcc/config/alpha/elf.opt.urls
 create mode 100644 gcc/config/arc/arc-tables.opt.urls
 create mode 100644 gcc/config/arc/arc.opt.urls
 create mode 100644 gcc/config/arm/arm-tables.opt.urls
 create mode 100644 gcc/config/arm/arm.opt.urls
 create mode 100644 gcc/config/arm/vxworks.opt.urls
 create mode 100644 gcc/config/avr/avr.opt.urls
 create mode 100644 gcc/config/bfin/bfin.opt.urls
 create mode 100644 gcc/config/bpf/bpf.opt.urls
 create mode 100644 gcc/config/c6x/c6x-tables.opt.urls
 create mode 100644 gcc/config/c6x/c6x.opt.urls
 create mode 100644 gcc/config/cris/cris.opt.urls
 create mode 100644 gcc/config/cris/elf.opt.urls
 create mode 100644 gcc/config/csky/csky.opt.urls
 create mode 100644 gcc/config/csky/csky_tables.opt.urls
 create mode 100644 gcc/config/darwin.opt.urls
 create mode 100644 gcc/config/dragonfly.opt.urls
 create mode 100644 gcc/config/epiphany/epiphany.opt.urls
 create mode 100644 gcc/config/fr30/fr30.opt.urls
 create mode 100644 gcc/config/freebsd.opt.urls
 create mode 100644 gcc/config/frv/frv.opt.urls
 create mode 100644 gcc/config/ft32/ft32.opt.urls
 create mode 100644 gcc/config/fused-madd.opt.urls
 create mode 100644 gcc/config/g.opt.urls
 create mode 100644 gcc/config/gcn/gcn.opt.urls
 create mode 100644 gcc/config/gnu-user.opt.urls
 create mode 100644 gcc/config/h8300/h8300.opt.urls
 create mode 100644 gcc/config/hpux11.opt.urls
 create mode 100644 gcc/config/i386/cygming.opt.urls
 create mode 100644 gcc/config/i386/cygwin.opt.urls
 create mode 100644 gcc/config/i386/djgpp.opt.urls
 create mode 100644 gcc/config/i386/i386.opt.urls
 create mode 100644 gcc/config/i386/mingw-w64.opt.urls
 create mode 100644 gcc/config/i386/mingw.opt.urls
 create mode 100644 gcc/config/i386/nto.opt.urls
 create mode 100644 gcc/config/ia64/ia64.opt.urls
 create mode 100644 gcc/config/ia64/ilp32.opt.urls
 create mode 100644 gcc/config/ia64/vms.opt.urls
 create mode 100644 gcc/config/iq2000/iq2000.opt.urls
 create mode 100644 gcc/config/linux-android.opt.urls
 create mode 100644 gcc/config/linux.opt.urls
 create mode 100644 gcc/config/lm32/lm32.opt.urls
 create mode 100644 gcc/config/loongarch/loongarch.opt.urls
 create mode 100644 gcc/config/lynx.opt.urls
 create mode 100644 gcc/config/m32c/m32c.opt.urls
 create mode 100644 gcc/config/m32r/m32r.opt.urls
 create mode 100644 gcc/config/m68k/ieee.opt.urls
 create mode 100644 gcc/config/m68k/m68k-tables.opt.urls
 create mode 100644 gcc/config/m68k/m68k.opt.urls
 create mode 100644 gcc/config/m68k/uclinux.opt.urls
 create mode 100644 gcc/config/mcore/mcore.opt.urls
 create mode 100644 gcc/config/microblaze/microblaze.opt.urls
 create mode 100644 gcc/config/mips/mips-tables.opt.urls
 create mode 100644 gcc/config/mips/mips.opt.urls
 create mode 100644 gcc/config/mips/sde.opt.urls
 create mode 100644 gcc/config/mmix/mmix.opt.urls
 create mode 100644 gcc/config/mn10300/mn10300.opt.urls
 create mode 100644 gcc/config/moxie/moxie.opt.urls
 create mode 100644 gcc/config/msp430/msp430.opt.urls
 create mode 100644 gcc/config/nds32/nds32-elf.opt.urls
 create mode 100644 gcc/config/nds32/nds32-linux.opt.urls
 create mode 100644 gcc/config/nds32/nds32.opt.urls
 create mode 100644 gcc/config/netbsd-elf.opt.urls
 create mode 100644 gcc/config/netbsd.opt.urls
 create mode 100644 gcc/config/nios2/elf.opt.urls
 create mode 100644 gcc/config/nios2/nios2.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx-gen.opt.urls
 create mode 100644 gcc/config/nvptx/nvptx.opt.urls
 create mode 100644 gcc/config/openbsd.opt.urls
 create mode 100644 gcc/config/or1k/elf.opt.urls
 create mode 100644 gcc/config/or1k/or1k.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1010.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1111.opt.urls
 create mode 100644 gcc/config/pa/pa-hpux1131.opt.urls
 create mode 100644 gcc/config/pa/pa.opt.urls
 create mode 100644 gcc/config/pa/pa64-hpux.opt.urls
 create mode 100644 gcc/config/pdp11/pdp11.opt.urls
 create mode 100644 gcc/config/pru/pru.opt.urls
 create mode 100644 gcc/config/riscv/riscv.opt.urls
 create mode 100644 gcc/config/rl78/rl78.opt.urls
 create mode 100644 gcc/config/rpath.opt.urls
 create mode 100644 gcc/config/rs6000/476.opt.urls
 create mode 100644 gcc/config/rs6000/aix64.opt.urls
 create mode 100644 gcc/config/rs6000/darwin.opt.urls
 create mode 100644 gcc/config/rs6000/linux64.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000-tables.opt.urls
 create mode 100644 gcc/config/rs6000/rs6000.opt.urls
 create mode 100644 gcc/config/rs6000/sysv4.opt.urls
 create mode 100644 gcc/config/rtems.opt.urls
 create mode 100644 gcc/config/rx/elf.opt.urls
 create mode 100644 gcc/config/rx/rx.opt.urls
 create mode 100644 gcc/config/s390/s390.opt.urls
 create mode 100644 gcc/config/s390/tpf.opt.urls
 create mode 100644 gcc/config/sh/sh.opt.urls
 create mode 100644 gcc/config/sh/superh.opt.urls
 create mode 100644 gcc/config/sol2.opt.urls
 create mode 100644 gcc/config/sparc/long-double-switch.opt.urls
 create mode 100644 gcc/config/sparc/sparc.opt.urls
 create mode 100644 gcc/config/stormy16/stormy16.opt.urls
 create mode 100644 gcc/config/v850/v850.opt.urls
 create mode 100644 gcc/config/vax/elf.opt.urls
 create mode 100644 gcc/config/vax/vax.opt.urls
 create mode 100644 gcc/config/visium/visium.opt.urls
 create mode 100644 gcc/config/vms/vms.opt.urls
 create mode 100644 gcc/config/vxworks-smp.opt.urls
 create mode 100644 gcc/config/vxworks.opt.urls
 create mode 100644 gcc/config/xtensa/elf.opt.urls
 create mode 100644 gcc/config/xtensa/uclinux.opt.urls
 create mode 100644 gcc/config/xtensa/xtensa.opt.urls
 create mode 100644 gcc/d/lang.opt.urls
 create mode 100644 gcc/fortran/lang.opt.urls
 create mode 100644 gcc/go/lang.opt.urls
 create mode 100644 gcc/lto/lang.opt.urls
 create mode 100644 gcc/m2/lang.opt.urls
 create mode 100644 gcc/params.opt.urls
 create mode 100644 gcc/rust/lang.opt.urls

diff --git a/gcc/ada/gcc-interface/lang.opt.urls b/gcc/ada/gcc-interface/lang.opt.urls
new file mode 100644
index 000000000000..7913bcb5558d
--- /dev/null
+++ b/gcc/ada/gcc-interface/lang.opt.urls
@@ -0,0 +1,30 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/ada/gcc-interface/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+nostdlib
+UrlSuffix(gcc/Link-Options.html#index-nostdlib)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+; skipping UrlSuffix for 'fsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
+
+; skipping UrlSuffix for 'funsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'
+
diff --git a/gcc/analyzer/analyzer.opt.urls b/gcc/analyzer/analyzer.opt.urls
new file mode 100644
index 000000000000..5fcab7205823
--- /dev/null
+++ b/gcc/analyzer/analyzer.opt.urls
@@ -0,0 +1,215 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/analyzer/analyzer.opt and generated HTML
+
+Wanalyzer-allocation-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-allocation-size)
+
+Wanalyzer-deref-before-check
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-deref-before-check)
+
+Wanalyzer-double-fclose
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-fclose)
+
+Wanalyzer-double-free
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-double-free)
+
+Wanalyzer-exposure-through-output-file
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-output-file)
+
+Wanalyzer-exposure-through-uninit-copy
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-uninit-copy)
+
+Wanalyzer-fd-access-mode-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-access-mode-mismatch)
+
+Wanalyzer-fd-double-close
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-double-close)
+
+Wanalyzer-fd-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-leak)
+
+Wanalyzer-fd-phase-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-phase-mismatch)
+
+Wanalyzer-fd-type-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-type-mismatch)
+
+Wanalyzer-fd-use-after-close
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-after-close)
+
+Wanalyzer-fd-use-without-check
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-without-check)
+
+Wanalyzer-file-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-file-leak)
+
+Wanalyzer-free-of-non-heap
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-free-of-non-heap)
+
+Wanalyzer-imprecise-fp-arithmetic
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-imprecise-fp-arithmetic)
+
+Wanalyzer-infinite-loop
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-loop)
+
+Wanalyzer-infinite-recursion
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-recursion)
+
+Wanalyzer-jump-through-null
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-jump-through-null)
+
+Wanalyzer-malloc-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-malloc-leak)
+
+Wanalyzer-mismatching-deallocation
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-mismatching-deallocation)
+
+Wanalyzer-out-of-bounds
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-out-of-bounds)
+
+Wanalyzer-overlapping-buffers
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-overlapping-buffers)
+
+Wanalyzer-possible-null-argument
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-argument)
+
+Wanalyzer-possible-null-dereference
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-possible-null-dereference)
+
+Wanalyzer-unsafe-call-within-signal-handler
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-unsafe-call-within-signal-handler)
+
+Wanalyzer-null-argument
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-argument)
+
+Wanalyzer-null-dereference
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-null-dereference)
+
+Wanalyzer-putenv-of-auto-var
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-putenv-of-auto-var)
+
+Wanalyzer-shift-count-negative
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-negative)
+
+Wanalyzer-shift-count-overflow
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-shift-count-overflow)
+
+Wanalyzer-stale-setjmp-buffer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-stale-setjmp-buffer)
+
+Wanalyzer-tainted-allocation-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-allocation-size)
+
+Wanalyzer-tainted-array-index
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-array-index)
+
+Wanalyzer-tainted-assertion
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-assertion)
+
+Wanalyzer-tainted-divisor
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-divisor)
+
+Wanalyzer-tainted-offset
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-offset)
+
+Wanalyzer-tainted-size
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-size)
+
+Wanalyzer-undefined-behavior-strtok
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-undefined-behavior-strtok)
+
+Wanalyzer-use-after-free
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-after-free)
+
+Wanalyzer-use-of-pointer-in-stale-stack-frame
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-pointer-in-stale-stack-frame)
+
+Wanalyzer-va-arg-type-mismatch
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-arg-type-mismatch)
+
+Wanalyzer-va-list-exhausted
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-exhausted)
+
+Wanalyzer-va-list-leak
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-leak)
+
+Wanalyzer-va-list-use-after-va-end
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-use-after-va-end)
+
+Wanalyzer-write-to-const
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-const)
+
+Wanalyzer-write-to-string-literal
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-literal)
+
+Wanalyzer-use-of-uninitialized-value
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-uninitialized-value)
+
+Wanalyzer-symbol-too-complex
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-symbol-too-complex)
+
+Wanalyzer-too-complex
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-Wanalyzer-too-complex)
+
+fanalyzer-checker=
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-checker)
+
+fanalyzer-debug-text-art
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-debug-text-art)
+
+fanalyzer-fine-grained
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-fine-grained)
+
+fanalyzer-feasibility
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-feasibility)
+
+fanalyzer-show-duplicate-count
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-duplicate-count)
+
+fanalyzer-state-purge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-purge)
+
+fanalyzer-state-merge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-state-merge)
+
+fanalyzer-suppress-followups
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-suppress-followups)
+
+fanalyzer-transitivity
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-transitivity)
+
+fanalyzer-show-events-in-system-headers
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-show-events-in-system-headers)
+
+fanalyzer-call-summaries
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-call-summaries)
+
+fanalyzer-undo-inlining
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer-undo-inlining)
+
+fdump-analyzer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer)
+
+fdump-analyzer-stderr
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-stderr)
+
+fdump-analyzer-callgraph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-callgraph)
+
+fdump-analyzer-exploded-graph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-graph)
+
+fdump-analyzer-exploded-paths
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-exploded-paths)
+
+fdump-analyzer-json
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-json)
+
+fdump-analyzer-state-purge
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-state-purge)
+
+fdump-analyzer-supergraph
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-supergraph)
+
+fdump-analyzer-untracked
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fdump-analyzer-untracked)
+
diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
new file mode 100644
index 000000000000..cb4c2e246854
--- /dev/null
+++ b/gcc/c-family/c.opt.urls
@@ -0,0 +1,1430 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/c-family/c.opt and generated HTML
+
+A
+UrlSuffix(gcc/Preprocessor-Options.html#index-A)
+
+C
+UrlSuffix(gcc/Preprocessor-Options.html#index-C)
+
+CC
+UrlSuffix(gcc/Preprocessor-Options.html#index-CC)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+F
+UrlSuffix(gcc/Darwin-Options.html#index-F)
+
+fgimple
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgimple)
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+Mno-modules
+UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+fdeps-format=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-format)
+
+fdeps-file=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-file)
+
+fdeps-target=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fdeps-target)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+U
+UrlSuffix(gcc/Preprocessor-Options.html#index-U)
+
+Wabi
+UrlSuffix(gcc/Warning-Options.html#index-Wabi)
+
+Wabi=
+UrlSuffix(gcc/Warning-Options.html#index-Wabi)
+
+Wabi-tag
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wabi-tag)
+
+Wabsolute-value
+UrlSuffix(gcc/Warning-Options.html#index-Wabsolute-value)
+
+Waddress
+UrlSuffix(gcc/Warning-Options.html#index-Waddress)
+
+Waligned-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
+
+Waligned-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Walloca
+UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca)
+
+Walloc-size
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-size)
+
+Walloc-size-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-size-larger-than_003d)
+
+Walloc-zero
+UrlSuffix(gcc/Warning-Options.html#index-Walloc-zero)
+
+Walloca-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
+
+Warray-bounds=
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Warray-compare
+UrlSuffix(gcc/Warning-Options.html#index-Warray-compare)
+
+Warray-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+
+Warray-parameter=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+
+Wzero-length-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
+
+Wassign-intercept
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wassign-intercept)
+
+Wbad-function-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wbad-function-cast)
+
+Wbidi-chars
+UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars)
+
+Wbidi-chars=
+UrlSuffix(gcc/Warning-Options.html#index-Wbidi-chars)
+
+Wbool-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wbool-compare)
+
+Wbool-operation
+UrlSuffix(gcc/Warning-Options.html#index-Wbool-operation)
+
+Wframe-address
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
+
+Wbuiltin-declaration-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
+
+Wbuiltin-macro-redefined
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-macro-redefined)
+
+Wc11-c23-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc11-c23-compat)
+
+Wc90-c99-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc90-c99-compat)
+
+Wc99-c11-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc99-c11-compat)
+
+Wc++-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b-compat)
+
+Wc++11-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-compat)
+
+Wc++14-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-compat)
+
+Wc++17-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-compat)
+
+Wc++20-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-compat)
+
+Wc++11-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b11-extensions)
+
+Wc++14-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b14-extensions)
+
+Wc++17-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b17-extensions)
+
+Wc++20-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b20-extensions)
+
+Wc++23-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b23-extensions)
+
+Wc++26-extensions
+UrlSuffix(gcc/Warning-Options.html#index-Wc_002b_002b26-extensions)
+
+Wcast-function-type
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-function-type)
+
+Wcast-qual
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-qual)
+
+Wcatch-value
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
+
+Wcatch-value=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
+
+Wchar-subscripts
+UrlSuffix(gcc/Warning-Options.html#index-Wchar-subscripts)
+
+Wclobbered
+UrlSuffix(gcc/Warning-Options.html#index-Wclobbered)
+
+Wcomma-subscript
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcomma-subscript)
+
+Wcomment
+UrlSuffix(gcc/Warning-Options.html#index-Wcomment)
+
+Wcomments
+UrlSuffix(gcc/Warning-Options.html#index-Wcomments)
+
+Wconditionally-supported
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconditionally-supported)
+
+Wconversion
+UrlSuffix(gcc/Warning-Options.html#index-Wconversion)
+
+Wconversion-null
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wconversion-null)
+
+Wcpp
+UrlSuffix(gcc/Warning-Options.html#index-Wcpp)
+
+Wctad-maybe-unsupported
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctad-maybe-unsupported)
+
+Wctor-dtor-privacy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wctor-dtor-privacy)
+
+Wdangling-else
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-else)
+
+Wdangling-pointer
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer)
+
+Wdangling-pointer=
+UrlSuffix(gcc/Warning-Options.html#index-Wdangling-pointer)
+
+Wdangling-reference
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference)
+
+Wdate-time
+UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
+
+Wdeclaration-after-statement
+UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-after-statement)
+
+Wdeclaration-missing-parameter-type
+UrlSuffix(gcc/Warning-Options.html#index-Wdeclaration-missing-parameter-type)
+
+Wdelete-incomplete
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-incomplete)
+
+Wdelete-non-virtual-dtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdelete-non-virtual-dtor)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Wdeprecated-copy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-copy)
+
+Wdeprecated-enum-enum-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-enum-conversion)
+
+Wdeprecated-enum-float-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wdeprecated-enum-float-conversion)
+
+Wdesignated-init
+UrlSuffix(gcc/Warning-Options.html#index-Wdesignated-init)
+
+Wdiscarded-array-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-array-qualifiers)
+
+Wdiscarded-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-qualifiers)
+
+Wdiv-by-zero
+UrlSuffix(gcc/Warning-Options.html#index-Wdiv-by-zero)
+
+Wduplicated-branches
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-branches)
+
+Wduplicated-cond
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-cond)
+
+Weffc++
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Weffc_002b_002b)
+
+Wempty-body
+UrlSuffix(gcc/Warning-Options.html#index-Wempty-body)
+
+Wendif-labels
+UrlSuffix(gcc/Warning-Options.html#index-Wendif-labels)
+
+Wenum-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-compare)
+
+Wenum-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-conversion)
+
+Wenum-int-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wenum-int-mismatch)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wexceptions
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wexceptions)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wextra-semi
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wextra-semi)
+
+Wfloat-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wfloat-conversion)
+
+Wfloat-equal
+UrlSuffix(gcc/Warning-Options.html#index-Wfloat-equal)
+
+Wformat
+UrlSuffix(gcc/Warning-Options.html#index-Wformat)
+
+Wformat-contains-nul
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-contains-nul)
+
+Wformat-extra-args
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-extra-args)
+
+Wformat-nonliteral
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-nonliteral)
+
+Wformat-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
+Wformat-security
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-security)
+
+Wformat-signedness
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-signedness)
+
+Wformat-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
+Wformat-y2k
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-y2k)
+
+Wformat-zero-length
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-zero-length)
+
+Wformat=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat)
+
+Wformat-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
+Wformat-truncation=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
+Wflex-array-member-not-at-end
+UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+
+Wif-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned)
+
+Wignored-qualifiers
+UrlSuffix(gcc/Warning-Options.html#index-Wignored-qualifiers)
+
+Wignored-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wignored-attributes)
+
+Winaccessible-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winaccessible-base)
+
+Wincompatible-pointer-types
+UrlSuffix(gcc/Warning-Options.html#index-Wincompatible-pointer-types)
+
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
+Waddress-of-packed-member
+UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
+
+Winit-self
+UrlSuffix(gcc/Warning-Options.html#index-Winit-self)
+
+Winit-list-lifetime
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winit-list-lifetime)
+
+Winterference-size
+UrlSuffix(gcc/Warning-Options.html#index-Winterference-size)
+
+Wimplicit
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wdouble-promotion
+UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
+
+Wexpansion-to-defined
+UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
+
+Wimplicit-function-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
+
+Wimplicit-int
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
+
+Winherited-variadic-ctor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winherited-variadic-ctor)
+
+Wint-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wint-conversion)
+
+Wint-in-bool-context
+UrlSuffix(gcc/Warning-Options.html#index-Wint-in-bool-context)
+
+Wint-to-pointer-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wint-to-pointer-cast)
+
+Winvalid-constexpr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-constexpr)
+
+Winvalid-offsetof
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-offsetof)
+
+Winvalid-pch
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-pch)
+
+Winvalid-utf8
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-utf8)
+
+Wjump-misses-init
+UrlSuffix(gcc/Warning-Options.html#index-Wjump-misses-init)
+
+Wliteral-suffix
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wliteral-suffix)
+
+Wlogical-op
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
+
+Wlogical-not-parentheses
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-not-parentheses)
+
+Wlong-long
+UrlSuffix(gcc/Warning-Options.html#index-Wlong-long)
+
+Wmain
+UrlSuffix(gcc/Warning-Options.html#index-Wmain)
+
+Wmain
+UrlSuffix(gcc/Warning-Options.html#index-Wmain)
+
+Wmemset-transposed-args
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+
+Wmemset-elt-size
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-elt-size)
+
+Wmisleading-indentation
+UrlSuffix(gcc/Warning-Options.html#index-Wmisleading-indentation)
+
+Wmismatched-dealloc
+UrlSuffix(gcc/Warning-Options.html#index-Wmismatched-dealloc)
+
+Wmismatched-new-delete
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete)
+
+Wmismatched-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-tags)
+
+Wmissing-braces
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-braces)
+
+Wmissing-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-declarations)
+
+Wmissing-field-initializers
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-field-initializers)
+
+Wmissing-requires
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
+
+Wmissing-template-keyword
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
+
+Wmultistatement-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
+
+Wmultiple-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
+
+Wnamespaces
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
+
+Wnrvo
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
+
+Wpacked-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
+
+Wrange-loop-construct
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
+
+Wredundant-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
+
+Wsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
+
+Wsizeof-pointer-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
+
+Wsizeof-array-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
+
+Wsizeof-pointer-memaccess
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
+
+Wsizeof-array-argument
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
+
+Wstring-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
+
+Wstringop-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overread
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
+
+Wstringop-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
+
+Wstrict-flex-arrays
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
+
+Wsuggest-attribute=format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
+
+Wsuggest-override
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
+
+Wswitch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
+
+Wswitch-default
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
+
+Wswitch-enum
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
+
+Wswitch-bool
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
+
+Wswitch-outside-range
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
+
+Wtemplates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
+
+Wmissing-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
+
+Wmissing-format-attribute
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-format-attribute)
+
+Wmissing-include-dirs
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
+
+Wmissing-parameter-type
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-parameter-type)
+
+Wmissing-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-prototypes)
+
+Wmissing-variable-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-variable-declarations)
+
+Wmultichar
+UrlSuffix(gcc/Warning-Options.html#index-Wmultichar)
+
+Wnarrowing
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnarrowing)
+
+Wnested-externs
+UrlSuffix(gcc/Warning-Options.html#index-Wnested-externs)
+
+Wnoexcept
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept)
+
+Wnoexcept-type
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept-type)
+
+Wnon-template-friend
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-template-friend)
+
+Wclass-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
+
+Wclass-memaccess
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
+
+Wnon-virtual-dtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-virtual-dtor)
+
+Wnonnull
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull)
+
+Wnonnull
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull)
+
+Wnonnull-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare)
+
+Wnormalized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized)
+
+Wnormalized=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-normalized)
+
+Wobjc-root-class
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wobjc-root-class)
+
+Wold-style-cast
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-old-style-cast)
+
+Wold-style-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-declaration)
+
+Wold-style-definition
+UrlSuffix(gcc/Warning-Options.html#index-Wno-old-style-definition)
+
+Wopenacc-parallelism
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
+
+Wopenmp
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp)
+
+Wopenmp-simd
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
+
+Woverlength-strings
+UrlSuffix(gcc/Warning-Options.html#index-Wno-overlength-strings)
+
+Woverloaded-virtual
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual)
+
+Woverloaded-virtual=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-overloaded-virtual)
+
+Woverride-init
+UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init)
+
+Woverride-init-side-effects
+UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init-side-effects)
+
+Wpacked-bitfield-compat
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-bitfield-compat)
+
+Wparentheses
+UrlSuffix(gcc/Warning-Options.html#index-Wno-parentheses)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wpessimizing-move
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-pessimizing-move)
+
+; skipping UrlSuffix for 'Wpmf-conversions' due to multiple URLs:
+;   duplicate: 'gcc/Bound-member-functions.html#index-Wno-pmf-conversions-1'
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-Wno-pmf-conversions'
+
+; skipping UrlSuffix for 'Wpointer-arith' due to multiple URLs:
+;   duplicate: 'gcc/Pointer-Arith.html#index-Wpointer-arith-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wno-pointer-arith'
+
+Wpointer-sign
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-sign)
+
+Wpointer-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-compare)
+
+Wpointer-to-int-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pointer-to-int-cast)
+
+Wpragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pragmas)
+
+Wprio-ctor-dtor
+UrlSuffix(gcc/Warning-Options.html#index-Wno-prio-ctor-dtor)
+
+Wproperty-assign-default
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-property-assign-default)
+
+Wprotocol
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-protocol)
+
+Wplacement-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wplacement-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wredundant-decls
+UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
+
+Wredundant-move
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-move)
+
+Wregister
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register)
+
+Wreorder
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder)
+
+Wreturn-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-mismatch)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wscalar-storage-order
+UrlSuffix(gcc/Warning-Options.html#index-Wno-scalar-storage-order)
+
+Wselector
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-selector)
+
+Wself-move
+UrlSuffix(gcc/Warning-Options.html#index-Wno-self-move)
+
+Wsequence-point
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sequence-point)
+
+Wshadow-ivar
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow-ivar)
+
+Wshift-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow)
+
+Wshift-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-overflow)
+
+Wshift-count-negative
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-negative)
+
+Wshift-count-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-overflow)
+
+Wshift-negative-value
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-negative-value)
+
+Warith-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
+
+Wsign-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
+
+Wsign-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
+
+Wsign-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-conversion)
+
+Wsign-promo
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sign-promo)
+
+Wstrict-null-sentinel
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+
+Wstrict-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+
+Wstrict-aliasing=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wstrict-selector-match
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-strict-selector-match)
+
+Wsync-nand
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sync-nand)
+
+Wsystem-headers
+UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
+
+Wtautological-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-tautological-compare)
+
+Wterminate
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-terminate)
+
+Wtraditional
+UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional)
+
+Wtraditional-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Wno-traditional-conversion)
+
+Wtrigraphs
+UrlSuffix(gcc/Warning-Options.html#index-Wtrigraphs)
+
+Wundeclared-selector
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-undeclared-selector)
+
+Wundef
+UrlSuffix(gcc/Warning-Options.html#index-Wno-undef)
+
+Wunicode
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unicode)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wunknown-pragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
+
+Wunsuffixed-float-constants
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unsuffixed-float-constants)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+Wunused-local-typedefs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-local-typedefs)
+
+Wunused-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wunused-macros)
+
+Wunused-result
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wuse-after-free=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wvariadic-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wno-variadic-macros)
+
+Wvarargs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-varargs)
+
+Wvexing-parse
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-vexing-parse)
+
+Wvla
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla)
+
+Wvla-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-larger-than)
+
+Wvla-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vla-parameter)
+
+Wvolatile
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-volatile)
+
+Wvolatile-register-var
+UrlSuffix(gcc/Warning-Options.html#index-Wno-volatile-register-var)
+
+Wvirtual-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-inheritance)
+
+Wvirtual-move-assign
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
+
+Wwrite-strings
+UrlSuffix(gcc/Warning-Options.html#index-Wno-write-strings)
+
+Wxor-used-as-pow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-xor-used-as-pow)
+
+Wzero-as-null-pointer-constant
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-zero-as-null-pointer-constant)
+
+Wuseless-cast
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-useless-cast)
+
+Wsubobject-linkage
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
+
+Welaborated-enum-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
+
+Wduplicate-decl-specifier
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
+
+Wrestrict
+UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+
+; skipping UrlSuffix for 'ansi' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
+;   duplicate: 'gcc/Non-bugs.html#index-ansi-3'
+;   duplicate: 'gcc/Other-Builtins.html#index-ansi-2'
+;   duplicate: 'gcc/Standards.html#index-ansi'
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+fabi-compat-version=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-compat-version)
+
+faccess-control
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faccess-control)
+
+fada-spec-parent=
+UrlSuffix(gcc/Overall-Options.html#index-fada-spec-parent)
+
+faligned-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new)
+
+faligned-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-faligned-new)
+
+fasm
+UrlSuffix(gcc/C-Dialect-Options.html#index-fasm)
+
+; skipping UrlSuffix for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
+;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
+;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
+; skipping LangUrlSuffix_D for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gdc/Other-Builtins.html#index-fno-builtin-1'
+;   duplicate: 'gdc/Runtime-Options.html#index-fbuiltin'
+
+fcanonical-system-headers
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-canonical-system-headers)
+
+fchar8_t
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fchar8_005ft)
+
+fconcepts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts)
+
+fconcepts-ts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconcepts-ts)
+
+fcond-mismatch
+UrlSuffix(gcc/C-Dialect-Options.html#index-fcond-mismatch)
+
+fconstant-string-class=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fconstant-string-class)
+
+fconstexpr-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-depth)
+
+fconstexpr-cache-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-cache-depth)
+
+fconstexpr-fp-except
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-fp-except)
+
+fconstexpr-loop-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-loop-limit)
+
+fconstexpr-ops-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fconstexpr-ops-limit)
+
+fcontracts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontracts)
+
+fcontract-assumption-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-assumption-mode)
+
+fcontract-build-level=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-build-level)
+
+fcontract-strict-declarations=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-strict-declarations)
+
+fcontract-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-mode)
+
+fcontract-continuation-mode=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-continuation-mode)
+
+fcontract-role=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcontract-role)
+
+fcoroutines
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcoroutines)
+
+fdebug-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-fdebug-cpp)
+
+fdeclone-ctor-dtor
+UrlSuffix(gcc/Optimize-Options.html#index-fdeclone-ctor-dtor)
+
+fdefault-inline
+UrlSuffix(gcc/Inline.html#index-fno-default-inline)
+
+fdiagnostics-show-template-tree
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-template-tree)
+
+fdiagnostics-all-candidates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fdiagnostics-all-candidates)
+
+fdirectives-only
+UrlSuffix(gcc/Preprocessor-Options.html#index-fdirectives-only)
+
+; skipping UrlSuffix for 'fdollars-in-identifiers' due to multiple URLs:
+;   duplicate: 'gcc/Interoperation.html#index-fdollars-in-identifiers-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-fdollars-in-identifiers'
+
+fmacro-prefix-map=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fmacro-prefix-map)
+
+fdump-ada-spec
+UrlSuffix(gcc/Overall-Options.html#index-fdump-ada-spec)
+
+felide-constructors
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-felide-constructors)
+
+felide-type
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-felide-type)
+
+fenforce-eh-specs
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fenforce-eh-specs)
+
+fexec-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fexec-charset)
+
+fextended-identifiers
+UrlSuffix(gcc/Preprocessor-Options.html#index-fextended-identifiers)
+
+finput-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-finput-charset)
+
+fextern-tls-init
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fextern-tls-init)
+
+ffold-simple-inlines
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ffold-simple-inlines)
+
+; skipping UrlSuffix for 'ffreestanding' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ffreestanding-1'
+;   duplicate: 'gcc/Standards.html#index-ffreestanding'
+;   duplicate: 'gcc/Warning-Options.html#index-ffreestanding-2'
+
+fgnu-keywords
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fgnu-keywords)
+
+fgnu-runtime
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fgnu-runtime)
+
+fgnu89-inline
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu89-inline)
+
+fhosted
+UrlSuffix(gcc/C-Dialect-Options.html#index-fhosted)
+
+fimmediate-escalation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimmediate-escalation)
+
+; skipping UrlSuffix for 'fimplement-inlines' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplement-inlines'
+;   duplicate: 'gcc/C_002b_002b-Interface.html#index-fno-implement-inlines-1'
+
+fimplicit-constexpr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-constexpr)
+
+fimplicit-inline-templates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-inline-templates)
+
+; skipping UrlSuffix for 'fimplicit-templates' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fimplicit-templates'
+;   duplicate: 'gcc/Template-Instantiation.html#index-fno-implicit-templates-1'
+
+fnew-inheriting-ctors
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-inheriting-ctors)
+
+fkeep-inline-dllexport
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-inline-dllexport)
+
+flax-vector-conversions
+UrlSuffix(gcc/C-Dialect-Options.html#index-flax-vector-conversions)
+
+fmodules-ts
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodules-ts)
+
+fmodule-header
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header)
+
+fmodule-header=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-header)
+
+fmodule-implicit-inline
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-implicit-inline)
+
+fmodule-only
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-only)
+
+fmodule-mapper=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-mapper)
+
+fmodule-lazy
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fmodule-lazy)
+
+Winvalid-imported-macros
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winvalid-imported-macros)
+
+Wcompare-distinct-pointer-types
+UrlSuffix(gcc/Warning-Options.html#index-Wcompare-distinct-pointer-types)
+
+flang-info-include-translate
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate)
+
+flang-info-include-translate-not
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate-not)
+
+flang-info-include-translate=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-include-translate)
+
+flang-info-module-cmi
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi)
+
+flang-info-module-cmi=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-flang-info-module-cmi)
+
+fmax-include-depth=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fmax-include-depth)
+
+; skipping UrlSuffix for 'fms-extensions' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fms-extensions'
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-fms-extensions-1'
+;   duplicate: 'gcc/Unnamed-Fields.html#index-fms-extensions-2'
+
+fnew-ttp-matching
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnew-ttp-matching)
+
+fnext-runtime
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnext-runtime)
+
+fnil-receivers
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fnil-receivers)
+
+flocal-ivars
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-flocal-ivars)
+
+fivar-visibility=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fivar-visibility)
+
+fnonansi-builtins
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-nonansi-builtins)
+
+fnothrow-opt
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fnothrow-opt)
+
+fobjc-abi-version=
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-abi-version)
+
+fobjc-call-cxx-cdtors
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-call-cxx-cdtors)
+
+fobjc-direct-dispatch
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-direct-dispatch)
+
+fobjc-exceptions
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-exceptions)
+
+fobjc-gc
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-gc)
+
+fobjc-nilcheck
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fobjc-nilcheck)
+
+fopenacc
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenacc)
+
+fopenacc-dim=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
+
+fopenmp
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp)
+
+fopenmp-simd
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-simd)
+
+foperator-names
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-operator-names)
+
+foptional-diags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-optional-diags)
+
+fpch-deps
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-deps)
+
+fpch-preprocess
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpch-preprocess)
+
+fpermissive
+UrlSuffix(gcc/Warning-Options.html#index-fpermissive)
+
+; skipping UrlSuffix for 'fplan9-extensions' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fplan9-extensions'
+;   duplicate: 'gcc/Unnamed-Fields.html#index-fplan9-extensions-1'
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+ftrack-macro-expansion
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion)
+
+ftrack-macro-expansion=
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftrack-macro-expansion)
+
+fpretty-templates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-pretty-templates)
+
+fprintf-return-value
+UrlSuffix(gcc/Optimize-Options.html#index-fno-printf-return-value)
+
+freplace-objc-classes
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-freplace-objc-classes)
+
+frtti
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti) LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-rtti)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+fshort-wchar
+UrlSuffix(gcc/Code-Gen-Options.html#index-fshort-wchar)
+
+; skipping UrlSuffix for 'fsigned-bitfields' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fno-signed-bitfields'
+;   duplicate: 'gcc/Non-bugs.html#index-fsigned-bitfields-1'
+
+; skipping UrlSuffix for 'fsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-fsigned-char-1'
+
+fsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fsized-deallocation)
+
+fstrict-flex-arrays
+UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays)
+
+fstrict-flex-arrays=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fno-strict-flex-arrays)
+
+fsso-struct=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fsso-struct)
+
+fstats
+UrlSuffix(gcc/Developer-Options.html#index-fstats)
+
+fstrict-enums
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrict-enums)
+
+fstrong-eval-order
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order)
+
+fstrong-eval-order=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fstrong-eval-order)
+
+ftemplate-backtrace-limit=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-backtrace-limit)
+
+ftemplate-depth=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-ftemplate-depth)
+
+fthreadsafe-statics
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-threadsafe-statics)
+
+; skipping UrlSuffix for 'funsigned-bitfields' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fno-unsigned-bitfields'
+;   duplicate: 'gcc/Non-bugs.html#index-funsigned-bitfields-2'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-funsigned-bitfields-1'
+
+; skipping UrlSuffix for 'funsigned-char' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-funsigned-char'
+;   duplicate: 'gcc/Characters-implementation.html#index-funsigned-char-1'
+
+fuse-cxa-atexit
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fuse-cxa-atexit)
+
+fuse-cxa-get-exception-ptr
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-use-cxa-get-exception-ptr)
+
+fvisibility-inlines-hidden
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-inlines-hidden)
+
+fvisibility-ms-compat
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fvisibility-ms-compat)
+
+fweak
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-weak)
+
+fwide-exec-charset=
+UrlSuffix(gcc/Preprocessor-Options.html#index-fwide-exec-charset)
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+fzero-link
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-fzero-link)
+
+gen-decls
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-gen-decls)
+
+femit-struct-debug-baseonly
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-baseonly)
+
+femit-struct-debug-reduced
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-reduced)
+
+femit-struct-debug-detailed=
+UrlSuffix(gcc/Debugging-Options.html#index-femit-struct-debug-detailed)
+
+fext-numeric-literals
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fext-numeric-literals)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imacros
+UrlSuffix(gcc/Preprocessor-Options.html#index-imacros)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+include
+UrlSuffix(gcc/Preprocessor-Options.html#index-include)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+iwithprefix
+UrlSuffix(gcc/Directory-Options.html#index-iwithprefix)
+
+iwithprefixbefore
+UrlSuffix(gcc/Directory-Options.html#index-iwithprefixbefore)
+
+no-integrated-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-no-integrated-cpp)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+; skipping UrlSuffix for 'nostdinc++' due to multiple URLs:
+;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-nostdinc_002b_002b'
+;   duplicate: 'gcc/Directory-Options.html#index-nostdinc_002b_002b-1'
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+; skipping UrlSuffix for 'pedantic' due to multiple URLs:
+;   duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3'
+;   duplicate: 'gcc/C-Extensions.html#index-pedantic-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4'
+
+print-objc-runtime-info
+UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-print-objc-runtime-info)
+
+remap
+UrlSuffix(gcc/Preprocessor-Options.html#index-remap)
+
+stdlib=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-stdlib)
+
+; skipping UrlSuffix for 'traditional' due to multiple URLs:
+;   duplicate: 'gcc/Incompatibilities.html#index-traditional-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-traditional'
+
+traditional-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp)
+
+trigraphs
+UrlSuffix(gcc/Preprocessor-Options.html#index-trigraphs)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
+w
+UrlSuffix(gcc/Warning-Options.html#index-w)
+
diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
new file mode 100644
index 000000000000..4cb2d7dc628e
--- /dev/null
+++ b/gcc/common.opt.urls
@@ -0,0 +1,1862 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/common.opt and generated HTML
+
+###
+UrlSuffix(gcc/Overall-Options.html#index-_0023_0023_0023)
+
+fversion
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+B
+UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+O
+UrlSuffix(gcc/Optimize-Options.html#index-O)
+
+Os
+UrlSuffix(gcc/Optimize-Options.html#index-Os)
+
+Ofast
+UrlSuffix(gcc/Optimize-Options.html#index-Ofast)
+
+Og
+UrlSuffix(gcc/Optimize-Options.html#index-Og)
+
+Oz
+UrlSuffix(gcc/Optimize-Options.html#index-Oz)
+
+Q
+UrlSuffix(gcc/Developer-Options.html#index-Q)
+
+Qn
+UrlSuffix(gcc/System-V-Options.html#index-Qn)
+
+Qy
+UrlSuffix(gcc/System-V-Options.html#index-Qy)
+
+; skipping UrlSuffix for 'S' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-S-1'
+;   duplicate: 'gcc/Overall-Options.html#index-S'
+
+T
+UrlSuffix(gcc/Link-Options.html#index-T)
+
+; skipping UrlSuffix for 'W' due to multiple URLs:
+;   duplicate: 'gcc/Incompatibilities.html#index-W-3'
+;   duplicate: 'gcc/Warning-Options.html#index-W'
+
+Waggregate-return
+UrlSuffix(gcc/Warning-Options.html#index-Waggregate-return)
+
+Waggressive-loop-optimizations
+UrlSuffix(gcc/Warning-Options.html#index-Waggressive-loop-optimizations)
+
+Warray-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Warray-bounds=
+UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
+
+Wuse-after-free
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wuse-after-free=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+
+Wattributes
+UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
+
+Wattributes=
+UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
+
+Wattribute-alias
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
+
+Wattribute-alias=
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-alias)
+
+Wcast-align
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-align)
+
+Wcast-align=strict
+UrlSuffix(gcc/Warning-Options.html#index-Wcast-align_003dstrict)
+
+Wcomplain-wrong-lang
+UrlSuffix(gcc/Warning-Options.html#index-Wcomplain-wrong-lang)
+
+Wcpp
+UrlSuffix(gcc/Warning-Options.html#index-Wcpp)
+
+Wattribute-warning
+UrlSuffix(gcc/Warning-Options.html#index-Wattribute-warning)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Wdeprecated-declarations
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated-declarations)
+
+Wdisabled-optimization
+UrlSuffix(gcc/Warning-Options.html#index-Wdisabled-optimization)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Werror=
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wfatal-errors
+UrlSuffix(gcc/Warning-Options.html#index-Wfatal-errors)
+
+Wframe-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-larger-than_003d)
+
+Wfree-nonheap-object
+UrlSuffix(gcc/Warning-Options.html#index-Wfree-nonheap-object)
+
+Whardened
+UrlSuffix(gcc/Warning-Options.html#index-Whardened)
+
+Wimplicit-fallthrough
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
+; skipping UrlSuffix for 'Winline' due to multiple URLs:
+;   duplicate: 'gcc/Inline.html#index-Winline-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Winline'
+
+Winvalid-memory-model
+UrlSuffix(gcc/Warning-Options.html#index-Winvalid-memory-model)
+
+Wlarger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Wlarger-than_003d)
+
+Wnonnull-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nonnull-compare)
+
+Wnull-dereference
+UrlSuffix(gcc/Warning-Options.html#index-Wno-null-dereference)
+
+Wunsafe-loop-optimizations
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unsafe-loop-optimizations)
+
+Wmissing-noreturn
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-noreturn)
+
+Wodr
+UrlSuffix(gcc/Warning-Options.html#index-Wno-odr)
+
+Woverflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-overflow)
+
+Wlto-type-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wlto-type-mismatch)
+
+Wpacked
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed)
+
+Wpadded
+UrlSuffix(gcc/Warning-Options.html#index-Wno-padded)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-local-addr
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-local-addr)
+
+Wshadow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-shadow)
+
+Wshadow=global
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dglobal)
+
+Wshadow=local
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dlocal)
+
+Wshadow=compatible-local
+UrlSuffix(gcc/Warning-Options.html#index-Wshadow_003dcompatible-local)
+
+Wstack-protector
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-protector)
+
+Wstack-usage=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stack-usage)
+
+Wstrict-aliasing
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-aliasing=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
+
+Wstrict-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wstrict-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
+
+Wsuggest-attribute=cold
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dcold)
+
+Wsuggest-attribute=const
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dconst)
+
+Wsuggest-attribute=pure
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dpure)
+
+Wsuggest-attribute=noreturn
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dnoreturn)
+
+Wsuggest-attribute=malloc
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dmalloc)
+
+Wsuggest-final-types
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-types)
+
+Wsuggest-final-methods
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-final-methods)
+
+Wswitch-unreachable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-unreachable)
+
+Wsystem-headers
+UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
+
+Wtrampolines
+UrlSuffix(gcc/Warning-Options.html#index-Wno-trampolines)
+
+Wtrivial-auto-var-init
+UrlSuffix(gcc/Warning-Options.html#index-Wno-trivial-auto-var-init)
+
+Wtype-limits
+UrlSuffix(gcc/Warning-Options.html#index-Wno-type-limits)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+Wunused-but-set-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-parameter)
+
+Wunused-but-set-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-but-set-variable)
+
+Wunused-function
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-function)
+
+Wunused-label
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-label)
+
+Wunused-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter)
+
+Wunused-value
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-value)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wcoverage-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-mismatch)
+
+Wcoverage-invalid-line-number
+UrlSuffix(gcc/Warning-Options.html#index-Wcoverage-invalid-line-number)
+
+Wmissing-profile
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-profile)
+
+Wvector-operation-performance
+UrlSuffix(gcc/Warning-Options.html#index-Wno-vector-operation-performance)
+
+Wtsan
+UrlSuffix(gcc/Warning-Options.html#index-Wno-tsan)
+
+Xassembler
+UrlSuffix(gcc/Assembler-Options.html#index-Xassembler)
+
+Xlinker
+UrlSuffix(gcc/Link-Options.html#index-Xlinker)
+
+Xpreprocessor
+UrlSuffix(gcc/Preprocessor-Options.html#index-Xpreprocessor)
+
+aux-info
+UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
+
+aux-info=
+UrlSuffix(gcc/C-Dialect-Options.html#index-aux-info)
+
+coverage
+UrlSuffix(gcc/Instrumentation-Options.html#index-coverage)
+
+; skipping UrlSuffix for 'c' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-c-1'
+;   duplicate: 'gcc/Overall-Options.html#index-c'
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+dumpbase
+UrlSuffix(gcc/Overall-Options.html#index-dumpbase)
+
+dumpbase-ext
+UrlSuffix(gcc/Overall-Options.html#index-dumpbase-ext)
+
+dumpdir
+UrlSuffix(gcc/Overall-Options.html#index-dumpdir)
+
+dumpmachine
+UrlSuffix(gcc/Developer-Options.html#index-dumpmachine)
+
+dumpspecs
+UrlSuffix(gcc/Developer-Options.html#index-dumpspecs)
+
+dumpversion
+UrlSuffix(gcc/Developer-Options.html#index-dumpversion)
+
+dumpfullversion
+UrlSuffix(gcc/Developer-Options.html#index-dumpfullversion)
+
+e
+UrlSuffix(gcc/Link-Options.html#index-e)
+
+fabi-version=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fabi-version)
+
+faggressive-loop-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-faggressive-loop-optimizations)
+
+falign-functions
+UrlSuffix(gcc/Optimize-Options.html#index-falign-functions)
+
+falign-functions=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-functions)
+
+falign-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps)
+
+falign-jumps=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-jumps)
+
+falign-labels
+UrlSuffix(gcc/Optimize-Options.html#index-falign-labels)
+
+falign-labels=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-labels)
+
+falign-loops
+UrlSuffix(gcc/Optimize-Options.html#index-falign-loops)
+
+falign-loops=
+UrlSuffix(gcc/Optimize-Options.html#index-falign-loops)
+
+fallow-store-data-races
+UrlSuffix(gcc/Optimize-Options.html#index-fallow-store-data-races)
+
+fanalyzer
+UrlSuffix(gcc/Static-Analyzer-Options.html#index-fanalyzer)
+
+fasan-shadow-offset=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fasan-shadow-offset)
+
+fsanitize-sections=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-sections)
+
+fsanitize-recover=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover)
+
+fsanitize-recover
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-recover)
+
+fsanitize-trap=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap)
+
+fsanitize-trap
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-sanitize-trap)
+
+fsanitize-address-use-after-scope
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-address-use-after-scope)
+
+fsanitize-undefined-trap-on-error
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsanitize-undefined-trap-on-error)
+
+fasynchronous-unwind-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-fasynchronous-unwind-tables)
+
+fauto-inc-dec
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-inc-dec)
+
+fauto-profile
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile)
+
+fauto-profile=
+UrlSuffix(gcc/Optimize-Options.html#index-fauto-profile)
+
+fbounds-check
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+fbranch-count-reg
+UrlSuffix(gcc/Optimize-Options.html#index-fbranch-count-reg)
+
+fbranch-probabilities
+UrlSuffix(gcc/Optimize-Options.html#index-fbranch-probabilities)
+
+fcallgraph-info
+UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info)
+
+fcallgraph-info=
+UrlSuffix(gcc/Developer-Options.html#index-fcallgraph-info)
+
+fcaller-saves
+UrlSuffix(gcc/Optimize-Options.html#index-fcaller-saves)
+
+fcheck-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fcheck-new)
+
+fchecking
+UrlSuffix(gcc/Developer-Options.html#index-fchecking)
+
+fchecking=
+UrlSuffix(gcc/Developer-Options.html#index-fchecking)
+
+fcanon-prefix-map
+UrlSuffix(gcc/Overall-Options.html#index-fcanon-prefix-map)
+
+fcode-hoisting
+UrlSuffix(gcc/Optimize-Options.html#index-fcode-hoisting)
+
+fcombine-stack-adjustments
+UrlSuffix(gcc/Optimize-Options.html#index-fcombine-stack-adjustments)
+
+fcommon
+UrlSuffix(gcc/Code-Gen-Options.html#index-fcommon)
+
+fcompare-debug
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug)
+
+fcompare-debug=
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug)
+
+fcompare-debug-second
+UrlSuffix(gcc/Developer-Options.html#index-fcompare-debug-second)
+
+fcompare-elim
+UrlSuffix(gcc/Optimize-Options.html#index-fcompare-elim)
+
+fconserve-stack
+UrlSuffix(gcc/Optimize-Options.html#index-fconserve-stack)
+
+fcprop-registers
+UrlSuffix(gcc/Optimize-Options.html#index-fcprop-registers)
+
+ffold-mem-offsets
+UrlSuffix(gcc/Optimize-Options.html#index-ffold-mem-offsets)
+
+fcrossjumping
+UrlSuffix(gcc/Optimize-Options.html#index-fcrossjumping)
+
+fcse-follow-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-fcse-follow-jumps)
+
+fcse-skip-blocks
+UrlSuffix(gcc/Optimize-Options.html#index-fcse-skip-blocks)
+
+fcx-limited-range
+UrlSuffix(gcc/Optimize-Options.html#index-fcx-limited-range)
+
+fcx-fortran-rules
+UrlSuffix(gcc/Optimize-Options.html#index-fcx-fortran-rules)
+
+fdata-sections
+UrlSuffix(gcc/Optimize-Options.html#index-fdata-sections)
+
+fdbg-cnt-list
+UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt-list)
+
+fdbg-cnt=
+UrlSuffix(gcc/Developer-Options.html#index-fdbg-cnt)
+
+fdebug-prefix-map=
+UrlSuffix(gcc/Debugging-Options.html#index-fdebug-prefix-map)
+
+ffile-prefix-map=
+UrlSuffix(gcc/Overall-Options.html#index-ffile-prefix-map)
+
+fdebug-types-section
+UrlSuffix(gcc/Debugging-Options.html#index-fdebug-types-section)
+
+fdefer-pop
+UrlSuffix(gcc/Optimize-Options.html#index-fdefer-pop)
+
+fdelayed-branch
+UrlSuffix(gcc/Optimize-Options.html#index-fdelayed-branch)
+
+fdelete-dead-exceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fdelete-dead-exceptions)
+
+fdelete-null-pointer-checks
+UrlSuffix(gcc/Optimize-Options.html#index-fdelete-null-pointer-checks)
+
+fdevirtualize-at-ltrans
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-at-ltrans)
+
+fdevirtualize-speculatively
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize-speculatively)
+
+fdevirtualize
+UrlSuffix(gcc/Optimize-Options.html#index-fdevirtualize)
+
+fdiagnostics-show-location=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-location)
+
+fdiagnostics-show-caret
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-caret)
+
+fdiagnostics-show-labels
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-labels)
+
+fdiagnostics-show-line-numbers
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-line-numbers)
+
+fdiagnostics-color
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
+
+fdiagnostics-color=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-color)
+
+fdiagnostics-json-formatting
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-json-formatting)
+
+fdiagnostics-urls=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-urls)
+
+fdiagnostics-column-unit=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-unit)
+
+fdiagnostics-column-origin=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-column-origin)
+
+fdiagnostics-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format)
+
+fdiagnostics-escape-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-escape-format)
+
+fdiagnostics-parseable-fixits
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-parseable-fixits)
+
+fdiagnostics-generate-patch
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-generate-patch)
+
+fdiagnostics-show-option
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-option)
+
+fdiagnostics-show-cwe
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-cwe)
+
+fdiagnostics-show-rules
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-rules)
+
+fdiagnostics-path-format=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-path-format)
+
+ftabstop=
+UrlSuffix(gcc/Preprocessor-Options.html#index-ftabstop)
+
+fdiagnostics-show-path-depths
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-show-path-depths)
+
+fdiagnostics-text-art-charset=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-text-art-charset)
+
+fdiagnostics-minimum-margin-width=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-minimum-margin-width)
+
+fdisable-
+UrlSuffix(gcc/Developer-Options.html#index-fdisable-)
+
+fenable-
+UrlSuffix(gcc/Developer-Options.html#index-fenable-)
+
+fdump-final-insns
+UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns)
+
+fdump-final-insns=
+UrlSuffix(gcc/Developer-Options.html#index-fdump-final-insns)
+
+fdump-go-spec=
+UrlSuffix(gcc/Overall-Options.html#index-fdump-go-spec)
+
+fdump-noaddr
+UrlSuffix(gcc/Developer-Options.html#index-fdump-noaddr)
+
+freport-bug
+UrlSuffix(gcc/Developer-Options.html#index-freport-bug)
+
+fdump-passes
+UrlSuffix(gcc/Developer-Options.html#index-fdump-passes)
+
+fdump-unnumbered
+UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered)
+
+fdump-unnumbered-links
+UrlSuffix(gcc/Developer-Options.html#index-fdump-unnumbered-links)
+
+fdwarf2-cfi-asm
+UrlSuffix(gcc/Debugging-Options.html#index-fdwarf2-cfi-asm)
+
+fearly-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-fearly-inlining)
+
+fipa-sra
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-sra)
+
+feliminate-unused-debug-symbols
+UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-symbols)
+
+feliminate-unused-debug-types
+UrlSuffix(gcc/Debugging-Options.html#index-feliminate-unused-debug-types)
+
+femit-class-debug-always
+UrlSuffix(gcc/Debugging-Options.html#index-femit-class-debug-always)
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fexpensive-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-fexpensive-optimizations)
+
+fexcess-precision=
+UrlSuffix(gcc/Optimize-Options.html#index-fexcess-precision)
+
+fpermitted-flt-eval-methods=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fpermitted-flt-eval-methods)
+
+ffast-math
+UrlSuffix(gcc/Optimize-Options.html#index-ffast-math)
+
+ffat-lto-objects
+UrlSuffix(gcc/Optimize-Options.html#index-ffat-lto-objects)
+
+ffinite-math-only
+UrlSuffix(gcc/Optimize-Options.html#index-ffinite-math-only)
+
+ffinite-loops
+UrlSuffix(gcc/Optimize-Options.html#index-ffinite-loops)
+
+; skipping UrlSuffix for 'ffloat-store' due to multiple URLs:
+;   duplicate: 'gcc/Disappointments.html#index-ffloat-store-1'
+;   duplicate: 'gcc/Optimize-Options.html#index-ffloat-store'
+
+fforward-propagate
+UrlSuffix(gcc/Optimize-Options.html#index-fforward-propagate)
+
+ffp-contract=
+UrlSuffix(gcc/Optimize-Options.html#index-ffp-contract)
+
+ffp-int-builtin-inexact
+UrlSuffix(gcc/Optimize-Options.html#index-ffp-int-builtin-inexact)
+
+ffunction-cse
+UrlSuffix(gcc/Optimize-Options.html#index-ffunction-cse)
+
+ffunction-sections
+UrlSuffix(gcc/Optimize-Options.html#index-ffunction-sections)
+
+fgcse
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse)
+
+fgcse-lm
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-lm)
+
+fgcse-sm
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-sm)
+
+fgcse-las
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-las)
+
+fgcse-after-reload
+UrlSuffix(gcc/Optimize-Options.html#index-fgcse-after-reload)
+
+fgraphite-identity
+UrlSuffix(gcc/Optimize-Options.html#index-fgraphite-identity)
+
+fhoist-adjacent-loads
+UrlSuffix(gcc/Optimize-Options.html#index-fhoist-adjacent-loads)
+
+flarge-source-files
+UrlSuffix(gcc/Preprocessor-Options.html#index-flarge-source-files)
+
+floop-parallelize-all
+UrlSuffix(gcc/Optimize-Options.html#index-floop-parallelize-all)
+
+floop-strip-mine
+UrlSuffix(gcc/Optimize-Options.html#index-floop-strip-mine)
+
+floop-interchange
+UrlSuffix(gcc/Optimize-Options.html#index-floop-interchange)
+
+floop-block
+UrlSuffix(gcc/Optimize-Options.html#index-floop-block)
+
+floop-unroll-and-jam
+UrlSuffix(gcc/Optimize-Options.html#index-floop-unroll-and-jam)
+
+fgnu-tm
+UrlSuffix(gcc/C-Dialect-Options.html#index-fgnu-tm)
+
+fgnu-unique
+UrlSuffix(gcc/Code-Gen-Options.html#index-fgnu-unique)
+
+floop-nest-optimize
+UrlSuffix(gcc/Optimize-Options.html#index-floop-nest-optimize)
+
+fstrict-volatile-bitfields
+UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-volatile-bitfields)
+
+fstore-merging
+UrlSuffix(gcc/Optimize-Options.html#index-fstore-merging)
+
+fguess-branch-probability
+UrlSuffix(gcc/Optimize-Options.html#index-fguess-branch-probability)
+
+fhardened
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardened)
+
+fharden-compares
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-compares)
+
+fharden-conditional-branches
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-conditional-branches)
+
+fharden-control-flow-redundancy
+UrlSuffix(gcc/Instrumentation-Options.html#index-fharden-control-flow-redundancy)
+
+fhardcfr-skip-leaf
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-skip-leaf)
+
+fhardcfr-check-returning-calls
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-returning-calls)
+
+fhardcfr-check-exceptions
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-exceptions)
+
+fhardcfr-check-noreturn-calls=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fhardcfr-check-noreturn-calls)
+
+fident
+UrlSuffix(gcc/Code-Gen-Options.html#index-fident)
+
+fif-conversion
+UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion)
+
+fif-conversion2
+UrlSuffix(gcc/Optimize-Options.html#index-fif-conversion2)
+
+ftree-loop-if-convert
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-if-convert)
+
+finhibit-size-directive
+UrlSuffix(gcc/Code-Gen-Options.html#index-finhibit-size-directive)
+
+findirect-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-findirect-inlining)
+
+finline
+UrlSuffix(gcc/Optimize-Options.html#index-finline)
+
+finline-small-functions
+UrlSuffix(gcc/Optimize-Options.html#index-finline-small-functions)
+
+finline-functions
+UrlSuffix(gcc/Optimize-Options.html#index-finline-functions)
+
+finline-functions-called-once
+UrlSuffix(gcc/Optimize-Options.html#index-finline-functions-called-once)
+
+finline-limit=
+UrlSuffix(gcc/Optimize-Options.html#index-finline-limit)
+
+finline-stringops
+UrlSuffix(gcc/Optimize-Options.html#index-finline-stringops)
+
+finline-stringops=
+UrlSuffix(gcc/Optimize-Options.html#index-finline-stringops)
+
+fcf-protection
+UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
+
+fcf-protection=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fcf-protection)
+
+finstrument-functions
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions)
+
+finstrument-functions-once
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-once)
+
+finstrument-functions-exclude-function-list=
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-function-list)
+
+finstrument-functions-exclude-file-list=
+UrlSuffix(gcc/Instrumentation-Options.html#index-finstrument-functions-exclude-file-list)
+
+fipa-cp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp)
+
+fipa-cp-clone
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-cp-clone)
+
+fipa-bit-cp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-bit-cp)
+
+fipa-modref
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-modref)
+
+fipa-profile
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-profile)
+
+fipa-pta
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-pta)
+
+fipa-pure-const
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-pure-const)
+
+fipa-icf
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-icf)
+
+fipa-reference
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference)
+
+fipa-reference-addressable
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-reference-addressable)
+
+fipa-stack-alignment
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-stack-alignment)
+
+fipa-vrp
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-vrp)
+
+fira-algorithm=
+UrlSuffix(gcc/Optimize-Options.html#index-fira-algorithm)
+
+fipa-strict-aliasing
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-strict-aliasing)
+
+fira-region=
+UrlSuffix(gcc/Optimize-Options.html#index-fira-region)
+
+fira-hoist-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fira-hoist-pressure)
+
+fira-loop-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fira-loop-pressure)
+
+fira-share-save-slots
+UrlSuffix(gcc/Optimize-Options.html#index-fira-share-save-slots)
+
+fira-share-spill-slots
+UrlSuffix(gcc/Optimize-Options.html#index-fira-share-spill-slots)
+
+fira-verbose=
+UrlSuffix(gcc/Developer-Options.html#index-fira-verbose)
+
+fivopts
+UrlSuffix(gcc/Optimize-Options.html#index-fivopts)
+
+fjump-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-fjump-tables)
+
+fbit-tests
+UrlSuffix(gcc/Code-Gen-Options.html#index-fbit-tests)
+
+; skipping UrlSuffix for 'fkeep-inline-functions' due to multiple URLs:
+;   duplicate: 'gcc/Inline.html#index-fkeep-inline-functions-1'
+;   duplicate: 'gcc/Optimize-Options.html#index-fkeep-inline-functions'
+
+fkeep-static-functions
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-functions)
+
+fkeep-static-consts
+UrlSuffix(gcc/Optimize-Options.html#index-fkeep-static-consts)
+
+fleading-underscore
+UrlSuffix(gcc/Code-Gen-Options.html#index-fleading-underscore)
+
+flra-remat
+UrlSuffix(gcc/Optimize-Options.html#index-flra-remat)
+
+flto
+UrlSuffix(gcc/Optimize-Options.html#index-flto)
+
+flto=
+UrlSuffix(gcc/Optimize-Options.html#index-flto)
+
+flto-partition=
+UrlSuffix(gcc/Optimize-Options.html#index-flto-partition)
+
+flto-compression-level=
+UrlSuffix(gcc/Optimize-Options.html#index-flto-compression-level)
+
+flto-report
+UrlSuffix(gcc/Developer-Options.html#index-flto-report)
+
+flto-report-wpa
+UrlSuffix(gcc/Developer-Options.html#index-flto-report-wpa)
+
+fmath-errno
+UrlSuffix(gcc/Optimize-Options.html#index-fmath-errno)
+
+fmax-errors=
+UrlSuffix(gcc/Warning-Options.html#index-fmax-errors) LangUrlSuffix_D(gdc/Warnings.html#index-fmax-errors)
+
+fmem-report
+UrlSuffix(gcc/Developer-Options.html#index-fmem-report)
+
+fmem-report-wpa
+UrlSuffix(gcc/Developer-Options.html#index-fmem-report-wpa)
+
+fmerge-all-constants
+UrlSuffix(gcc/Optimize-Options.html#index-fmerge-all-constants)
+
+fmerge-constants
+UrlSuffix(gcc/Optimize-Options.html#index-fmerge-constants)
+
+fmerge-debug-strings
+UrlSuffix(gcc/Debugging-Options.html#index-fmerge-debug-strings)
+
+fmessage-length=
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fmessage-length)
+
+fmodulo-sched
+UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched)
+
+fmodulo-sched-allow-regmoves
+UrlSuffix(gcc/Optimize-Options.html#index-fmodulo-sched-allow-regmoves)
+
+fmove-loop-invariants
+UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-invariants)
+
+fmove-loop-stores
+UrlSuffix(gcc/Optimize-Options.html#index-fmove-loop-stores)
+
+fmultiflags
+UrlSuffix(gcc/Developer-Options.html#index-fmultiflags)
+
+fdce
+UrlSuffix(gcc/Optimize-Options.html#index-fdce)
+
+fdse
+UrlSuffix(gcc/Optimize-Options.html#index-fdse)
+
+freschedule-modulo-scheduled-loops
+UrlSuffix(gcc/Optimize-Options.html#index-freschedule-modulo-scheduled-loops)
+
+fnon-call-exceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fnon-call-exceptions)
+
+foffload=
+UrlSuffix(gcc/C-Dialect-Options.html#index-foffload)
+
+foffload-options=
+UrlSuffix(gcc/C-Dialect-Options.html#index-foffload-options)
+
+fomit-frame-pointer
+UrlSuffix(gcc/Optimize-Options.html#index-fomit-frame-pointer)
+
+fopenmp-target-simd-clone
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone)
+
+fopenmp-target-simd-clone=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-target-simd-clone)
+
+fopt-info
+UrlSuffix(gcc/Developer-Options.html#index-fopt-info)
+
+fsave-optimization-record
+UrlSuffix(gcc/Developer-Options.html#index-fsave-optimization-record)
+
+foptimize-sibling-calls
+UrlSuffix(gcc/Optimize-Options.html#index-foptimize-sibling-calls)
+
+fpartial-inlining
+UrlSuffix(gcc/Optimize-Options.html#index-fpartial-inlining)
+
+fpre-ipa-mem-report
+UrlSuffix(gcc/Developer-Options.html#index-fpre-ipa-mem-report)
+
+fpost-ipa-mem-report
+UrlSuffix(gcc/Developer-Options.html#index-fpost-ipa-mem-report)
+
+fpack-struct
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct)
+
+fpack-struct=
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpack-struct)
+
+; skipping UrlSuffix for 'fpcc-struct-return' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fpcc-struct-return'
+;   duplicate: 'gcc/Incompatibilities.html#index-fpcc-struct-return-1'
+
+fpeel-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fpeel-loops)
+
+fpeephole
+UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole)
+
+fpeephole2
+UrlSuffix(gcc/Optimize-Options.html#index-fno-peephole2)
+
+fPIC
+UrlSuffix(gcc/Code-Gen-Options.html#index-fPIC)
+
+fPIE
+UrlSuffix(gcc/Code-Gen-Options.html#index-fPIE)
+
+fpic
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpic)
+
+fpie
+UrlSuffix(gcc/Code-Gen-Options.html#index-fpie)
+
+fplt
+UrlSuffix(gcc/Code-Gen-Options.html#index-fno-plt)
+
+fplugin=
+UrlSuffix(gcc/Overall-Options.html#index-fplugin)
+
+fpredictive-commoning
+UrlSuffix(gcc/Optimize-Options.html#index-fpredictive-commoning)
+
+fprefetch-loop-arrays
+UrlSuffix(gcc/Optimize-Options.html#index-fprefetch-loop-arrays)
+
+fprofile-abs-path
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-abs-path)
+
+; skipping UrlSuffix for 'fprofile-arcs' due to multiple URLs:
+;   duplicate: 'gcc/Instrumentation-Options.html#index-fprofile-arcs'
+;   duplicate: 'gcc/Other-Builtins.html#index-fprofile-arcs-1'
+
+fprofile-dir=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-dir)
+
+fprofile-note=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-note)
+
+fprofile-correction
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-correction)
+
+fprofile-update=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-update)
+
+fprofile-filter-files=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-filter-files)
+
+fprofile-exclude-files=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-exclude-files)
+
+fprofile-reproducible=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-reproducible)
+
+fprofile-prefix-path=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-path)
+
+fprofile-prefix-map=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-prefix-map)
+
+fprofile-generate
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate)
+
+fprofile-generate=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-generate)
+
+fprofile-info-section
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section)
+
+fprofile-info-section=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fprofile-info-section)
+
+fprofile-partial-training
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-partial-training)
+
+fprofile-use
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use)
+
+fprofile-use=
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-use)
+
+fprofile-values
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-values)
+
+fprofile-report
+UrlSuffix(gcc/Developer-Options.html#index-fprofile-report)
+
+fprofile-reorder-functions
+UrlSuffix(gcc/Optimize-Options.html#index-fprofile-reorder-functions)
+
+fpatchable-function-entry=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fpatchable-function-entry)
+
+frandom-seed
+UrlSuffix(gcc/Developer-Options.html#index-frandom-seed)
+
+frandom-seed=
+UrlSuffix(gcc/Developer-Options.html#index-frandom-seed)
+
+frecord-gcc-switches
+UrlSuffix(gcc/Code-Gen-Options.html#index-frecord-gcc-switches)
+
+freg-struct-return
+UrlSuffix(gcc/Code-Gen-Options.html#index-freg-struct-return)
+
+flifetime-dse
+UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
+
+flifetime-dse=
+UrlSuffix(gcc/Optimize-Options.html#index-flifetime-dse)
+
+flive-patching
+UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
+
+flive-patching=
+UrlSuffix(gcc/Optimize-Options.html#index-flive-patching)
+
+fallocation-dce
+UrlSuffix(gcc/Optimize-Options.html#index-fno-allocation-dce)
+
+flive-range-shrinkage
+UrlSuffix(gcc/Optimize-Options.html#index-flive-range-shrinkage)
+
+frename-registers
+UrlSuffix(gcc/Optimize-Options.html#index-frename-registers)
+
+fschedule-fusion
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-fusion)
+
+freorder-blocks
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks)
+
+freorder-blocks-algorithm=
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-algorithm)
+
+freorder-blocks-and-partition
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-blocks-and-partition)
+
+freorder-functions
+UrlSuffix(gcc/Optimize-Options.html#index-freorder-functions)
+
+frerun-cse-after-loop
+UrlSuffix(gcc/Optimize-Options.html#index-frerun-cse-after-loop)
+
+frounding-math
+UrlSuffix(gcc/Optimize-Options.html#index-frounding-math)
+
+fsched-interblock
+UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-interblock)
+
+fsched-pressure
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-pressure)
+
+fsched-spec
+UrlSuffix(gcc/Optimize-Options.html#index-fno-sched-spec)
+
+fsched-spec-load
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load)
+
+fsched-spec-load-dangerous
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-load-dangerous)
+
+fsched-verbose=
+UrlSuffix(gcc/Developer-Options.html#index-fsched-verbose)
+
+fsched2-use-superblocks
+UrlSuffix(gcc/Optimize-Options.html#index-fsched2-use-superblocks)
+
+fschedule-insns
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns)
+
+fschedule-insns2
+UrlSuffix(gcc/Optimize-Options.html#index-fschedule-insns2)
+
+fselective-scheduling
+UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling)
+
+fselective-scheduling2
+UrlSuffix(gcc/Optimize-Options.html#index-fselective-scheduling2)
+
+fsel-sched-pipelining
+UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining)
+
+fsel-sched-pipelining-outer-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fsel-sched-pipelining-outer-loops)
+
+fsemantic-interposition
+UrlSuffix(gcc/Optimize-Options.html#index-fsemantic-interposition)
+
+fsched-stalled-insns
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns)
+
+fsched-stalled-insns=
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns)
+
+fsched-stalled-insns-dep
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep)
+
+fsched-stalled-insns-dep=
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-stalled-insns-dep)
+
+fsched-group-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-group-heuristic)
+
+fsched-critical-path-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-critical-path-heuristic)
+
+fsched-spec-insn-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-spec-insn-heuristic)
+
+fsched-rank-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-rank-heuristic)
+
+fsched-last-insn-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-last-insn-heuristic)
+
+fsched-dep-count-heuristic
+UrlSuffix(gcc/Optimize-Options.html#index-fsched-dep-count-heuristic)
+
+fsection-anchors
+UrlSuffix(gcc/Optimize-Options.html#index-fsection-anchors)
+
+free
+UrlSuffix(gcc/Optimize-Options.html#index-free-1)
+
+fshow-column
+UrlSuffix(gcc/Diagnostic-Message-Formatting-Options.html#index-fno-show-column)
+
+fshrink-wrap
+UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap)
+
+fshrink-wrap-separate
+UrlSuffix(gcc/Optimize-Options.html#index-fshrink-wrap-separate)
+
+fsignaling-nans
+UrlSuffix(gcc/Optimize-Options.html#index-fsignaling-nans)
+
+fsigned-zeros
+UrlSuffix(gcc/Optimize-Options.html#index-fno-signed-zeros)
+
+fsingle-precision-constant
+UrlSuffix(gcc/Optimize-Options.html#index-fsingle-precision-constant)
+
+fsplit-ivs-in-unroller
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-ivs-in-unroller)
+
+fsplit-stack
+UrlSuffix(gcc/Instrumentation-Options.html#index-fsplit-stack)
+
+fsplit-wide-types
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types)
+
+fsplit-wide-types-early
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-wide-types-early)
+
+fssa-backprop
+UrlSuffix(gcc/Optimize-Options.html#index-fssa-backprop)
+
+fssa-phiopt
+UrlSuffix(gcc/Optimize-Options.html#index-fssa-phiopt)
+
+fstdarg-opt
+UrlSuffix(gcc/Optimize-Options.html#index-fstdarg-opt)
+
+fvariable-expansion-in-unroller
+UrlSuffix(gcc/Optimize-Options.html#index-fvariable-expansion-in-unroller)
+
+fstack-check=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check)
+
+fstack-check
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-check)
+
+fstack-clash-protection
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-clash-protection)
+
+fstack-limit
+UrlSuffix(gcc/Instrumentation-Options.html#index-fno-stack-limit)
+
+fstack-limit-register=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-register)
+
+fstack-limit-symbol=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-limit-symbol)
+
+fstack-protector
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector)
+
+fstack-protector-all
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-all)
+
+fstack-protector-strong
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-strong)
+
+fstack-protector-explicit
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstack-protector-explicit)
+
+fstack-usage
+UrlSuffix(gcc/Developer-Options.html#index-fstack-usage)
+
+fstrict-aliasing
+UrlSuffix(gcc/Optimize-Options.html#index-fstrict-aliasing)
+
+fstrict-overflow
+UrlSuffix(gcc/Code-Gen-Options.html#index-fstrict-overflow)
+
+fstrub=strict
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dstrict)
+
+fstrub=relaxed
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003drelaxed)
+
+fstrub=all
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dall)
+
+fstrub=at-calls
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dat-calls)
+
+fstrub=internal
+UrlSuffix(gcc/Instrumentation-Options.html#index-fstrub_003dinternal)
+
+fsync-libcalls
+UrlSuffix(gcc/Code-Gen-Options.html#index-fsync-libcalls)
+
+fsyntax-only
+UrlSuffix(gcc/Warning-Options.html#index-fsyntax-only) LangUrlSuffix_D(gdc/Warnings.html#index-fno-syntax-only)
+
+ftest-coverage
+UrlSuffix(gcc/Instrumentation-Options.html#index-ftest-coverage)
+
+fthread-jumps
+UrlSuffix(gcc/Optimize-Options.html#index-fthread-jumps)
+
+ftime-report
+UrlSuffix(gcc/Developer-Options.html#index-ftime-report)
+
+ftime-report-details
+UrlSuffix(gcc/Developer-Options.html#index-ftime-report-details)
+
+ftls-model=
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftls-model)
+
+ftoplevel-reorder
+UrlSuffix(gcc/Optimize-Options.html#index-fno-toplevel-reorder)
+
+ftracer
+UrlSuffix(gcc/Optimize-Options.html#index-ftracer)
+
+ftrampolines
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampolines)
+
+ftrampoline-impl=
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrampoline-impl)
+
+ftrapping-math
+UrlSuffix(gcc/Optimize-Options.html#index-fno-trapping-math)
+
+ftrapv
+UrlSuffix(gcc/Code-Gen-Options.html#index-ftrapv)
+
+ftree-ccp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ccp)
+
+ftree-bit-ccp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-bit-ccp)
+
+ftree-ch
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ch)
+
+ftree-coalesce-vars
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-coalesce-vars)
+
+ftree-copy-prop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-copy-prop)
+
+ftree-switch-conversion
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-switch-conversion)
+
+ftree-dce
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dce)
+
+ftree-dominator-opts
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dominator-opts)
+
+ftree-tail-merge
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-tail-merge)
+
+ftree-dse
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-dse)
+
+ftree-forwprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-forwprop)
+
+ftree-fre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-fre)
+
+foptimize-strlen
+UrlSuffix(gcc/Optimize-Options.html#index-foptimize-strlen)
+
+fisolate-erroneous-paths-dereference
+UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-dereference)
+
+fisolate-erroneous-paths-attribute
+UrlSuffix(gcc/Optimize-Options.html#index-fisolate-erroneous-paths-attribute)
+
+ftree-loop-distribution
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribution)
+
+ftree-loop-distribute-patterns
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-distribute-patterns)
+
+ftree-loop-im
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-im)
+
+ftree-loop-linear
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-linear)
+
+ftree-loop-ivcanon
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-ivcanon)
+
+ftree-loop-optimize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-optimize)
+
+ftree-parallelize-loops=
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-parallelize-loops)
+
+ftree-phiprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-phiprop)
+
+ftree-pre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-pre)
+
+ftree-partial-pre
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-partial-pre)
+
+ftree-pta
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-pta)
+
+ftree-reassoc
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-reassoc)
+
+ftree-sink
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-sink)
+
+ftree-slsr
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-slsr)
+
+ftree-sra
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-sra)
+
+ftree-ter
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-ter)
+
+ftree-vrp
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-vrp)
+
+fsplit-paths
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-paths)
+
+funconstrained-commons
+UrlSuffix(gcc/Optimize-Options.html#index-funconstrained-commons)
+
+funit-at-a-time
+UrlSuffix(gcc/Optimize-Options.html#index-funit-at-a-time)
+
+funreachable-traps
+UrlSuffix(gcc/Optimize-Options.html#index-funreachable-traps)
+
+funroll-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funroll-loops)
+
+funroll-all-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funroll-all-loops)
+
+fassociative-math
+UrlSuffix(gcc/Optimize-Options.html#index-fassociative-math)
+
+freciprocal-math
+UrlSuffix(gcc/Optimize-Options.html#index-freciprocal-math)
+
+funsafe-math-optimizations
+UrlSuffix(gcc/Optimize-Options.html#index-funsafe-math-optimizations)
+
+funswitch-loops
+UrlSuffix(gcc/Optimize-Options.html#index-funswitch-loops)
+
+fsplit-loops
+UrlSuffix(gcc/Optimize-Options.html#index-fsplit-loops)
+
+fversion-loops-for-strides
+UrlSuffix(gcc/Optimize-Options.html#index-fversion-loops-for-strides)
+
+funwind-tables
+UrlSuffix(gcc/Code-Gen-Options.html#index-funwind-tables)
+
+fuse-ld=bfd
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dbfd)
+
+fuse-ld=gold
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dgold)
+
+fuse-ld=lld
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dlld)
+
+fuse-ld=mold
+UrlSuffix(gcc/Link-Options.html#index-fuse-ld_003dmold)
+
+fuse-linker-plugin
+UrlSuffix(gcc/Optimize-Options.html#index-fuse-linker-plugin)
+
+fvar-tracking
+UrlSuffix(gcc/Debugging-Options.html#index-fvar-tracking)
+
+fvar-tracking-assignments
+UrlSuffix(gcc/Debugging-Options.html#index-fno-var-tracking-assignments)
+
+fvar-tracking-assignments-toggle
+UrlSuffix(gcc/Developer-Options.html#index-fno-var-tracking-assignments-toggle)
+
+ftree-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-vectorize)
+
+ftree-loop-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-loop-vectorize)
+
+ftree-slp-vectorize
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-slp-vectorize)
+
+fvect-cost-model=
+UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model)
+
+fsimd-cost-model=
+UrlSuffix(gcc/Optimize-Options.html#index-fsimd-cost-model)
+
+fvect-cost-model
+UrlSuffix(gcc/Optimize-Options.html#index-fvect-cost-model)
+
+ftree-scev-cprop
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-scev-cprop)
+
+ftrivial-auto-var-init=
+UrlSuffix(gcc/Optimize-Options.html#index-ftrivial-auto-var-init)
+
+fverbose-asm
+UrlSuffix(gcc/Code-Gen-Options.html#index-fverbose-asm)
+
+fvisibility=
+UrlSuffix(gcc/Code-Gen-Options.html#index-fvisibility)
+
+fvtable-verify=
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtable-verify)
+
+fvtv-counts
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-counts)
+
+fvtv-debug
+UrlSuffix(gcc/Instrumentation-Options.html#index-fvtv-debug)
+
+fvpt
+UrlSuffix(gcc/Optimize-Options.html#index-fvpt)
+
+fweb
+UrlSuffix(gcc/Optimize-Options.html#index-fweb)
+
+ftree-builtin-call-dce
+UrlSuffix(gcc/Optimize-Options.html#index-ftree-builtin-call-dce)
+
+fwhole-program
+UrlSuffix(gcc/Optimize-Options.html#index-fwhole-program)
+
+fwrapv-pointer
+UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv-pointer)
+
+fwrapv
+UrlSuffix(gcc/Code-Gen-Options.html#index-fwrapv)
+
+fzero-initialized-in-bss
+UrlSuffix(gcc/Optimize-Options.html#index-fno-zero-initialized-in-bss)
+
+fzero-call-used-regs=
+UrlSuffix(gcc/Optimize-Options.html#index-fzero-call-used-regs)
+
+g
+UrlSuffix(gcc/Debugging-Options.html#index-g)
+
+gas-loc-support
+UrlSuffix(gcc/Debugging-Options.html#index-gas-loc-support)
+
+gas-locview-support
+UrlSuffix(gcc/Debugging-Options.html#index-gas-locview-support)
+
+gcodeview
+UrlSuffix(gcc/Debugging-Options.html#index-gcodeview)
+
+gcolumn-info
+UrlSuffix(gcc/Debugging-Options.html#index-gcolumn-info)
+
+gctf
+UrlSuffix(gcc/Debugging-Options.html#index-gctf)
+
+gbtf
+UrlSuffix(gcc/Debugging-Options.html#index-gbtf)
+
+gdwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf)
+
+gdwarf32
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf32)
+
+gdwarf64
+UrlSuffix(gcc/Debugging-Options.html#index-gdwarf64)
+
+ggdb
+UrlSuffix(gcc/Debugging-Options.html#index-ggdb)
+
+ginline-points
+UrlSuffix(gcc/Debugging-Options.html#index-ginline-points)
+
+ginternal-reset-location-views
+UrlSuffix(gcc/Debugging-Options.html#index-ginternal-reset-location-views)
+
+gpubnames
+UrlSuffix(gcc/Debugging-Options.html#index-gpubnames)
+
+ggnu-pubnames
+UrlSuffix(gcc/Debugging-Options.html#index-ggnu-pubnames)
+
+grecord-gcc-switches
+UrlSuffix(gcc/Debugging-Options.html#index-grecord-gcc-switches)
+
+gsplit-dwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gsplit-dwarf)
+
+gstatement-frontiers
+UrlSuffix(gcc/Debugging-Options.html#index-gstatement-frontiers)
+
+gstrict-dwarf
+UrlSuffix(gcc/Debugging-Options.html#index-gstrict-dwarf)
+
+gdescribe-dies
+UrlSuffix(gcc/Debugging-Options.html#index-gdescribe-dies)
+
+gtoggle
+UrlSuffix(gcc/Developer-Options.html#index-gtoggle)
+
+gvariable-location-views
+UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views)
+
+gvariable-location-views=incompat5
+UrlSuffix(gcc/Debugging-Options.html#index-gvariable-location-views_003dincompat5)
+
+gvms
+UrlSuffix(gcc/Debugging-Options.html#index-gvms)
+
+gz
+UrlSuffix(gcc/Debugging-Options.html#index-gz)
+
+gz=
+UrlSuffix(gcc/Debugging-Options.html#index-gz)
+
+iplugindir=
+UrlSuffix(gcc/Directory-Options.html#index-iplugindir_003d)
+
+l
+UrlSuffix(gcc/Link-Options.html#index-l)
+
+no-canonical-prefixes
+UrlSuffix(gcc/Directory-Options.html#index-no-canonical-prefixes)
+
+nodefaultlibs
+UrlSuffix(gcc/Link-Options.html#index-nodefaultlibs)
+
+nostartfiles
+UrlSuffix(gcc/Link-Options.html#index-nostartfiles)
+
+nolibc
+UrlSuffix(gcc/Link-Options.html#index-nolibc)
+
+nostdlib
+UrlSuffix(gcc/Link-Options.html#index-nostdlib)
+
+nostdlib++
+UrlSuffix(gcc/Link-Options.html#index-nostdlib_002b_002b)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+p
+UrlSuffix(gcc/Instrumentation-Options.html#index-p)
+
+pass-exit-codes
+UrlSuffix(gcc/Overall-Options.html#index-pass-exit-codes)
+
+; skipping UrlSuffix for 'pedantic' due to multiple URLs:
+;   duplicate: 'gcc/Alternate-Keywords.html#index-pedantic-3'
+;   duplicate: 'gcc/C-Extensions.html#index-pedantic-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-4'
+
+; skipping UrlSuffix for 'pedantic-errors' due to multiple URLs:
+;   duplicate: 'gcc/Non-bugs.html#index-pedantic-errors-2'
+;   duplicate: 'gcc/Standards.html#index-pedantic-errors'
+;   duplicate: 'gcc/Warning-Options.html#index-pedantic-errors-1'
+;   duplicate: 'gcc/Warnings-and-Errors.html#index-pedantic-errors-3'
+
+pg
+UrlSuffix(gcc/Instrumentation-Options.html#index-pg)
+
+pipe
+UrlSuffix(gcc/Overall-Options.html#index-pipe)
+
+print-file-name=
+UrlSuffix(gcc/Developer-Options.html#index-print-file-name)
+
+print-libgcc-file-name
+UrlSuffix(gcc/Developer-Options.html#index-print-libgcc-file-name)
+
+print-multi-directory
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-directory)
+
+print-multi-lib
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-lib)
+
+print-multi-os-directory
+UrlSuffix(gcc/Developer-Options.html#index-print-multi-os-directory)
+
+print-multiarch
+UrlSuffix(gcc/Developer-Options.html#index-print-multiarch)
+
+print-prog-name=
+UrlSuffix(gcc/Developer-Options.html#index-print-prog-name)
+
+print-search-dirs
+UrlSuffix(gcc/Developer-Options.html#index-print-search-dirs)
+
+print-sysroot
+UrlSuffix(gcc/Developer-Options.html#index-print-sysroot)
+
+print-sysroot-headers-suffix
+UrlSuffix(gcc/Developer-Options.html#index-print-sysroot-headers-suffix)
+
+r
+UrlSuffix(gcc/Link-Options.html#index-r)
+
+s
+UrlSuffix(gcc/Link-Options.html#index-s)
+
+save-temps
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+save-temps=
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+time
+UrlSuffix(gcc/Developer-Options.html#index-time)
+
+time=
+UrlSuffix(gcc/Developer-Options.html#index-time)
+
+u
+UrlSuffix(gcc/Link-Options.html#index-u)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
+version
+UrlSuffix(gcc/Overall-Options.html#index-version)
+
+w
+UrlSuffix(gcc/Warning-Options.html#index-w)
+
+wrapper
+UrlSuffix(gcc/Overall-Options.html#index-wrapper)
+
+x
+UrlSuffix(gcc/Overall-Options.html#index-x)
+
+shared
+UrlSuffix(gcc/Link-Options.html#index-shared)
+
+shared-libgcc
+UrlSuffix(gcc/Link-Options.html#index-shared-libgcc)
+
+specs
+UrlSuffix(gcc/Overall-Options.html#index-specs)
+
+specs=
+UrlSuffix(gcc/Overall-Options.html#index-specs)
+
+; skipping UrlSuffix for 'static' due to multiple URLs:
+;   duplicate: 'gcc/Darwin-Options.html#index-static-1'
+;   duplicate: 'gcc/Link-Options.html#index-static'
+
+static-libgcc
+UrlSuffix(gcc/Link-Options.html#index-static-libgcc)
+
+static-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-static-libphobos)
+
+static-libstdc++
+UrlSuffix(gcc/Link-Options.html#index-static-libstdc_002b_002b)
+
+static-libasan
+UrlSuffix(gcc/Link-Options.html#index-static-libasan)
+
+static-libtsan
+UrlSuffix(gcc/Link-Options.html#index-static-libtsan)
+
+static-liblsan
+UrlSuffix(gcc/Link-Options.html#index-static-liblsan)
+
+static-libubsan
+UrlSuffix(gcc/Link-Options.html#index-static-libubsan)
+
+symbolic
+UrlSuffix(gcc/Link-Options.html#index-symbolic)
+
+no-pie
+UrlSuffix(gcc/Link-Options.html#index-no-pie)
+
+pie
+UrlSuffix(gcc/Link-Options.html#index-pie)
+
+static-pie
+UrlSuffix(gcc/Link-Options.html#index-static-pie)
+
+z
+UrlSuffix(gcc/Link-Options.html#index-z)
+
+fipa-ra
+UrlSuffix(gcc/Optimize-Options.html#index-fipa-ra)
+
diff --git a/gcc/config/aarch64/aarch64.opt.urls b/gcc/config/aarch64/aarch64.opt.urls
new file mode 100644
index 000000000000..ab0d26c18572
--- /dev/null
+++ b/gcc/config/aarch64/aarch64.opt.urls
@@ -0,0 +1,87 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/aarch64/aarch64.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/AArch64-Options.html#index-mbig-endian)
+
+mgeneral-regs-only
+UrlSuffix(gcc/AArch64-Options.html#index-mgeneral-regs-only)
+
+mharden-sls=
+UrlSuffix(gcc/AArch64-Options.html#index-mharden-sls)
+
+mfix-cortex-a53-835769
+UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-835769)
+
+mfix-cortex-a53-843419
+UrlSuffix(gcc/AArch64-Options.html#index-mfix-cortex-a53-843419)
+
+mlittle-endian
+UrlSuffix(gcc/AArch64-Options.html#index-mlittle-endian)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mtp=
+UrlSuffix(gcc/AArch64-Options.html#index-mtp)
+
+mstrict-align
+UrlSuffix(gcc/AArch64-Options.html#index-mstrict-align)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/AArch64-Options.html#index-momit-leaf-frame-pointer)
+
+; skipping UrlSuffix for 'mtls-dialect=' due to finding no URLs
+
+mtls-size=
+UrlSuffix(gcc/AArch64-Options.html#index-mtls-size)
+
+march=
+UrlSuffix(gcc/AArch64-Options.html#index-march)
+
+mcpu=
+UrlSuffix(gcc/AArch64-Options.html#index-mcpu)
+
+mtune=
+UrlSuffix(gcc/AArch64-Options.html#index-mtune)
+
+mabi=
+UrlSuffix(gcc/AArch64-Options.html#index-mabi)
+
+moverride=
+UrlSuffix(gcc/AArch64-Options.html#index-moverride)
+
+mpc-relative-literal-loads
+UrlSuffix(gcc/AArch64-Options.html#index-mpc-relative-literal-loads)
+
+mbranch-protection=
+UrlSuffix(gcc/AArch64-Options.html#index-mbranch-protection)
+
+msign-return-address=
+UrlSuffix(gcc/AArch64-Options.html#index-msign-return-address)
+
+mlow-precision-recip-sqrt
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-recip-sqrt)
+
+mlow-precision-sqrt
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-sqrt)
+
+mlow-precision-div
+UrlSuffix(gcc/AArch64-Options.html#index-mlow-precision-div)
+
+mearly-ra=
+UrlSuffix(gcc/AArch64-Options.html#index-mearly-ra)
+
+msve-vector-bits=
+UrlSuffix(gcc/AArch64-Options.html#index-msve-vector-bits)
+
+mverbose-cost-dump
+UrlSuffix(gcc/AArch64-Options.html#index-mverbose-cost-dump)
+
+mstack-protector-guard=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-reg)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/AArch64-Options.html#index-mstack-protector-guard-offset)
+
diff --git a/gcc/config/alpha/alpha.opt.urls b/gcc/config/alpha/alpha.opt.urls
new file mode 100644
index 000000000000..a55c08328c37
--- /dev/null
+++ b/gcc/config/alpha/alpha.opt.urls
@@ -0,0 +1,76 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/alpha.opt and generated HTML
+
+msoft-float
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msoft-float-2)
+
+; skipping UrlSuffix for 'mgas' due to finding no URLs
+
+mieee-conformant
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-conformant)
+
+mieee
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee)
+
+mieee-with-inexact
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mieee-with-inexact)
+
+mbuild-constants
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbuild-constants)
+
+mfloat-vax
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-vax)
+
+mfloat-ieee
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfloat-ieee)
+
+mbwx
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mbwx)
+
+mmax
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmax)
+
+mfix
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfix)
+
+mcix
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcix)
+
+mexplicit-relocs
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mexplicit-relocs)
+
+msmall-data
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-data)
+
+mlarge-data
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-data)
+
+msmall-text
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-msmall-text)
+
+mlarge-text
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mlarge-text)
+
+; skipping UrlSuffix for 'mlong-double-128' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-double-64' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mcpu-4)
+
+mtune=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtune-6)
+
+mfp-rounding-mode=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-rounding-mode)
+
+mfp-trap-mode=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mfp-trap-mode)
+
+mtrap-precision=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mtrap-precision)
+
+mmemory-latency=
+UrlSuffix(gcc/DEC-Alpha-Options.html#index-mmemory-latency)
+
+; skipping UrlSuffix for 'mtls-size=' due to finding no URLs
+
diff --git a/gcc/config/alpha/elf.opt.urls b/gcc/config/alpha/elf.opt.urls
new file mode 100644
index 000000000000..d97d0fe0f6a1
--- /dev/null
+++ b/gcc/config/alpha/elf.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/alpha/elf.opt and generated HTML
+
diff --git a/gcc/config/arc/arc-tables.opt.urls b/gcc/config/arc/arc-tables.opt.urls
new file mode 100644
index 000000000000..1e177e874064
--- /dev/null
+++ b/gcc/config/arc/arc-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc-tables.opt and generated HTML
+
diff --git a/gcc/config/arc/arc.opt.urls b/gcc/config/arc/arc.opt.urls
new file mode 100644
index 000000000000..bb9a8ebcc24a
--- /dev/null
+++ b/gcc/config/arc/arc.opt.urls
@@ -0,0 +1,260 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arc/arc.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/ARC-Options.html#index-mbig-endian-1)
+
+mlittle-endian
+UrlSuffix(gcc/ARC-Options.html#index-mlittle-endian-1)
+
+mno-cond-exec
+UrlSuffix(gcc/ARC-Options.html#index-mno-cond-exec)
+
+mA6
+UrlSuffix(gcc/ARC-Options.html#index-mA6)
+
+mARC600
+UrlSuffix(gcc/ARC-Options.html#index-mARC600)
+
+mARC601
+UrlSuffix(gcc/ARC-Options.html#index-mARC601)
+
+mA7
+UrlSuffix(gcc/ARC-Options.html#index-mA7)
+
+mARC700
+UrlSuffix(gcc/ARC-Options.html#index-mARC700)
+
+mjli-always
+UrlSuffix(gcc/ARC-Options.html#index-mjli-always)
+
+mmpy-option=
+UrlSuffix(gcc/ARC-Options.html#index-mmpy-option)
+
+mdiv-rem
+UrlSuffix(gcc/ARC-Options.html#index-mdiv-rem)
+
+mcode-density
+UrlSuffix(gcc/ARC-Options.html#index-mcode-density)
+
+mmixed-code
+UrlSuffix(gcc/ARC-Options.html#index-mmixed-code)
+
+mvolatile-cache
+UrlSuffix(gcc/ARC-Options.html#index-mvolatile-cache)
+
+mno-volatile-cache
+UrlSuffix(gcc/ARC-Options.html#index-mno-volatile-cache)
+
+mbarrel-shifter
+UrlSuffix(gcc/ARC-Options.html#index-mbarrel-shifter)
+
+mnorm
+UrlSuffix(gcc/ARC-Options.html#index-mnorm)
+
+mswap
+UrlSuffix(gcc/ARC-Options.html#index-mswap)
+
+mmul64
+UrlSuffix(gcc/ARC-Options.html#index-mmul64)
+
+mno-mpy
+UrlSuffix(gcc/ARC-Options.html#index-mno-mpy)
+
+mea
+UrlSuffix(gcc/ARC-Options.html#index-mea)
+
+msoft-float
+UrlSuffix(gcc/ARC-Options.html#index-msoft-float)
+
+mlong-calls
+UrlSuffix(gcc/ARC-Options.html#index-mlong-calls-1)
+
+mno-brcc
+UrlSuffix(gcc/ARC-Options.html#index-mno-brcc)
+
+msdata
+UrlSuffix(gcc/ARC-Options.html#index-msdata)
+
+mmillicode
+UrlSuffix(gcc/ARC-Options.html#index-mmillicode)
+
+mspfp
+UrlSuffix(gcc/ARC-Options.html#index-mspfp)
+
+mspfp-compact
+UrlSuffix(gcc/ARC-Options.html#index-mspfp-compact)
+
+mspfp-fast
+UrlSuffix(gcc/ARC-Options.html#index-mspfp-fast)
+
+margonaut
+UrlSuffix(gcc/ARC-Options.html#index-margonaut)
+
+mdpfp
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp)
+
+mdpfp-compact
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp-compact)
+
+mdpfp-fast
+UrlSuffix(gcc/ARC-Options.html#index-mdpfp-fast)
+
+mno-dpfp-lrsr
+UrlSuffix(gcc/ARC-Options.html#index-mno-dpfp-lrsr)
+
+msimd
+UrlSuffix(gcc/ARC-Options.html#index-msimd)
+
+mcpu=
+UrlSuffix(gcc/ARC-Options.html#index-mcpu-1)
+
+msize-level=
+UrlSuffix(gcc/ARC-Options.html#index-msize-level)
+
+misize
+UrlSuffix(gcc/ARC-Options.html#index-misize)
+
+mmultcost=
+UrlSuffix(gcc/ARC-Options.html#index-mmultcost)
+
+mtune=
+UrlSuffix(gcc/ARC-Options.html#index-mtune-2)
+
+mindexed-loads
+UrlSuffix(gcc/ARC-Options.html#index-mindexed-loads)
+
+mauto-modify-reg
+UrlSuffix(gcc/ARC-Options.html#index-mauto-modify-reg)
+
+mmul32x16
+UrlSuffix(gcc/ARC-Options.html#index-mmul32x16)
+
+munalign-prob-threshold=
+UrlSuffix(gcc/ARC-Options.html#index-munalign-prob-threshold)
+
+mmedium-calls
+UrlSuffix(gcc/ARC-Options.html#index-mmedium-calls)
+
+mannotate-align
+UrlSuffix(gcc/ARC-Options.html#index-mannotate-align)
+
+malign-call
+UrlSuffix(gcc/ARC-Options.html#index-malign-call)
+
+mRcq
+UrlSuffix(gcc/ARC-Options.html#index-mRcq)
+
+mRcw
+UrlSuffix(gcc/ARC-Options.html#index-mRcw)
+
+mearly-cbranchsi
+UrlSuffix(gcc/ARC-Options.html#index-mearly-cbranchsi)
+
+mbbit-peephole
+UrlSuffix(gcc/ARC-Options.html#index-mbbit-peephole)
+
+mcase-vector-pcrel
+UrlSuffix(gcc/ARC-Options.html#index-mcase-vector-pcrel)
+
+mcompact-casesi
+UrlSuffix(gcc/ARC-Options.html#index-mcompact-casesi)
+
+mq-class
+UrlSuffix(gcc/ARC-Options.html#index-mq-class)
+
+mexpand-adddi
+UrlSuffix(gcc/ARC-Options.html#index-mexpand-adddi)
+
+; skipping UrlSuffix for 'mcrc' due to finding no URLs
+
+mdsp-packa
+UrlSuffix(gcc/ARC-Options.html#index-mdsp-packa)
+
+mdvbf
+UrlSuffix(gcc/ARC-Options.html#index-mdvbf)
+
+mmac-d16
+UrlSuffix(gcc/ARC-Options.html#index-mmac-d16)
+
+mmac-24
+UrlSuffix(gcc/ARC-Options.html#index-mmac-24)
+
+mtelephony
+UrlSuffix(gcc/ARC-Options.html#index-mtelephony)
+
+mxy
+UrlSuffix(gcc/ARC-Options.html#index-mxy)
+
+mlock
+UrlSuffix(gcc/ARC-Options.html#index-mlock)
+
+mswape
+UrlSuffix(gcc/ARC-Options.html#index-mswape)
+
+mrtsc
+UrlSuffix(gcc/ARC-Options.html#index-mrtsc)
+
+EB
+UrlSuffix(gcc/ARC-Options.html#index-EB)
+
+EL
+UrlSuffix(gcc/ARC-Options.html#index-EL)
+
+marclinux
+UrlSuffix(gcc/ARC-Options.html#index-marclinux)
+
+marclinux_prof
+UrlSuffix(gcc/ARC-Options.html#index-marclinux_005fprof)
+
+mlra
+UrlSuffix(gcc/ARC-Options.html#index-mlra)
+
+mlra-priority-none
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-none)
+
+mlra-priority-compact
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-compact)
+
+mlra-priority-noncompact
+UrlSuffix(gcc/ARC-Options.html#index-mlra-priority-noncompact)
+
+mEA
+UrlSuffix(gcc/ARC-Options.html#index-mEA)
+
+multcost=
+UrlSuffix(gcc/ARC-Options.html#index-multcost)
+
+matomic
+UrlSuffix(gcc/ARC-Options.html#index-matomic)
+
+mll64
+UrlSuffix(gcc/ARC-Options.html#index-mll64)
+
+mfpu=
+UrlSuffix(gcc/ARC-Options.html#index-mfpu)
+
+mtp-regno=
+UrlSuffix(gcc/ARC-Options.html#index-mtp-regno)
+
+; skipping UrlSuffix for 'mbitops' due to finding no URLs
+
+; skipping UrlSuffix for 'munaligned-access' due to finding no URLs
+
+mirq-ctrl-saved=
+UrlSuffix(gcc/ARC-Options.html#index-mirq-ctrl-saved)
+
+mrgf-banked-regs=
+UrlSuffix(gcc/ARC-Options.html#index-mrgf-banked-regs)
+
+mlpc-width=
+UrlSuffix(gcc/ARC-Options.html#index-mlpc-width)
+
+mrf16
+UrlSuffix(gcc/ARC-Options.html#index-mrf16)
+
+mbranch-index
+UrlSuffix(gcc/ARC-Options.html#index-mbranch-index)
+
+mcode-density-frame
+UrlSuffix(gcc/ARC-Options.html#index-mcode-density-frame)
+
diff --git a/gcc/config/arm/arm-tables.opt.urls b/gcc/config/arm/arm-tables.opt.urls
new file mode 100644
index 000000000000..f0a6f8e1600c
--- /dev/null
+++ b/gcc/config/arm/arm-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm-tables.opt and generated HTML
+
diff --git a/gcc/config/arm/arm.opt.urls b/gcc/config/arm/arm.opt.urls
new file mode 100644
index 000000000000..b3696f78bc73
--- /dev/null
+++ b/gcc/config/arm/arm.opt.urls
@@ -0,0 +1,149 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/arm.opt and generated HTML
+
+mabi=
+UrlSuffix(gcc/ARM-Options.html#index-mabi-1)
+
+mabort-on-noreturn
+UrlSuffix(gcc/ARM-Options.html#index-mabort-on-noreturn)
+
+mapcs
+UrlSuffix(gcc/ARM-Options.html#index-mapcs)
+
+mapcs-frame
+UrlSuffix(gcc/ARM-Options.html#index-mapcs-frame)
+
+march=
+UrlSuffix(gcc/ARM-Options.html#index-march-2)
+
+marm
+UrlSuffix(gcc/ARM-Options.html#index-marm)
+
+mbig-endian
+UrlSuffix(gcc/ARM-Options.html#index-mbig-endian-2)
+
+mcallee-super-interworking
+UrlSuffix(gcc/ARM-Options.html#index-mcallee-super-interworking)
+
+mcaller-super-interworking
+UrlSuffix(gcc/ARM-Options.html#index-mcaller-super-interworking)
+
+mcpu=
+UrlSuffix(gcc/ARM-Options.html#index-mcpu-2)
+
+mfloat-abi=
+UrlSuffix(gcc/ARM-Options.html#index-mfloat-abi)
+
+mcmse
+UrlSuffix(gcc/ARM-Options.html#index-mcmse)
+
+mflip-thumb
+UrlSuffix(gcc/ARM-Options.html#index-mflip-thumb)
+
+mfp16-format=
+UrlSuffix(gcc/ARM-Options.html#index-mfp16-format)
+
+mfpu=
+UrlSuffix(gcc/ARM-Options.html#index-mfpu-1)
+
+; skipping UrlSuffix for 'mhard-float' due to finding no URLs
+
+mlittle-endian
+UrlSuffix(gcc/ARM-Options.html#index-mlittle-endian-2)
+
+mlong-calls
+UrlSuffix(gcc/ARM-Options.html#index-mlong-calls-2)
+
+mpic-data-is-text-relative
+UrlSuffix(gcc/ARM-Options.html#index-mpic-data-is-text-relative)
+
+mpic-register=
+UrlSuffix(gcc/ARM-Options.html#index-mpic-register)
+
+mpoke-function-name
+UrlSuffix(gcc/ARM-Options.html#index-mpoke-function-name)
+
+msched-prolog
+UrlSuffix(gcc/ARM-Options.html#index-msched-prolog)
+
+msingle-pic-base
+UrlSuffix(gcc/ARM-Options.html#index-msingle-pic-base)
+
+; skipping UrlSuffix for 'msoft-float' due to finding no URLs
+
+mstructure-size-boundary=
+UrlSuffix(gcc/ARM-Options.html#index-mstructure-size-boundary)
+
+mthumb
+UrlSuffix(gcc/ARM-Options.html#index-mthumb)
+
+mthumb-interwork
+UrlSuffix(gcc/ARM-Options.html#index-mthumb-interwork)
+
+mtls-dialect=
+UrlSuffix(gcc/ARM-Options.html#index-mtls-dialect)
+
+mtp=
+UrlSuffix(gcc/ARM-Options.html#index-mtp-1)
+
+mtpcs-frame
+UrlSuffix(gcc/ARM-Options.html#index-mtpcs-frame)
+
+mtpcs-leaf-frame
+UrlSuffix(gcc/ARM-Options.html#index-mtpcs-leaf-frame)
+
+mtune=
+UrlSuffix(gcc/ARM-Options.html#index-mtune-4)
+
+mprint-tune-info
+UrlSuffix(gcc/ARM-Options.html#index-mprint-tune-info)
+
+mverbose-cost-dump
+UrlSuffix(gcc/ARM-Options.html#index-mverbose-cost-dump-1)
+
+mword-relocations
+UrlSuffix(gcc/ARM-Options.html#index-mword-relocations)
+
+mrestrict-it
+UrlSuffix(gcc/ARM-Options.html#index-mrestrict-it)
+
+mfix-cortex-m3-ldrd
+UrlSuffix(gcc/ARM-Options.html#index-mfix-cortex-m3-ldrd)
+
+mfix-cmse-cve-2021-35465
+UrlSuffix(gcc/ARM-Options.html#index-mfix-cmse-cve-2021-35465)
+
+munaligned-access
+UrlSuffix(gcc/ARM-Options.html#index-munaligned-access)
+
+mneon-for-64bits
+UrlSuffix(gcc/ARM-Options.html#index-mneon-for-64bits)
+
+mslow-flash-data
+UrlSuffix(gcc/ARM-Options.html#index-mslow-flash-data)
+
+masm-syntax-unified
+UrlSuffix(gcc/ARM-Options.html#index-masm-syntax-unified)
+
+mpure-code
+UrlSuffix(gcc/ARM-Options.html#index-mpure-code)
+
+mbe8
+UrlSuffix(gcc/ARM-Options.html#index-mbe8)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mbranch-protection=
+UrlSuffix(gcc/ARM-Options.html#index-mbranch-protection-1)
+
+mgeneral-regs-only
+UrlSuffix(gcc/ARM-Options.html#index-mgeneral-regs-only-1)
+
+mfdpic
+UrlSuffix(gcc/ARM-Options.html#index-mfdpic)
+
+mstack-protector-guard=
+UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-1)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/ARM-Options.html#index-mstack-protector-guard-offset-1)
+
diff --git a/gcc/config/arm/vxworks.opt.urls b/gcc/config/arm/vxworks.opt.urls
new file mode 100644
index 000000000000..8fe7eec22783
--- /dev/null
+++ b/gcc/config/arm/vxworks.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/arm/vxworks.opt and generated HTML
+
diff --git a/gcc/config/avr/avr.opt.urls b/gcc/config/avr/avr.opt.urls
new file mode 100644
index 000000000000..7af677199cc4
--- /dev/null
+++ b/gcc/config/avr/avr.opt.urls
@@ -0,0 +1,71 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/avr/avr.opt and generated HTML
+
+mcall-prologues
+UrlSuffix(gcc/AVR-Options.html#index-mcall-prologues)
+
+mmcu=
+UrlSuffix(gcc/AVR-Options.html#index-mmcu)
+
+mgas-isr-prologues
+UrlSuffix(gcc/AVR-Options.html#index-mgas-isr-prologues)
+
+mn-flash=
+UrlSuffix(gcc/AVR-Options.html#index-mn-flash)
+
+mrmw
+UrlSuffix(gcc/AVR-Options.html#index-mrmw)
+
+mshort-calls
+UrlSuffix(gcc/AVR-Options.html#index-mshort-calls)
+
+mint8
+UrlSuffix(gcc/AVR-Options.html#index-mint8)
+
+mno-interrupts
+UrlSuffix(gcc/AVR-Options.html#index-mno-interrupts)
+
+mbranch-cost=
+UrlSuffix(gcc/AVR-Options.html#index-mbranch-cost-1)
+
+mmain-is-OS_task
+UrlSuffix(gcc/AVR-Options.html#index-mmain-is-OS_005ftask)
+
+mtiny-stack
+UrlSuffix(gcc/AVR-Options.html#index-mtiny-stack)
+
+mrelax
+UrlSuffix(gcc/AVR-Options.html#index-mrelax)
+
+maccumulate-args
+UrlSuffix(gcc/AVR-Options.html#index-maccumulate-args)
+
+mstrict-X
+UrlSuffix(gcc/AVR-Options.html#index-mstrict-X)
+
+msp8
+UrlSuffix(gcc/AVR-Options.html#index-msp8)
+
+Waddr-space-convert
+UrlSuffix(gcc/AVR-Options.html#index-Waddr-space-convert)
+
+Wmisspelled-isr
+UrlSuffix(gcc/AVR-Options.html#index-Wmisspelled-isr)
+
+mfract-convert-truncate
+UrlSuffix(gcc/AVR-Options.html#index-mfract-convert-truncate)
+
+mabsdata
+UrlSuffix(gcc/AVR-Options.html#index-mabsdata)
+
+mdouble=
+UrlSuffix(gcc/AVR-Options.html#index-mdouble)
+
+mlong-double=
+UrlSuffix(gcc/AVR-Options.html#index-mlong-double)
+
+nodevicelib
+UrlSuffix(gcc/AVR-Options.html#index-nodevicelib)
+
+nodevicespecs
+UrlSuffix(gcc/AVR-Options.html#index-nodevicespecs)
+
diff --git a/gcc/config/bfin/bfin.opt.urls b/gcc/config/bfin/bfin.opt.urls
new file mode 100644
index 000000000000..8210fee663fd
--- /dev/null
+++ b/gcc/config/bfin/bfin.opt.urls
@@ -0,0 +1,61 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/bfin/bfin.opt and generated HTML
+
+msim
+UrlSuffix(gcc/Blackfin-Options.html#index-msim)
+
+mcpu=
+UrlSuffix(gcc/Blackfin-Options.html#index-mcpu_003d)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/Blackfin-Options.html#index-momit-leaf-frame-pointer-1)
+
+mlow64k
+UrlSuffix(gcc/Blackfin-Options.html#index-mlow64k)
+
+mcsync-anomaly
+UrlSuffix(gcc/Blackfin-Options.html#index-mcsync-anomaly)
+
+mspecld-anomaly
+UrlSuffix(gcc/Blackfin-Options.html#index-mspecld-anomaly)
+
+mid-shared-library
+UrlSuffix(gcc/Blackfin-Options.html#index-mid-shared-library)
+
+mleaf-id-shared-library
+UrlSuffix(gcc/Blackfin-Options.html#index-mleaf-id-shared-library)
+
+mshared-library-id=
+UrlSuffix(gcc/Blackfin-Options.html#index-mshared-library-id)
+
+msep-data
+UrlSuffix(gcc/Blackfin-Options.html#index-msep-data)
+
+mlong-calls
+UrlSuffix(gcc/Blackfin-Options.html#index-mlong-calls-3)
+
+mfast-fp
+UrlSuffix(gcc/Blackfin-Options.html#index-mfast-fp)
+
+; skipping UrlSuffix for 'mfdpic' due to finding no URLs
+
+minline-plt
+UrlSuffix(gcc/Blackfin-Options.html#index-minline-plt)
+
+mstack-check-l1
+UrlSuffix(gcc/Blackfin-Options.html#index-mstack-check-l1)
+
+mmulticore
+UrlSuffix(gcc/Blackfin-Options.html#index-mmulticore)
+
+mcorea
+UrlSuffix(gcc/Blackfin-Options.html#index-mcorea)
+
+mcoreb
+UrlSuffix(gcc/Blackfin-Options.html#index-mcoreb)
+
+msdram
+UrlSuffix(gcc/Blackfin-Options.html#index-msdram)
+
+micplb
+UrlSuffix(gcc/Blackfin-Options.html#index-micplb)
+
diff --git a/gcc/config/bpf/bpf.opt.urls b/gcc/config/bpf/bpf.opt.urls
new file mode 100644
index 000000000000..8c1e5f86d5cc
--- /dev/null
+++ b/gcc/config/bpf/bpf.opt.urls
@@ -0,0 +1,35 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/bpf/bpf.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/eBPF-Options.html#index-mbig-endian-5)
+
+mlittle-endian
+UrlSuffix(gcc/eBPF-Options.html#index-mlittle-endian-5)
+
+mco-re
+UrlSuffix(gcc/eBPF-Options.html#index-mco-re)
+
+mjmpext
+UrlSuffix(gcc/eBPF-Options.html#index-mjmpext)
+
+malu32
+UrlSuffix(gcc/eBPF-Options.html#index-malu32)
+
+mjmp32
+UrlSuffix(gcc/eBPF-Options.html#index-mjmp32)
+
+mv3-atomics
+UrlSuffix(gcc/eBPF-Options.html#index-mv3-atomics)
+
+mbswap
+UrlSuffix(gcc/eBPF-Options.html#index-mbswap)
+
+msdiv
+UrlSuffix(gcc/eBPF-Options.html#index-msdiv)
+
+msmov
+UrlSuffix(gcc/eBPF-Options.html#index-msmov)
+
+mcpu=
+UrlSuffix(gcc/eBPF-Options.html#index-mcpu-5)
+
diff --git a/gcc/config/c6x/c6x-tables.opt.urls b/gcc/config/c6x/c6x-tables.opt.urls
new file mode 100644
index 000000000000..35d14c753e2c
--- /dev/null
+++ b/gcc/config/c6x/c6x-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x-tables.opt and generated HTML
+
diff --git a/gcc/config/c6x/c6x.opt.urls b/gcc/config/c6x/c6x.opt.urls
new file mode 100644
index 000000000000..5b1c103b43f2
--- /dev/null
+++ b/gcc/config/c6x/c6x.opt.urls
@@ -0,0 +1,18 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/c6x/c6x.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/C6X-Options.html#index-mbig-endian-3)
+
+mlittle-endian
+UrlSuffix(gcc/C6X-Options.html#index-mlittle-endian-3)
+
+msim
+UrlSuffix(gcc/C6X-Options.html#index-msim-1)
+
+; skipping UrlSuffix for 'msdata=' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-calls' due to finding no URLs
+
+march=
+UrlSuffix(gcc/C6X-Options.html#index-march-3)
+
diff --git a/gcc/config/cris/cris.opt.urls b/gcc/config/cris/cris.opt.urls
new file mode 100644
index 000000000000..56eeaa25da1c
--- /dev/null
+++ b/gcc/config/cris/cris.opt.urls
@@ -0,0 +1,65 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/cris.opt and generated HTML
+
+mmul-bug-workaround
+UrlSuffix(gcc/CRIS-Options.html#index-mmul-bug-workaround)
+
+metrax4
+UrlSuffix(gcc/CRIS-Options.html#index-metrax4)
+
+metrax100
+UrlSuffix(gcc/CRIS-Options.html#index-metrax100)
+
+mpdebug
+UrlSuffix(gcc/CRIS-Options.html#index-mpdebug)
+
+mcc-init
+UrlSuffix(gcc/CRIS-Options.html#index-mcc-init)
+
+mside-effects
+UrlSuffix(gcc/CRIS-Options.html#index-mside-effects)
+
+mno-side-effects
+UrlSuffix(gcc/CRIS-Options.html#index-mno-side-effects)
+
+mstack-align
+UrlSuffix(gcc/CRIS-Options.html#index-mstack-align)
+
+mno-stack-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-stack-align)
+
+mdata-align
+UrlSuffix(gcc/CRIS-Options.html#index-mdata-align)
+
+mno-data-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-data-align)
+
+mconst-align
+UrlSuffix(gcc/CRIS-Options.html#index-mconst-align)
+
+mno-const-align
+UrlSuffix(gcc/CRIS-Options.html#index-mno-const-align)
+
+m32-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m32-bit)
+
+m16-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m16-bit)
+
+m8-bit
+UrlSuffix(gcc/CRIS-Options.html#index-m8-bit)
+
+mprologue-epilogue
+UrlSuffix(gcc/CRIS-Options.html#index-mprologue-epilogue)
+
+mno-prologue-epilogue
+UrlSuffix(gcc/CRIS-Options.html#index-mno-prologue-epilogue)
+
+mcpu=
+UrlSuffix(gcc/CRIS-Options.html#index-mcpu-3)
+
+march=
+UrlSuffix(gcc/CRIS-Options.html#index-march-4)
+
+mtune=
+UrlSuffix(gcc/CRIS-Options.html#index-mtune-5)
+
diff --git a/gcc/config/cris/elf.opt.urls b/gcc/config/cris/elf.opt.urls
new file mode 100644
index 000000000000..bdfa01e97a49
--- /dev/null
+++ b/gcc/config/cris/elf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/cris/elf.opt and generated HTML
+
+melf
+UrlSuffix(gcc/CRIS-Options.html#index-melf)
+
+sim
+UrlSuffix(gcc/CRIS-Options.html#index-sim)
+
diff --git a/gcc/config/csky/csky.opt.urls b/gcc/config/csky/csky.opt.urls
new file mode 100644
index 000000000000..96b0b174f7c9
--- /dev/null
+++ b/gcc/config/csky/csky.opt.urls
@@ -0,0 +1,104 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky.opt and generated HTML
+
+march=
+UrlSuffix(gcc/C-SKY-Options.html#index-march_003d)
+
+mcpu=
+UrlSuffix(gcc/C-SKY-Options.html#index-mcpu_003d-1)
+
+mbig-endian
+UrlSuffix(gcc/C-SKY-Options.html#index-mbig-endian-4)
+
+EB
+UrlSuffix(gcc/C-SKY-Options.html#index-EB-1)
+
+mlittle-endian
+UrlSuffix(gcc/C-SKY-Options.html#index-mlittle-endian-4)
+
+EL
+UrlSuffix(gcc/C-SKY-Options.html#index-EL-1)
+
+mhard-float
+UrlSuffix(gcc/C-SKY-Options.html#index-mhard-float)
+
+msoft-float
+UrlSuffix(gcc/C-SKY-Options.html#index-msoft-float-1)
+
+mfloat-abi=
+UrlSuffix(gcc/C-SKY-Options.html#index-mfloat-abi-1)
+
+mfpu=
+UrlSuffix(gcc/C-SKY-Options.html#index-mfpu_003d)
+
+mdouble-float
+UrlSuffix(gcc/C-SKY-Options.html#index-mdouble-float)
+
+mfdivdu
+UrlSuffix(gcc/C-SKY-Options.html#index-mfdivdu)
+
+melrw
+UrlSuffix(gcc/C-SKY-Options.html#index-melrw)
+
+mistack
+UrlSuffix(gcc/C-SKY-Options.html#index-mistack)
+
+mmp
+UrlSuffix(gcc/C-SKY-Options.html#index-mmp)
+
+mcp
+UrlSuffix(gcc/C-SKY-Options.html#index-mcp)
+
+mcache
+UrlSuffix(gcc/C-SKY-Options.html#index-mcache)
+
+msecurity
+UrlSuffix(gcc/C-SKY-Options.html#index-msecurity)
+
+mtrust
+UrlSuffix(gcc/C-SKY-Options.html#index-mtrust)
+
+mdsp
+UrlSuffix(gcc/C-SKY-Options.html#index-mdsp)
+
+medsp
+UrlSuffix(gcc/C-SKY-Options.html#index-medsp)
+
+mvdsp
+UrlSuffix(gcc/C-SKY-Options.html#index-mvdsp)
+
+mdiv
+UrlSuffix(gcc/C-SKY-Options.html#index-mdiv)
+
+msmart
+UrlSuffix(gcc/C-SKY-Options.html#index-msmart)
+
+mhigh-registers
+UrlSuffix(gcc/C-SKY-Options.html#index-mhigh-registers)
+
+manchor
+UrlSuffix(gcc/C-SKY-Options.html#index-manchor)
+
+mpushpop
+UrlSuffix(gcc/C-SKY-Options.html#index-mpushpop)
+
+mmultiple-stld
+UrlSuffix(gcc/C-SKY-Options.html#index-mmultiple-stld)
+
+mconstpool
+UrlSuffix(gcc/C-SKY-Options.html#index-mconstpool)
+
+mstack-size
+UrlSuffix(gcc/C-SKY-Options.html#index-mstack-size-1)
+
+mccrt
+UrlSuffix(gcc/C-SKY-Options.html#index-mccrt)
+
+mbranch-cost=
+UrlSuffix(gcc/C-SKY-Options.html#index-mbranch-cost_003d)
+
+msched-prolog
+UrlSuffix(gcc/C-SKY-Options.html#index-msched-prolog-1)
+
+msim
+UrlSuffix(gcc/C-SKY-Options.html#index-msim-2)
+
diff --git a/gcc/config/csky/csky_tables.opt.urls b/gcc/config/csky/csky_tables.opt.urls
new file mode 100644
index 000000000000..eaa247bc897c
--- /dev/null
+++ b/gcc/config/csky/csky_tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/csky/csky_tables.opt and generated HTML
+
diff --git a/gcc/config/darwin.opt.urls b/gcc/config/darwin.opt.urls
new file mode 100644
index 000000000000..e83d183ac161
--- /dev/null
+++ b/gcc/config/darwin.opt.urls
@@ -0,0 +1,224 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/darwin.opt and generated HTML
+
+dependency-file
+UrlSuffix(gcc/Darwin-Options.html#index-dependency-file)
+
+fconstant-cfstrings
+UrlSuffix(gcc/Darwin-Options.html#index-fconstant-cfstrings)
+
+iframework
+UrlSuffix(gcc/Darwin-Options.html#index-iframework)
+
+mconstant-cfstrings
+UrlSuffix(gcc/Darwin-Options.html#index-mconstant-cfstrings)
+
+; skipping UrlSuffix for 'mdynamic-no-pic' due to finding no URLs
+
+mfix-and-continue
+UrlSuffix(gcc/Darwin-Options.html#index-mfix-and-continue)
+
+mkernel
+UrlSuffix(gcc/Darwin-Options.html#index-mkernel)
+
+mmacosx-version-min=
+UrlSuffix(gcc/Darwin-Options.html#index-mmacosx-version-min)
+
+mone-byte-bool
+UrlSuffix(gcc/Darwin-Options.html#index-mone-byte-bool)
+
+all_load
+UrlSuffix(gcc/Darwin-Options.html#index-all_005fload)
+
+allowable_client
+UrlSuffix(gcc/Darwin-Options.html#index-allowable_005fclient)
+
+arch_errors_fatal
+UrlSuffix(gcc/Darwin-Options.html#index-arch_005ferrors_005ffatal)
+
+bind_at_load
+UrlSuffix(gcc/Darwin-Options.html#index-bind_005fat_005fload)
+
+bundle
+UrlSuffix(gcc/Darwin-Options.html#index-bundle)
+
+bundle_loader
+UrlSuffix(gcc/Darwin-Options.html#index-bundle_005floader)
+
+client_name
+UrlSuffix(gcc/Darwin-Options.html#index-client_005fname)
+
+compatibility_version
+UrlSuffix(gcc/Darwin-Options.html#index-compatibility_005fversion)
+
+current_version
+UrlSuffix(gcc/Darwin-Options.html#index-current_005fversion)
+
+dead_strip
+UrlSuffix(gcc/Darwin-Options.html#index-dead_005fstrip)
+
+dylib_file
+UrlSuffix(gcc/Darwin-Options.html#index-dylib_005ffile)
+
+dylinker_install_name
+UrlSuffix(gcc/Darwin-Options.html#index-dylinker_005finstall_005fname)
+
+dynamic
+UrlSuffix(gcc/Darwin-Options.html#index-dynamic)
+
+dynamiclib
+UrlSuffix(gcc/Darwin-Options.html#index-dynamiclib)
+
+exported_symbols_list
+UrlSuffix(gcc/Darwin-Options.html#index-exported_005fsymbols_005flist)
+
+filelist
+UrlSuffix(gcc/Darwin-Options.html#index-filelist)
+
+flat_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-flat_005fnamespace)
+
+force_cpusubtype_ALL
+UrlSuffix(gcc/Darwin-Options.html#index-force_005fcpusubtype_005fALL)
+
+force_flat_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-force_005fflat_005fnamespace)
+
+gfull
+UrlSuffix(gcc/Darwin-Options.html#index-gfull)
+
+gused
+UrlSuffix(gcc/Darwin-Options.html#index-gused)
+
+headerpad_max_install_names
+UrlSuffix(gcc/Darwin-Options.html#index-headerpad_005fmax_005finstall_005fnames)
+
+image_base
+UrlSuffix(gcc/Darwin-Options.html#index-image_005fbase)
+
+init
+UrlSuffix(gcc/Darwin-Options.html#index-init)
+
+install_name
+UrlSuffix(gcc/Darwin-Options.html#index-install_005fname)
+
+keep_private_externs
+UrlSuffix(gcc/Darwin-Options.html#index-keep_005fprivate_005fexterns)
+
+multi_module
+UrlSuffix(gcc/Darwin-Options.html#index-multi_005fmodule)
+
+multiply_defined
+UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined)
+
+multiply_defined_unused
+UrlSuffix(gcc/Darwin-Options.html#index-multiply_005fdefined_005funused)
+
+no_dead_strip_inits_and_terms
+UrlSuffix(gcc/Darwin-Options.html#index-no_005fdead_005fstrip_005finits_005fand_005fterms)
+
+nodefaultrpaths
+UrlSuffix(gcc/Darwin-Options.html#index-nodefaultrpaths)
+
+nofixprebinding
+UrlSuffix(gcc/Darwin-Options.html#index-nofixprebinding)
+
+nomultidefs
+UrlSuffix(gcc/Darwin-Options.html#index-nomultidefs)
+
+noprebind
+UrlSuffix(gcc/Darwin-Options.html#index-noprebind)
+
+noseglinkedit
+UrlSuffix(gcc/Darwin-Options.html#index-noseglinkedit)
+
+pagezero_size
+UrlSuffix(gcc/Darwin-Options.html#index-pagezero_005fsize)
+
+prebind
+UrlSuffix(gcc/Darwin-Options.html#index-prebind)
+
+prebind_all_twolevel_modules
+UrlSuffix(gcc/Darwin-Options.html#index-prebind_005fall_005ftwolevel_005fmodules)
+
+private_bundle
+UrlSuffix(gcc/Darwin-Options.html#index-private_005fbundle)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
+read_only_relocs
+UrlSuffix(gcc/Darwin-Options.html#index-read_005fonly_005frelocs)
+
+sectalign
+UrlSuffix(gcc/Darwin-Options.html#index-sectalign)
+
+sectcreate
+UrlSuffix(gcc/Darwin-Options.html#index-sectcreate)
+
+sectobjectsymbols
+UrlSuffix(gcc/Darwin-Options.html#index-sectobjectsymbols)
+
+sectorder
+UrlSuffix(gcc/Darwin-Options.html#index-sectorder)
+
+seg_addr_table
+UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable)
+
+seg_addr_table_filename
+UrlSuffix(gcc/Darwin-Options.html#index-seg_005faddr_005ftable_005ffilename)
+
+seg1addr
+UrlSuffix(gcc/Darwin-Options.html#index-seg1addr)
+
+segaddr
+UrlSuffix(gcc/Darwin-Options.html#index-segaddr)
+
+seglinkedit
+UrlSuffix(gcc/Darwin-Options.html#index-seglinkedit)
+
+segprot
+UrlSuffix(gcc/Darwin-Options.html#index-segprot)
+
+segs_read_only_addr
+UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fonly_005faddr)
+
+segs_read_write_addr
+UrlSuffix(gcc/Darwin-Options.html#index-segs_005fread_005fwrite_005faddr)
+
+single_module
+UrlSuffix(gcc/Darwin-Options.html#index-single_005fmodule)
+
+sub_library
+UrlSuffix(gcc/Darwin-Options.html#index-sub_005flibrary)
+
+sub_umbrella
+UrlSuffix(gcc/Darwin-Options.html#index-sub_005fumbrella)
+
+twolevel_namespace
+UrlSuffix(gcc/Darwin-Options.html#index-twolevel_005fnamespace)
+
+umbrella
+UrlSuffix(gcc/Darwin-Options.html#index-umbrella)
+
+undefined
+UrlSuffix(gcc/Darwin-Options.html#index-undefined)
+
+unexported_symbols_list
+UrlSuffix(gcc/Darwin-Options.html#index-unexported_005fsymbols_005flist)
+
+weak_reference_mismatches
+UrlSuffix(gcc/Darwin-Options.html#index-weak_005freference_005fmismatches)
+
+whatsloaded
+UrlSuffix(gcc/Darwin-Options.html#index-whatsloaded)
+
+whyload
+UrlSuffix(gcc/Darwin-Options.html#index-whyload)
+
+X
+LangUrlSuffix_D(gdc/Code-Generation.html#index-X)
+
diff --git a/gcc/config/dragonfly.opt.urls b/gcc/config/dragonfly.opt.urls
new file mode 100644
index 000000000000..62e2e21594e1
--- /dev/null
+++ b/gcc/config/dragonfly.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/dragonfly.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/epiphany/epiphany.opt.urls b/gcc/config/epiphany/epiphany.opt.urls
new file mode 100644
index 000000000000..a8e28c46d210
--- /dev/null
+++ b/gcc/config/epiphany/epiphany.opt.urls
@@ -0,0 +1,52 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/epiphany/epiphany.opt and generated HTML
+
+mhalf-reg-file
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mhalf-reg-file)
+
+mprefer-short-insn-regs
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mprefer-short-insn-regs)
+
+mbranch-cost=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mbranch-cost)
+
+mcmove
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mcmove)
+
+mnops=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mnops)
+
+msoft-cmpsf
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msoft-cmpsf)
+
+msplit-lohi
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-lohi)
+
+mstack-offset=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mstack-offset)
+
+mround-nearest
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mround-nearest)
+
+mlong-calls
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mlong-calls)
+
+; skipping UrlSuffix for 'mshort-calls' due to finding no URLs
+
+msmall16
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msmall16)
+
+mfp-mode=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mfp-mode)
+
+mvect-double
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-mvect-double)
+
+max-vect-align=
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-max-vect-align)
+
+msplit-vecmove-early
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-msplit-vecmove-early)
+
+m1reg-
+UrlSuffix(gcc/Adapteva-Epiphany-Options.html#index-m1reg-)
+
diff --git a/gcc/config/fr30/fr30.opt.urls b/gcc/config/fr30/fr30.opt.urls
new file mode 100644
index 000000000000..eabbfbfd9dd3
--- /dev/null
+++ b/gcc/config/fr30/fr30.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/fr30/fr30.opt and generated HTML
+
+msmall-model
+UrlSuffix(gcc/FR30-Options.html#index-msmall-model)
+
+mno-lsim
+UrlSuffix(gcc/FR30-Options.html#index-mno-lsim)
+
diff --git a/gcc/config/freebsd.opt.urls b/gcc/config/freebsd.opt.urls
new file mode 100644
index 000000000000..3be69e4c3e8d
--- /dev/null
+++ b/gcc/config/freebsd.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/freebsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/frv/frv.opt.urls b/gcc/config/frv/frv.opt.urls
new file mode 100644
index 000000000000..d3d3757bb289
--- /dev/null
+++ b/gcc/config/frv/frv.opt.urls
@@ -0,0 +1,111 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/frv/frv.opt and generated HTML
+
+macc-4
+UrlSuffix(gcc/FRV-Options.html#index-macc-4)
+
+macc-8
+UrlSuffix(gcc/FRV-Options.html#index-macc-8)
+
+malign-labels
+UrlSuffix(gcc/FRV-Options.html#index-malign-labels)
+
+malloc-cc
+UrlSuffix(gcc/FRV-Options.html#index-malloc-cc)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mcond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mcond-exec)
+
+mcond-move
+UrlSuffix(gcc/FRV-Options.html#index-mcond-move)
+
+mcpu=
+UrlSuffix(gcc/FRV-Options.html#index-mcpu-6)
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+mdouble
+UrlSuffix(gcc/FRV-Options.html#index-mdouble-1)
+
+mdword
+UrlSuffix(gcc/FRV-Options.html#index-mdword)
+
+mfdpic
+UrlSuffix(gcc/FRV-Options.html#index-mfdpic-1)
+
+mfixed-cc
+UrlSuffix(gcc/FRV-Options.html#index-mfixed-cc)
+
+mfpr-32
+UrlSuffix(gcc/FRV-Options.html#index-mfpr-32)
+
+mfpr-64
+UrlSuffix(gcc/FRV-Options.html#index-mfpr-64)
+
+mgpr-32
+UrlSuffix(gcc/FRV-Options.html#index-mgpr-32)
+
+mgpr-64
+UrlSuffix(gcc/FRV-Options.html#index-mgpr-64)
+
+mgprel-ro
+UrlSuffix(gcc/FRV-Options.html#index-mgprel-ro)
+
+mhard-float
+UrlSuffix(gcc/FRV-Options.html#index-mhard-float-1)
+
+minline-plt
+UrlSuffix(gcc/FRV-Options.html#index-minline-plt-1)
+
+mlibrary-pic
+UrlSuffix(gcc/FRV-Options.html#index-mlibrary-pic)
+
+mlinked-fp
+UrlSuffix(gcc/FRV-Options.html#index-mlinked-fp)
+
+mlong-calls
+UrlSuffix(gcc/FRV-Options.html#index-mlong-calls-4)
+
+mmedia
+UrlSuffix(gcc/FRV-Options.html#index-mmedia)
+
+mmuladd
+UrlSuffix(gcc/FRV-Options.html#index-mmuladd)
+
+mmulti-cond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mmulti-cond-exec)
+
+mnested-cond-exec
+UrlSuffix(gcc/FRV-Options.html#index-mnested-cond-exec)
+
+mno-eflags
+UrlSuffix(gcc/FRV-Options.html#index-mno-eflags)
+
+moptimize-membar
+UrlSuffix(gcc/FRV-Options.html#index-moptimize-membar)
+
+mpack
+UrlSuffix(gcc/FRV-Options.html#index-mpack)
+
+mscc
+UrlSuffix(gcc/FRV-Options.html#index-mscc)
+
+msoft-float
+UrlSuffix(gcc/FRV-Options.html#index-msoft-float-3)
+
+mTLS
+UrlSuffix(gcc/FRV-Options.html#index-mTLS)
+
+mtls
+UrlSuffix(gcc/FRV-Options.html#index-mtls)
+
+mtomcat-stats
+UrlSuffix(gcc/FRV-Options.html#index-mtomcat-stats)
+
+multilib-library-pic
+UrlSuffix(gcc/FRV-Options.html#index-multilib-library-pic)
+
+mvliw-branch
+UrlSuffix(gcc/FRV-Options.html#index-mvliw-branch)
+
diff --git a/gcc/config/ft32/ft32.opt.urls b/gcc/config/ft32/ft32.opt.urls
new file mode 100644
index 000000000000..707cb83010f0
--- /dev/null
+++ b/gcc/config/ft32/ft32.opt.urls
@@ -0,0 +1,20 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ft32/ft32.opt and generated HTML
+
+msim
+UrlSuffix(gcc/FT32-Options.html#index-msim-3)
+
+mlra
+UrlSuffix(gcc/FT32-Options.html#index-mlra-1)
+
+mnodiv
+UrlSuffix(gcc/FT32-Options.html#index-mnodiv)
+
+mft32b
+UrlSuffix(gcc/FT32-Options.html#index-mft32b)
+
+mcompress
+UrlSuffix(gcc/FT32-Options.html#index-mcompress)
+
+mnopm
+UrlSuffix(gcc/FT32-Options.html#index-mnopm)
+
diff --git a/gcc/config/fused-madd.opt.urls b/gcc/config/fused-madd.opt.urls
new file mode 100644
index 000000000000..0bd906cfb643
--- /dev/null
+++ b/gcc/config/fused-madd.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/fused-madd.opt and generated HTML
+
+; skipping UrlSuffix for 'mfused-madd' due to finding no URLs
+
diff --git a/gcc/config/g.opt.urls b/gcc/config/g.opt.urls
new file mode 100644
index 000000000000..4ffd5cbd2cf5
--- /dev/null
+++ b/gcc/config/g.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/g.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
diff --git a/gcc/config/gcn/gcn.opt.urls b/gcc/config/gcn/gcn.opt.urls
new file mode 100644
index 000000000000..7bc0ef41831f
--- /dev/null
+++ b/gcc/config/gcn/gcn.opt.urls
@@ -0,0 +1,23 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/gcn/gcn.opt and generated HTML
+
+march=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-march-1)
+
+mtune=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mtune-1)
+
+; skipping UrlSuffix for 'm32' due to finding no URLs
+
+; skipping UrlSuffix for 'm64' due to finding no URLs
+
+; skipping UrlSuffix for 'mgomp' due to finding no URLs
+
+mstack-size=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mstack-size)
+
+mxnack=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-mxnack)
+
+msram-ecc=
+UrlSuffix(gcc/AMD-GCN-Options.html#index-msram-ecc)
+
diff --git a/gcc/config/gnu-user.opt.urls b/gcc/config/gnu-user.opt.urls
new file mode 100644
index 000000000000..42021e1fe3cd
--- /dev/null
+++ b/gcc/config/gnu-user.opt.urls
@@ -0,0 +1,9 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/gnu-user.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/h8300/h8300.opt.urls b/gcc/config/h8300/h8300.opt.urls
new file mode 100644
index 000000000000..8cbd7c313b7f
--- /dev/null
+++ b/gcc/config/h8300/h8300.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/h8300/h8300.opt and generated HTML
+
+ms
+UrlSuffix(gcc/H8_002f300-Options.html#index-ms)
+
+ms2600
+UrlSuffix(gcc/H8_002f300-Options.html#index-ms2600)
+
+mint32
+UrlSuffix(gcc/H8_002f300-Options.html#index-mint32)
+
+mrelax
+UrlSuffix(gcc/H8_002f300-Options.html#index-mrelax-1)
+
+mh
+UrlSuffix(gcc/H8_002f300-Options.html#index-mh)
+
+mn
+UrlSuffix(gcc/H8_002f300-Options.html#index-mn)
+
+malign-300
+UrlSuffix(gcc/H8_002f300-Options.html#index-malign-300)
+
+mexr
+UrlSuffix(gcc/H8_002f300-Options.html#index-mexr)
+
+mno-exr
+UrlSuffix(gcc/H8_002f300-Options.html#index-mno-exr)
+
diff --git a/gcc/config/hpux11.opt.urls b/gcc/config/hpux11.opt.urls
new file mode 100644
index 000000000000..84fef2e7919d
--- /dev/null
+++ b/gcc/config/hpux11.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/hpux11.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/i386/cygming.opt.urls b/gcc/config/i386/cygming.opt.urls
new file mode 100644
index 000000000000..87799befe3c4
--- /dev/null
+++ b/gcc/config/i386/cygming.opt.urls
@@ -0,0 +1,30 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygming.opt and generated HTML
+
+mconsole
+UrlSuffix(gcc/x86-Windows-Options.html#index-mconsole)
+
+mdll
+UrlSuffix(gcc/x86-Windows-Options.html#index-mdll)
+
+mnop-fun-dllimport
+UrlSuffix(gcc/x86-Windows-Options.html#index-mnop-fun-dllimport)
+
+; skipping UrlSuffix for 'mthreads' due to multiple URLs:
+;   duplicate: 'gcc/x86-Options.html#index-mthreads'
+;   duplicate: 'gcc/x86-Windows-Options.html#index-mthreads-1'
+
+mwin32
+UrlSuffix(gcc/x86-Windows-Options.html#index-mwin32)
+
+mwindows
+UrlSuffix(gcc/x86-Windows-Options.html#index-mwindows)
+
+mpe-aligned-commons
+UrlSuffix(gcc/x86-Windows-Options.html#index-mpe-aligned-commons)
+
+fset-stack-executable
+UrlSuffix(gcc/x86-Windows-Options.html#index-fno-set-stack-executable)
+
+fwritable-relocated-rdata
+UrlSuffix(gcc/x86-Windows-Options.html#index-fno-writable-relocated-rdata)
+
diff --git a/gcc/config/i386/cygwin.opt.urls b/gcc/config/i386/cygwin.opt.urls
new file mode 100644
index 000000000000..c484efc6fd98
--- /dev/null
+++ b/gcc/config/i386/cygwin.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/cygwin.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/i386/djgpp.opt.urls b/gcc/config/i386/djgpp.opt.urls
new file mode 100644
index 000000000000..8a723ab0a6dc
--- /dev/null
+++ b/gcc/config/i386/djgpp.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/djgpp.opt and generated HTML
+
diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls
new file mode 100644
index 000000000000..9b988fd6996f
--- /dev/null
+++ b/gcc/config/i386/i386.opt.urls
@@ -0,0 +1,611 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/i386.opt and generated HTML
+
+m128bit-long-double
+UrlSuffix(gcc/x86-Options.html#index-m128bit-long-double)
+
+m80387
+UrlSuffix(gcc/x86-Options.html#index-m80387)
+
+m96bit-long-double
+UrlSuffix(gcc/x86-Options.html#index-m96bit-long-double)
+
+mlong-double-80
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-80)
+
+mlong-double-64
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-64-1)
+
+mlong-double-128
+UrlSuffix(gcc/x86-Options.html#index-mlong-double-128-1)
+
+maccumulate-outgoing-args
+UrlSuffix(gcc/x86-Options.html#index-maccumulate-outgoing-args-1)
+
+malign-double
+UrlSuffix(gcc/x86-Options.html#index-malign-double)
+
+; skipping UrlSuffix for 'malign-loops=' due to finding no URLs
+
+malign-stringops
+UrlSuffix(gcc/x86-Options.html#index-malign-stringops)
+
+malign-data=
+UrlSuffix(gcc/x86-Options.html#index-malign-data-1)
+
+march=
+UrlSuffix(gcc/x86-Options.html#index-march-16)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mlarge-data-threshold=
+UrlSuffix(gcc/x86-Options.html#index-mlarge-data-threshold)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/x86-Options.html#index-mcpu-14)
+
+mfancy-math-387
+UrlSuffix(gcc/x86-Options.html#index-mfancy-math-387)
+
+mfp-ret-in-387
+UrlSuffix(gcc/x86-Options.html#index-mfp-ret-in-387)
+
+; skipping UrlSuffix for 'mfpmath=' due to multiple URLs:
+;   duplicate: 'gcc/Optimize-Options.html#index-mfpmath'
+;   duplicate: 'gcc/x86-Options.html#index-mfpmath-1'
+
+mhard-float
+UrlSuffix(gcc/x86-Options.html#index-mhard-float-11)
+
+mieee-fp
+UrlSuffix(gcc/x86-Options.html#index-mieee-fp)
+
+minline-all-stringops
+UrlSuffix(gcc/x86-Options.html#index-minline-all-stringops)
+
+minline-stringops-dynamically
+UrlSuffix(gcc/x86-Options.html#index-minline-stringops-dynamically)
+
+mms-bitfields
+UrlSuffix(gcc/x86-Options.html#index-mms-bitfields)
+
+mno-align-stringops
+UrlSuffix(gcc/x86-Options.html#index-mno-align-stringops)
+
+mno-fancy-math-387
+UrlSuffix(gcc/x86-Options.html#index-mno-fancy-math-387)
+
+mno-push-args
+UrlSuffix(gcc/x86-Options.html#index-mno-push-args)
+
+mno-red-zone
+UrlSuffix(gcc/x86-Options.html#index-mno-red-zone)
+
+momit-leaf-frame-pointer
+UrlSuffix(gcc/x86-Options.html#index-momit-leaf-frame-pointer-2)
+
+mrelax-cmpxchg-loop
+UrlSuffix(gcc/x86-Options.html#index-mrelax-cmpxchg-loop)
+
+mpc32
+UrlSuffix(gcc/x86-Options.html#index-mpc32)
+
+mpc64
+UrlSuffix(gcc/x86-Options.html#index-mpc64)
+
+mpc80
+UrlSuffix(gcc/x86-Options.html#index-mpc80)
+
+mdaz-ftz
+UrlSuffix(gcc/x86-Options.html#index-mdaz-ftz)
+
+mpreferred-stack-boundary=
+UrlSuffix(gcc/x86-Options.html#index-mpreferred-stack-boundary-1)
+
+mincoming-stack-boundary=
+UrlSuffix(gcc/x86-Options.html#index-mincoming-stack-boundary)
+
+mpush-args
+UrlSuffix(gcc/x86-Options.html#index-mpush-args)
+
+mred-zone
+UrlSuffix(gcc/x86-Options.html#index-mred-zone)
+
+mregparm=
+UrlSuffix(gcc/x86-Options.html#index-mregparm)
+
+mrtd
+UrlSuffix(gcc/x86-Options.html#index-mrtd-1)
+
+msoft-float
+UrlSuffix(gcc/x86-Options.html#index-msoft-float-16)
+
+msseregparm
+UrlSuffix(gcc/x86-Options.html#index-msseregparm)
+
+mstackrealign
+UrlSuffix(gcc/x86-Options.html#index-mstackrealign)
+
+mtls-dialect=
+UrlSuffix(gcc/x86-Options.html#index-mtls-dialect-1)
+
+mtls-direct-seg-refs
+UrlSuffix(gcc/x86-Options.html#index-mtls-direct-seg-refs)
+
+mtune=
+UrlSuffix(gcc/x86-Options.html#index-mtune-17)
+
+mno-default
+UrlSuffix(gcc/x86-Options.html#index-mno-default)
+
+mdump-tune-features
+UrlSuffix(gcc/x86-Options.html#index-mdump-tune-features)
+
+miamcu
+UrlSuffix(gcc/x86-Options.html#index-miamcu)
+
+mabi=
+UrlSuffix(gcc/x86-Options.html#index-mabi-6)
+
+mcall-ms2sysv-xlogues
+UrlSuffix(gcc/x86-Options.html#index-mcall-ms2sysv-xlogues)
+
+mveclibabi=
+UrlSuffix(gcc/x86-Options.html#index-mveclibabi-1)
+
+mvect8-ret-in-mem
+UrlSuffix(gcc/x86-Options.html#index-mvect8-ret-in-mem)
+
+mrecip
+UrlSuffix(gcc/x86-Options.html#index-mrecip-2)
+
+mrecip=
+UrlSuffix(gcc/x86-Options.html#index-mrecip-2)
+
+mcld
+UrlSuffix(gcc/x86-Options.html#index-mcld)
+
+mvzeroupper
+UrlSuffix(gcc/x86-Options.html#index-mvzeroupper)
+
+mprefer-avx128
+UrlSuffix(gcc/x86-Options.html#index-mprefer-avx128)
+
+mprefer-vector-width=
+UrlSuffix(gcc/x86-Options.html#index-mprefer-vector-width)
+
+mpartial-vector-fp-math
+UrlSuffix(gcc/x86-Options.html#index-mpartial-vector-fp-math)
+
+mmove-max=
+UrlSuffix(gcc/x86-Options.html#index-mmove-max)
+
+mstore-max=
+UrlSuffix(gcc/x86-Options.html#index-mstore-max)
+
+m32
+UrlSuffix(gcc/x86-Options.html#index-m32-2)
+
+m64
+UrlSuffix(gcc/x86-Options.html#index-m64-4)
+
+mx32
+UrlSuffix(gcc/x86-Options.html#index-mx32)
+
+m16
+UrlSuffix(gcc/x86-Options.html#index-m16)
+
+mmmx
+UrlSuffix(gcc/x86-Options.html#index-mmmx)
+
+m3dnow
+UrlSuffix(gcc/x86-Options.html#index-m3dnow)
+
+m3dnowa
+UrlSuffix(gcc/x86-Options.html#index-m3dnowa)
+
+msse
+UrlSuffix(gcc/x86-Options.html#index-msse)
+
+msse2
+UrlSuffix(gcc/x86-Options.html#index-msse2)
+
+msse3
+UrlSuffix(gcc/x86-Options.html#index-msse3)
+
+mssse3
+UrlSuffix(gcc/x86-Options.html#index-mssse3)
+
+msse4.1
+UrlSuffix(gcc/x86-Options.html#index-msse4_002e1)
+
+msse4.2
+UrlSuffix(gcc/x86-Options.html#index-msse4_002e2)
+
+msse4
+UrlSuffix(gcc/x86-Options.html#index-msse4)
+
+mavx
+UrlSuffix(gcc/x86-Options.html#index-mavx)
+
+mavx2
+UrlSuffix(gcc/x86-Options.html#index-mavx2)
+
+mavx512f
+UrlSuffix(gcc/x86-Options.html#index-mavx512f)
+
+mavx512pf
+UrlSuffix(gcc/x86-Options.html#index-mavx512pf)
+
+mavx512er
+UrlSuffix(gcc/x86-Options.html#index-mavx512er)
+
+mavx512cd
+UrlSuffix(gcc/x86-Options.html#index-mavx512cd)
+
+mavx512dq
+UrlSuffix(gcc/x86-Options.html#index-mavx512dq)
+
+mavx512bw
+UrlSuffix(gcc/x86-Options.html#index-mavx512bw)
+
+mavx512vl
+UrlSuffix(gcc/x86-Options.html#index-mavx512vl)
+
+mavx512ifma
+UrlSuffix(gcc/x86-Options.html#index-mavx512ifma)
+
+mavx512vbmi
+UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi)
+
+mavx5124fmaps
+UrlSuffix(gcc/x86-Options.html#index-mavx5124fmaps)
+
+mavx5124vnniw
+UrlSuffix(gcc/x86-Options.html#index-mavx5124vnniw)
+
+mavx512vpopcntdq
+UrlSuffix(gcc/x86-Options.html#index-mavx512vpopcntdq)
+
+mavx512vbmi2
+UrlSuffix(gcc/x86-Options.html#index-mavx512vbmi2)
+
+mavx512vnni
+UrlSuffix(gcc/x86-Options.html#index-mavx512vnni)
+
+mavx512bitalg
+UrlSuffix(gcc/x86-Options.html#index-mavx512bitalg)
+
+mavx512vp2intersect
+UrlSuffix(gcc/x86-Options.html#index-mavx512vp2intersect)
+
+mfma
+UrlSuffix(gcc/x86-Options.html#index-mfma)
+
+msse4a
+UrlSuffix(gcc/x86-Options.html#index-msse4a)
+
+mfma4
+UrlSuffix(gcc/x86-Options.html#index-mfma4)
+
+mxop
+UrlSuffix(gcc/x86-Options.html#index-mxop)
+
+mlwp
+UrlSuffix(gcc/x86-Options.html#index-mlwp)
+
+mabm
+UrlSuffix(gcc/x86-Options.html#index-mabm)
+
+mpopcnt
+UrlSuffix(gcc/x86-Options.html#index-mpopcnt)
+
+mpconfig
+UrlSuffix(gcc/x86-Options.html#index-mpconfig)
+
+mwbnoinvd
+UrlSuffix(gcc/x86-Options.html#index-mwbnoinvd)
+
+mptwrite
+UrlSuffix(gcc/x86-Options.html#index-mptwrite)
+
+muintr
+UrlSuffix(gcc/x86-Options.html#index-muintr)
+
+msgx
+UrlSuffix(gcc/x86-Options.html#index-msgx)
+
+mrdpid
+UrlSuffix(gcc/x86-Options.html#index-mrdpid)
+
+mgfni
+UrlSuffix(gcc/x86-Options.html#index-mgfni)
+
+mvaes
+UrlSuffix(gcc/x86-Options.html#index-mvaes)
+
+mvpclmulqdq
+UrlSuffix(gcc/x86-Options.html#index-mvpclmulqdq)
+
+mbmi
+UrlSuffix(gcc/x86-Options.html#index-mbmi)
+
+mbmi2
+UrlSuffix(gcc/x86-Options.html#index-mbmi2)
+
+mlzcnt
+UrlSuffix(gcc/x86-Options.html#index-mlzcnt)
+
+mhle
+UrlSuffix(gcc/x86-Options.html#index-mhle)
+
+mrdseed
+UrlSuffix(gcc/x86-Options.html#index-mrdseed)
+
+mprfchw
+UrlSuffix(gcc/x86-Options.html#index-mprfchw)
+
+madx
+UrlSuffix(gcc/x86-Options.html#index-madx)
+
+mclflushopt
+UrlSuffix(gcc/x86-Options.html#index-mclflushopt)
+
+mclwb
+UrlSuffix(gcc/x86-Options.html#index-mclwb)
+
+mfxsr
+UrlSuffix(gcc/x86-Options.html#index-mfxsr)
+
+mxsave
+UrlSuffix(gcc/x86-Options.html#index-mxsave)
+
+mxsaveopt
+UrlSuffix(gcc/x86-Options.html#index-mxsaveopt)
+
+mxsavec
+UrlSuffix(gcc/x86-Options.html#index-mxsavec)
+
+mxsaves
+UrlSuffix(gcc/x86-Options.html#index-mxsaves)
+
+mtbm
+UrlSuffix(gcc/x86-Options.html#index-mtbm)
+
+mcx16
+UrlSuffix(gcc/x86-Options.html#index-mcx16)
+
+msahf
+UrlSuffix(gcc/x86-Options.html#index-msahf)
+
+mmovbe
+UrlSuffix(gcc/x86-Options.html#index-mmovbe)
+
+mcrc32
+UrlSuffix(gcc/x86-Options.html#index-mcrc32)
+
+maes
+UrlSuffix(gcc/x86-Options.html#index-maes)
+
+msha
+UrlSuffix(gcc/x86-Options.html#index-msha)
+
+mpclmul
+UrlSuffix(gcc/x86-Options.html#index-mpclmul)
+
+msse2avx
+UrlSuffix(gcc/x86-Options.html#index-msse2avx)
+
+mfsgsbase
+UrlSuffix(gcc/x86-Options.html#index-mfsgsbase)
+
+mrdrnd
+UrlSuffix(gcc/x86-Options.html#index-mrdrnd)
+
+mf16c
+UrlSuffix(gcc/x86-Options.html#index-mf16c)
+
+mprefetchwt1
+UrlSuffix(gcc/x86-Options.html#index-mprefetchwt1)
+
+mfentry
+UrlSuffix(gcc/x86-Options.html#index-mfentry)
+
+mrecord-mcount
+UrlSuffix(gcc/x86-Options.html#index-mrecord-mcount)
+
+mnop-mcount
+UrlSuffix(gcc/x86-Options.html#index-mnop-mcount)
+
+mfentry-name=
+UrlSuffix(gcc/x86-Options.html#index-mfentry-name)
+
+mfentry-section=
+UrlSuffix(gcc/x86-Options.html#index-mfentry-section)
+
+mskip-rax-setup
+UrlSuffix(gcc/x86-Options.html#index-mskip-rax-setup)
+
+m8bit-idiv
+UrlSuffix(gcc/x86-Options.html#index-m8bit-idiv)
+
+mavx256-split-unaligned-load
+UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-load)
+
+mavx256-split-unaligned-store
+UrlSuffix(gcc/x86-Options.html#index-mavx256-split-unaligned-store)
+
+mrtm
+UrlSuffix(gcc/x86-Options.html#index-mrtm)
+
+mmwaitx
+UrlSuffix(gcc/x86-Options.html#index-mmwaitx)
+
+mclzero
+UrlSuffix(gcc/x86-Options.html#index-mclzero)
+
+mpku
+UrlSuffix(gcc/x86-Options.html#index-mpku)
+
+mstack-protector-guard=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-4)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-reg-3)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/x86-Options.html#index-mstack-protector-guard-offset-4)
+
+; skipping UrlSuffix for 'mstack-protector-guard-symbol=' due to finding no URLs
+
+mgeneral-regs-only
+UrlSuffix(gcc/x86-Options.html#index-mgeneral-regs-only-2)
+
+mshstk
+UrlSuffix(gcc/x86-Options.html#index-mshstk)
+
+mcet-switch
+UrlSuffix(gcc/x86-Options.html#index-mcet-switch)
+
+mmanual-endbr
+UrlSuffix(gcc/x86-Options.html#index-mmanual-endbr)
+
+mforce-indirect-call
+UrlSuffix(gcc/x86-Options.html#index-mforce-indirect-call)
+
+mindirect-branch=
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch)
+
+mfunction-return=
+UrlSuffix(gcc/x86-Options.html#index-mfunction-return)
+
+mindirect-branch-cs-prefix
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-cs-prefix)
+
+mindirect-branch-register
+UrlSuffix(gcc/x86-Options.html#index-mindirect-branch-register)
+
+mmovdiri
+UrlSuffix(gcc/x86-Options.html#index-mmovdiri)
+
+mmovdir64b
+UrlSuffix(gcc/x86-Options.html#index-mmovdir64b)
+
+mwaitpkg
+UrlSuffix(gcc/x86-Options.html#index-mwaitpkg)
+
+mcldemote
+UrlSuffix(gcc/x86-Options.html#index-mcldemote)
+
+minstrument-return=
+UrlSuffix(gcc/x86-Options.html#index-minstrument-return)
+
+mrecord-return
+UrlSuffix(gcc/x86-Options.html#index-mrecord-return)
+
+mharden-sls=
+UrlSuffix(gcc/x86-Options.html#index-mharden-sls-1)
+
+mavx512bf16
+UrlSuffix(gcc/x86-Options.html#index-mavx512bf16)
+
+menqcmd
+UrlSuffix(gcc/x86-Options.html#index-menqcmd)
+
+mserialize
+UrlSuffix(gcc/x86-Options.html#index-mserialize)
+
+mtsxldtrk
+UrlSuffix(gcc/x86-Options.html#index-mtsxldtrk)
+
+mamx-tile
+UrlSuffix(gcc/x86-Options.html#index-mamx-tile)
+
+mamx-int8
+UrlSuffix(gcc/x86-Options.html#index-mamx-int8)
+
+mamx-bf16
+UrlSuffix(gcc/x86-Options.html#index-mamx-bf16)
+
+mhreset
+UrlSuffix(gcc/x86-Options.html#index-mhreset)
+
+mkl
+UrlSuffix(gcc/x86-Options.html#index-mkl)
+
+mwidekl
+UrlSuffix(gcc/x86-Options.html#index-mwidekl)
+
+mavxvnni
+UrlSuffix(gcc/x86-Options.html#index-mavxvnni)
+
+mneeded
+UrlSuffix(gcc/x86-Options.html#index-mneeded)
+
+mmwait
+UrlSuffix(gcc/x86-Options.html#index-mmwait)
+
+mavx512fp16
+UrlSuffix(gcc/x86-Options.html#index-mavx512fp16)
+
+mdirect-extern-access
+UrlSuffix(gcc/x86-Options.html#index-mdirect-extern-access-1)
+
+mavxifma
+UrlSuffix(gcc/x86-Options.html#index-mavxifma)
+
+mavxvnniint8
+UrlSuffix(gcc/x86-Options.html#index-mavxvnniint8)
+
+mavxneconvert
+UrlSuffix(gcc/x86-Options.html#index-mavxneconvert)
+
+mcmpccxadd
+UrlSuffix(gcc/x86-Options.html#index-mcmpccxadd)
+
+mamx-fp16
+UrlSuffix(gcc/x86-Options.html#index-mamx-fp16)
+
+mprefetchi
+UrlSuffix(gcc/x86-Options.html#index-mprefetchi)
+
+mraoint
+UrlSuffix(gcc/x86-Options.html#index-mraoint)
+
+munroll-only-small-loops
+UrlSuffix(gcc/x86-Options.html#index-munroll-only-small-loops)
+
+mlam=
+UrlSuffix(gcc/x86-Options.html#index-mlam)
+
+mamx-complex
+UrlSuffix(gcc/x86-Options.html#index-mamx-complex)
+
+mavxvnniint16
+UrlSuffix(gcc/x86-Options.html#index-mavxvnniint16)
+
+msm3
+UrlSuffix(gcc/x86-Options.html#index-msm3)
+
+msha512
+UrlSuffix(gcc/x86-Options.html#index-msha512)
+
+msm4
+UrlSuffix(gcc/x86-Options.html#index-msm4)
+
+mapxf
+UrlSuffix(gcc/x86-Options.html#index-mapxf)
+
+musermsr
+UrlSuffix(gcc/x86-Options.html#index-musermsr)
+
+mavx10.1-256
+UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1-256)
+
+mavx10.1-512
+UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1-512)
+
+mavx10.1
+UrlSuffix(gcc/x86-Options.html#index-mavx10_002e1)
+
diff --git a/gcc/config/i386/mingw-w64.opt.urls b/gcc/config/i386/mingw-w64.opt.urls
new file mode 100644
index 000000000000..6bb53ef29b2b
--- /dev/null
+++ b/gcc/config/i386/mingw-w64.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw-w64.opt and generated HTML
+
+municode
+UrlSuffix(gcc/x86-Windows-Options.html#index-municode)
+
diff --git a/gcc/config/i386/mingw.opt.urls b/gcc/config/i386/mingw.opt.urls
new file mode 100644
index 000000000000..2cbbaadf310d
--- /dev/null
+++ b/gcc/config/i386/mingw.opt.urls
@@ -0,0 +1,12 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/mingw.opt and generated HTML
+
+mcrtdll=
+UrlSuffix(gcc/x86-Windows-Options.html#index-mcrtdll)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+Wpedantic-ms-format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic-ms-format)
+
diff --git a/gcc/config/i386/nto.opt.urls b/gcc/config/i386/nto.opt.urls
new file mode 100644
index 000000000000..37c07a5b88be
--- /dev/null
+++ b/gcc/config/i386/nto.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/i386/nto.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
diff --git a/gcc/config/ia64/ia64.opt.urls b/gcc/config/ia64/ia64.opt.urls
new file mode 100644
index 000000000000..1e1d0631550a
--- /dev/null
+++ b/gcc/config/ia64/ia64.opt.urls
@@ -0,0 +1,122 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ia64.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/IA-64-Options.html#index-mbig-endian-6)
+
+mlittle-endian
+UrlSuffix(gcc/IA-64-Options.html#index-mlittle-endian-6)
+
+mgnu-as
+UrlSuffix(gcc/IA-64-Options.html#index-mgnu-as)
+
+mgnu-ld
+UrlSuffix(gcc/IA-64-Options.html#index-mgnu-ld-1)
+
+mvolatile-asm-stop
+UrlSuffix(gcc/IA-64-Options.html#index-mvolatile-asm-stop)
+
+mregister-names
+UrlSuffix(gcc/IA-64-Options.html#index-mregister-names)
+
+mno-sdata
+UrlSuffix(gcc/IA-64-Options.html#index-mno-sdata-1)
+
+msdata
+UrlSuffix(gcc/IA-64-Options.html#index-msdata-1)
+
+mno-pic
+UrlSuffix(gcc/IA-64-Options.html#index-mno-pic)
+
+mconstant-gp
+UrlSuffix(gcc/IA-64-Options.html#index-mconstant-gp)
+
+mauto-pic
+UrlSuffix(gcc/IA-64-Options.html#index-mauto-pic)
+
+minline-float-divide-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-min-latency)
+
+minline-float-divide-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-float-divide-max-throughput)
+
+mno-inline-float-divide
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-float-divide)
+
+minline-int-divide-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-min-latency)
+
+minline-int-divide-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-int-divide-max-throughput)
+
+mno-inline-int-divide
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-int-divide)
+
+minline-sqrt-min-latency
+UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-min-latency)
+
+minline-sqrt-max-throughput
+UrlSuffix(gcc/IA-64-Options.html#index-minline-sqrt-max-throughput)
+
+mno-inline-sqrt
+UrlSuffix(gcc/IA-64-Options.html#index-mno-inline-sqrt)
+
+mdwarf2-asm
+UrlSuffix(gcc/IA-64-Options.html#index-mdwarf2-asm)
+
+mearly-stop-bits
+UrlSuffix(gcc/IA-64-Options.html#index-mearly-stop-bits)
+
+mfixed-range=
+UrlSuffix(gcc/IA-64-Options.html#index-mfixed-range-1)
+
+mtls-size=
+UrlSuffix(gcc/IA-64-Options.html#index-mtls-size-1)
+
+mtune=
+UrlSuffix(gcc/IA-64-Options.html#index-mtune-7)
+
+msched-br-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-br-data-spec)
+
+msched-ar-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-data-spec)
+
+msched-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-control-spec)
+
+msched-br-in-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-br-in-data-spec)
+
+msched-ar-in-data-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-ar-in-data-spec)
+
+msched-in-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msched-in-control-spec)
+
+msched-spec-ldc
+UrlSuffix(gcc/IA-64-Options.html#index-msched-spec-ldc)
+
+msched-prefer-non-data-spec-insns
+UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-data-spec-insns)
+
+msched-prefer-non-control-spec-insns
+UrlSuffix(gcc/IA-64-Options.html#index-msched-prefer-non-control-spec-insns)
+
+msched-count-spec-in-critical-path
+UrlSuffix(gcc/IA-64-Options.html#index-msched-count-spec-in-critical-path)
+
+msched-stop-bits-after-every-cycle
+UrlSuffix(gcc/IA-64-Options.html#index-msched-stop-bits-after-every-cycle)
+
+msched-fp-mem-deps-zero-cost
+UrlSuffix(gcc/IA-64-Options.html#index-msched-fp-mem-deps-zero-cost)
+
+msched-max-memory-insns=
+UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns)
+
+msched-max-memory-insns-hard-limit
+UrlSuffix(gcc/IA-64-Options.html#index-msched-max-memory-insns-hard-limit)
+
+msel-sched-dont-check-control-spec
+UrlSuffix(gcc/IA-64-Options.html#index-msel-sched-dont-check-control-spec)
+
diff --git a/gcc/config/ia64/ilp32.opt.urls b/gcc/config/ia64/ilp32.opt.urls
new file mode 100644
index 000000000000..07bd47d6d13f
--- /dev/null
+++ b/gcc/config/ia64/ilp32.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/ilp32.opt and generated HTML
+
+milp32
+UrlSuffix(gcc/IA-64-Options.html#index-milp32)
+
+mlp64
+UrlSuffix(gcc/IA-64-Options.html#index-mlp64)
+
diff --git a/gcc/config/ia64/vms.opt.urls b/gcc/config/ia64/vms.opt.urls
new file mode 100644
index 000000000000..e7797d9325e7
--- /dev/null
+++ b/gcc/config/ia64/vms.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/ia64/vms.opt and generated HTML
+
diff --git a/gcc/config/iq2000/iq2000.opt.urls b/gcc/config/iq2000/iq2000.opt.urls
new file mode 100644
index 000000000000..6aadab6be3af
--- /dev/null
+++ b/gcc/config/iq2000/iq2000.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/iq2000/iq2000.opt and generated HTML
+
+; skipping UrlSuffix for 'march=' due to finding no URLs
+
+; skipping UrlSuffix for 'mcpu=' due to finding no URLs
+
+; skipping UrlSuffix for 'membedded-data' due to finding no URLs
+
+; skipping UrlSuffix for 'mgpopt' due to finding no URLs
+
+; skipping UrlSuffix for 'mno-crt0' due to finding no URLs
+
+; skipping UrlSuffix for 'muninit-const-in-rodata' due to finding no URLs
+
diff --git a/gcc/config/linux-android.opt.urls b/gcc/config/linux-android.opt.urls
new file mode 100644
index 000000000000..48d38e925aa1
--- /dev/null
+++ b/gcc/config/linux-android.opt.urls
@@ -0,0 +1,11 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/linux-android.opt and generated HTML
+
+mandroid
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mandroid)
+
+tno-android-cc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-cc)
+
+tno-android-ld
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-tno-android-ld)
+
diff --git a/gcc/config/linux.opt.urls b/gcc/config/linux.opt.urls
new file mode 100644
index 000000000000..792a73fb0a69
--- /dev/null
+++ b/gcc/config/linux.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/linux.opt and generated HTML
+
+mbionic
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mbionic)
+
+mglibc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mglibc)
+
+muclibc
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-muclibc)
+
+mmusl
+UrlSuffix(gcc/GNU_002fLinux-Options.html#index-mmusl)
+
diff --git a/gcc/config/lm32/lm32.opt.urls b/gcc/config/lm32/lm32.opt.urls
new file mode 100644
index 000000000000..89c8c47d3f44
--- /dev/null
+++ b/gcc/config/lm32/lm32.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/lm32/lm32.opt and generated HTML
+
+mdivide-enabled
+UrlSuffix(gcc/LM32-Options.html#index-mdivide-enabled)
+
+mbarrel-shift-enabled
+UrlSuffix(gcc/LM32-Options.html#index-mbarrel-shift-enabled)
+
+msign-extend-enabled
+UrlSuffix(gcc/LM32-Options.html#index-msign-extend-enabled)
+
+muser-enabled
+UrlSuffix(gcc/LM32-Options.html#index-muser-enabled)
+
diff --git a/gcc/config/loongarch/loongarch.opt.urls b/gcc/config/loongarch/loongarch.opt.urls
new file mode 100644
index 000000000000..c78bbfea2da8
--- /dev/null
+++ b/gcc/config/loongarch/loongarch.opt.urls
@@ -0,0 +1,66 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/loongarch/loongarch.opt and generated HTML
+
+mfpu=
+UrlSuffix(gcc/LoongArch-Options.html#index-mfpu-2)
+
+msoft-float
+UrlSuffix(gcc/LoongArch-Options.html#index-msoft-float-5)
+
+msingle-float
+UrlSuffix(gcc/LoongArch-Options.html#index-msingle-float)
+
+mdouble-float
+UrlSuffix(gcc/LoongArch-Options.html#index-mdouble-float-1)
+
+msimd=
+UrlSuffix(gcc/LoongArch-Options.html#index-msimd-1)
+
+march=
+UrlSuffix(gcc/LoongArch-Options.html#index-march-7)
+
+mtune=
+UrlSuffix(gcc/LoongArch-Options.html#index-mtune-8)
+
+mabi=
+UrlSuffix(gcc/LoongArch-Options.html#index-mabi-2)
+
+mbranch-cost=
+UrlSuffix(gcc/LoongArch-Options.html#index-mbranch-cost-2)
+
+mcheck-zero-division
+UrlSuffix(gcc/LoongArch-Options.html#index-mcheck-zero-division)
+
+mcond-move-int
+UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-int)
+
+mcond-move-float
+UrlSuffix(gcc/LoongArch-Options.html#index-mcond-move-float)
+
+mmemcpy
+UrlSuffix(gcc/LoongArch-Options.html#index-mmemcpy)
+
+mstrict-align
+UrlSuffix(gcc/LoongArch-Options.html#index-mstrict-align-1)
+
+mmax-inline-memcpy-size=
+UrlSuffix(gcc/LoongArch-Options.html#index-mmax-inline-memcpy-size)
+
+mexplicit-relocs=
+UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
+
+mexplicit-relocs
+UrlSuffix(gcc/LoongArch-Options.html#index-mexplicit-relocs-1)
+
+mrecip
+UrlSuffix(gcc/LoongArch-Options.html#index-mrecip)
+
+mrecip=
+UrlSuffix(gcc/LoongArch-Options.html#index-mrecip)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mdirect-extern-access
+UrlSuffix(gcc/LoongArch-Options.html#index-mdirect-extern-access)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
diff --git a/gcc/config/lynx.opt.urls b/gcc/config/lynx.opt.urls
new file mode 100644
index 000000000000..63e7b9c4b33f
--- /dev/null
+++ b/gcc/config/lynx.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/lynx.opt and generated HTML
+
+mthreads
+UrlSuffix(gcc/x86-Windows-Options.html#index-mthreads-1)
+
diff --git a/gcc/config/m32c/m32c.opt.urls b/gcc/config/m32c/m32c.opt.urls
new file mode 100644
index 000000000000..da1bc024f74a
--- /dev/null
+++ b/gcc/config/m32c/m32c.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m32c/m32c.opt and generated HTML
+
+msim
+UrlSuffix(gcc/M32C-Options.html#index-msim-4)
+
+memregs=
+UrlSuffix(gcc/M32C-Options.html#index-memregs_003d)
+
diff --git a/gcc/config/m32r/m32r.opt.urls b/gcc/config/m32r/m32r.opt.urls
new file mode 100644
index 000000000000..ca33866970d8
--- /dev/null
+++ b/gcc/config/m32r/m32r.opt.urls
@@ -0,0 +1,27 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m32r/m32r.opt and generated HTML
+
+m32rx
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32rx)
+
+m32r2
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r2)
+
+m32r
+UrlSuffix(gcc/M32R_002fD-Options.html#index-m32r)
+
+malign-loops
+UrlSuffix(gcc/M32R_002fD-Options.html#index-malign-loops)
+
+mdebug
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mdebug)
+
+; skipping UrlSuffix for 'mflush-func=' due to finding no URLs
+
+mno-flush-func
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-func)
+
+mno-flush-trap
+UrlSuffix(gcc/M32R_002fD-Options.html#index-mno-flush-trap)
+
+; skipping UrlSuffix for 'msdata=' due to finding no URLs
+
diff --git a/gcc/config/m68k/ieee.opt.urls b/gcc/config/m68k/ieee.opt.urls
new file mode 100644
index 000000000000..9c0c0f9b68a7
--- /dev/null
+++ b/gcc/config/m68k/ieee.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/ieee.opt and generated HTML
+
+; skipping UrlSuffix for 'mieee-fp' due to finding no URLs
+
diff --git a/gcc/config/m68k/m68k-tables.opt.urls b/gcc/config/m68k/m68k-tables.opt.urls
new file mode 100644
index 000000000000..380dc4370846
--- /dev/null
+++ b/gcc/config/m68k/m68k-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k-tables.opt and generated HTML
+
diff --git a/gcc/config/m68k/m68k.opt.urls b/gcc/config/m68k/m68k.opt.urls
new file mode 100644
index 000000000000..079fbf4a88e4
--- /dev/null
+++ b/gcc/config/m68k/m68k.opt.urls
@@ -0,0 +1,107 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/m68k.opt and generated HTML
+
+m5200
+UrlSuffix(gcc/M680x0-Options.html#index-m5200)
+
+m5206e
+UrlSuffix(gcc/M680x0-Options.html#index-m5206e)
+
+m528x
+UrlSuffix(gcc/M680x0-Options.html#index-m528x)
+
+m5307
+UrlSuffix(gcc/M680x0-Options.html#index-m5307)
+
+m5407
+UrlSuffix(gcc/M680x0-Options.html#index-m5407)
+
+m68000
+UrlSuffix(gcc/M680x0-Options.html#index-m68000)
+
+m68010
+UrlSuffix(gcc/M680x0-Options.html#index-m68010)
+
+m68020
+UrlSuffix(gcc/M680x0-Options.html#index-m68020)
+
+m68020-40
+UrlSuffix(gcc/M680x0-Options.html#index-m68020-40)
+
+m68020-60
+UrlSuffix(gcc/M680x0-Options.html#index-m68020-60)
+
+m68030
+UrlSuffix(gcc/M680x0-Options.html#index-m68030)
+
+m68040
+UrlSuffix(gcc/M680x0-Options.html#index-m68040)
+
+m68060
+UrlSuffix(gcc/M680x0-Options.html#index-m68060)
+
+m68881
+UrlSuffix(gcc/M680x0-Options.html#index-m68881)
+
+malign-int
+UrlSuffix(gcc/M680x0-Options.html#index-malign-int)
+
+march=
+UrlSuffix(gcc/M680x0-Options.html#index-march-8)
+
+mbitfield
+UrlSuffix(gcc/M680x0-Options.html#index-mbitfield)
+
+mc68000
+UrlSuffix(gcc/M680x0-Options.html#index-mc68000)
+
+mc68020
+UrlSuffix(gcc/M680x0-Options.html#index-mc68020)
+
+mcfv4e
+UrlSuffix(gcc/M680x0-Options.html#index-mcfv4e)
+
+mcpu=
+UrlSuffix(gcc/M680x0-Options.html#index-mcpu-7)
+
+mcpu32
+UrlSuffix(gcc/M680x0-Options.html#index-mcpu32)
+
+mdiv
+UrlSuffix(gcc/M680x0-Options.html#index-mdiv-1)
+
+mhard-float
+UrlSuffix(gcc/M680x0-Options.html#index-mhard-float-2)
+
+; skipping UrlSuffix for 'mid-shared-library' due to finding no URLs
+
+mlong-jump-table-offsets
+UrlSuffix(gcc/M680x0-Options.html#index-mlong-jump-table-offsets)
+
+mnobitfield
+UrlSuffix(gcc/M680x0-Options.html#index-mnobitfield)
+
+mpcrel
+UrlSuffix(gcc/M680x0-Options.html#index-mpcrel)
+
+mrtd
+UrlSuffix(gcc/M680x0-Options.html#index-mrtd)
+
+; skipping UrlSuffix for 'msep-data' due to finding no URLs
+
+; skipping UrlSuffix for 'mshared-library-id=' due to finding no URLs
+
+mshort
+UrlSuffix(gcc/M680x0-Options.html#index-mshort)
+
+msoft-float
+UrlSuffix(gcc/M680x0-Options.html#index-msoft-float-6)
+
+mstrict-align
+UrlSuffix(gcc/M680x0-Options.html#index-mstrict-align-2)
+
+mtune=
+UrlSuffix(gcc/M680x0-Options.html#index-mtune-9)
+
+mxgot
+UrlSuffix(gcc/M680x0-Options.html#index-mxgot)
+
diff --git a/gcc/config/m68k/uclinux.opt.urls b/gcc/config/m68k/uclinux.opt.urls
new file mode 100644
index 000000000000..3fd1392f88a6
--- /dev/null
+++ b/gcc/config/m68k/uclinux.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/m68k/uclinux.opt and generated HTML
+
diff --git a/gcc/config/mcore/mcore.opt.urls b/gcc/config/mcore/mcore.opt.urls
new file mode 100644
index 000000000000..a876c8c13eff
--- /dev/null
+++ b/gcc/config/mcore/mcore.opt.urls
@@ -0,0 +1,38 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mcore/mcore.opt and generated HTML
+
+m210
+UrlSuffix(gcc/MCore-Options.html#index-m210)
+
+m340
+UrlSuffix(gcc/MCore-Options.html#index-m340)
+
+m4byte-functions
+UrlSuffix(gcc/MCore-Options.html#index-m4byte-functions)
+
+mbig-endian
+UrlSuffix(gcc/MCore-Options.html#index-mbig-endian-7)
+
+mcallgraph-data
+UrlSuffix(gcc/MCore-Options.html#index-mcallgraph-data)
+
+mdiv
+UrlSuffix(gcc/MCore-Options.html#index-mdiv-2)
+
+mhardlit
+UrlSuffix(gcc/MCore-Options.html#index-mhardlit)
+
+mlittle-endian
+UrlSuffix(gcc/MCore-Options.html#index-mlittle-endian-7)
+
+mno-lsim
+UrlSuffix(gcc/MCore-Options.html#index-mno-lsim-1)
+
+mslow-bytes
+UrlSuffix(gcc/MCore-Options.html#index-mslow-bytes)
+
+mstack-increment=
+UrlSuffix(gcc/MCore-Options.html#index-mstack-increment)
+
+mwide-bitfields
+UrlSuffix(gcc/MCore-Options.html#index-mwide-bitfields)
+
diff --git a/gcc/config/microblaze/microblaze.opt.urls b/gcc/config/microblaze/microblaze.opt.urls
new file mode 100644
index 000000000000..33b13b84e2c2
--- /dev/null
+++ b/gcc/config/microblaze/microblaze.opt.urls
@@ -0,0 +1,59 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/microblaze/microblaze.opt and generated HTML
+
+msoft-float
+UrlSuffix(gcc/MicroBlaze-Options.html#index-msoft-float-7)
+
+mhard-float
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mhard-float-3)
+
+msmall-divides
+UrlSuffix(gcc/MicroBlaze-Options.html#index-msmall-divides)
+
+mcpu=
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mcpu_003d-3)
+
+mmemcpy
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mmemcpy-1)
+
+mbig-endian
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mbig-endian-8)
+
+mlittle-endian
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mlittle-endian-8)
+
+mxl-soft-mul
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-mul)
+
+mxl-reorder
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-reorder)
+
+mxl-soft-div
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-soft-div)
+
+mxl-barrel-shift
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-barrel-shift)
+
+mxl-pattern-compare
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-pattern-compare)
+
+mxl-stack-check
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-stack-check)
+
+mxl-gp-opt
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-gp-opt)
+
+mno-clearbss
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mno-clearbss)
+
+mxl-multiply-high
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-multiply-high)
+
+mxl-float-convert
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-convert)
+
+mxl-float-sqrt
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mxl-float-sqrt)
+
+mpic-data-is-text-relative
+UrlSuffix(gcc/MicroBlaze-Options.html#index-mpic-data-is-text-relative-1)
+
diff --git a/gcc/config/mips/mips-tables.opt.urls b/gcc/config/mips/mips-tables.opt.urls
new file mode 100644
index 000000000000..3b2a77f2ea9c
--- /dev/null
+++ b/gcc/config/mips/mips-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips-tables.opt and generated HTML
+
diff --git a/gcc/config/mips/mips.opt.urls b/gcc/config/mips/mips.opt.urls
new file mode 100644
index 000000000000..ff2f0aee0e37
--- /dev/null
+++ b/gcc/config/mips/mips.opt.urls
@@ -0,0 +1,269 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/mips.opt and generated HTML
+
+EB
+UrlSuffix(gcc/MIPS-Options.html#index-EB-2)
+
+EL
+UrlSuffix(gcc/MIPS-Options.html#index-EL-2)
+
+; skipping UrlSuffix for 'mabi=' due to finding no URLs
+
+mabicalls
+UrlSuffix(gcc/MIPS-Options.html#index-mabicalls)
+
+mmad
+UrlSuffix(gcc/MIPS-Options.html#index-mmad)
+
+mimadd
+UrlSuffix(gcc/MIPS-Options.html#index-mimadd)
+
+march=
+UrlSuffix(gcc/MIPS-Options.html#index-march-9)
+
+mbranch-cost=
+UrlSuffix(gcc/MIPS-Options.html#index-mbranch-cost-3)
+
+mbranch-likely
+UrlSuffix(gcc/MIPS-Options.html#index-mbranch-likely)
+
+mflip-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mflip-mips16)
+
+mcheck-zero-division
+UrlSuffix(gcc/MIPS-Options.html#index-mcheck-zero-division-1)
+
+mcode-readable=
+UrlSuffix(gcc/MIPS-Options.html#index-mcode-readable)
+
+mdivide-breaks
+UrlSuffix(gcc/MIPS-Options.html#index-mdivide-breaks)
+
+mdivide-traps
+UrlSuffix(gcc/MIPS-Options.html#index-mdivide-traps)
+
+mdmx
+UrlSuffix(gcc/MIPS-Options.html#index-mdmx)
+
+mdouble-float
+UrlSuffix(gcc/MIPS-Options.html#index-mdouble-float-2)
+
+mdsp
+UrlSuffix(gcc/MIPS-Options.html#index-mdsp-1)
+
+mdspr2
+UrlSuffix(gcc/MIPS-Options.html#index-mdspr2)
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+; skipping UrlSuffix for 'meb' due to finding no URLs
+
+; skipping UrlSuffix for 'mel' due to finding no URLs
+
+membedded-data
+UrlSuffix(gcc/MIPS-Options.html#index-membedded-data)
+
+meva
+UrlSuffix(gcc/MIPS-Options.html#index-meva)
+
+mexplicit-relocs
+UrlSuffix(gcc/MIPS-Options.html#index-mexplicit-relocs-2)
+
+mextern-sdata
+UrlSuffix(gcc/MIPS-Options.html#index-mextern-sdata)
+
+mfix-24k
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-24k)
+
+mfix-r4000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4000)
+
+mfix-r4400
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r4400)
+
+mfix-r5900
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r5900)
+
+mfix-rm7000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-rm7000)
+
+mfix-r10000
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-r10000)
+
+mfix-sb1
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-sb1)
+
+mfix-vr4120
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4120)
+
+mfix-vr4130
+UrlSuffix(gcc/MIPS-Options.html#index-mfix-vr4130)
+
+mfp-exceptions
+UrlSuffix(gcc/MIPS-Options.html#index-mfp-exceptions)
+
+mfp32
+UrlSuffix(gcc/MIPS-Options.html#index-mfp32)
+
+mfpxx
+UrlSuffix(gcc/MIPS-Options.html#index-mfpxx)
+
+mfp64
+UrlSuffix(gcc/MIPS-Options.html#index-mfp64)
+
+mflush-func=
+UrlSuffix(gcc/MIPS-Options.html#index-mflush-func)
+
+mgp32
+UrlSuffix(gcc/MIPS-Options.html#index-mgp32)
+
+mgp64
+UrlSuffix(gcc/MIPS-Options.html#index-mgp64)
+
+mgpopt
+UrlSuffix(gcc/MIPS-Options.html#index-mgpopt)
+
+mplt
+UrlSuffix(gcc/MIPS-Options.html#index-mplt)
+
+mhard-float
+UrlSuffix(gcc/MIPS-Options.html#index-mhard-float-4)
+
+minterlink-compressed
+UrlSuffix(gcc/MIPS-Options.html#index-minterlink-compressed)
+
+minterlink-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-minterlink-mips16)
+
+mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mips16)
+
+mips3d
+UrlSuffix(gcc/MIPS-Options.html#index-mips3d)
+
+mllsc
+UrlSuffix(gcc/MIPS-Options.html#index-mllsc)
+
+mlocal-sdata
+UrlSuffix(gcc/MIPS-Options.html#index-mlocal-sdata)
+
+mlong-calls
+UrlSuffix(gcc/MIPS-Options.html#index-mlong-calls-6)
+
+mlong32
+UrlSuffix(gcc/MIPS-Options.html#index-mlong32)
+
+mlong64
+UrlSuffix(gcc/MIPS-Options.html#index-mlong64)
+
+mmcount-ra-address
+UrlSuffix(gcc/MIPS-Options.html#index-mmcount-ra-address)
+
+mmemcpy
+UrlSuffix(gcc/MIPS-Options.html#index-mmemcpy-2)
+
+mmicromips
+UrlSuffix(gcc/MIPS-Options.html#index-mmicromips)
+
+mmt
+UrlSuffix(gcc/MIPS-Options.html#index-mmt)
+
+mno-float
+UrlSuffix(gcc/MIPS-Options.html#index-mno-float)
+
+mmcu
+UrlSuffix(gcc/MIPS-Options.html#index-mmcu-1)
+
+; skipping UrlSuffix for 'mno-flush-func' due to finding no URLs
+
+mno-mdmx
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mdmx)
+
+mno-mips16
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mips16)
+
+mno-mips3d
+UrlSuffix(gcc/MIPS-Options.html#index-mno-mips3d)
+
+mpaired-single
+UrlSuffix(gcc/MIPS-Options.html#index-mpaired-single)
+
+mr10k-cache-barrier=
+UrlSuffix(gcc/MIPS-Options.html#index-mr10k-cache-barrier)
+
+mrelax-pic-calls
+UrlSuffix(gcc/MIPS-Options.html#index-mrelax-pic-calls)
+
+msingle-float
+UrlSuffix(gcc/MIPS-Options.html#index-msingle-float-1)
+
+msmartmips
+UrlSuffix(gcc/MIPS-Options.html#index-msmartmips)
+
+msoft-float
+UrlSuffix(gcc/MIPS-Options.html#index-msoft-float-8)
+
+msplit-addresses
+UrlSuffix(gcc/MIPS-Options.html#index-msplit-addresses)
+
+mmips16e2
+UrlSuffix(gcc/MIPS-Options.html#index-mmips16e2)
+
+msym32
+UrlSuffix(gcc/MIPS-Options.html#index-msym32)
+
+msynci
+UrlSuffix(gcc/MIPS-Options.html#index-msynci)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mlxc1-sxc1
+UrlSuffix(gcc/MIPS-Options.html#index-mlxc1-sxc1)
+
+mmadd4
+UrlSuffix(gcc/MIPS-Options.html#index-mmadd4)
+
+mtune=
+UrlSuffix(gcc/MIPS-Options.html#index-mtune-10)
+
+munaligned-access
+UrlSuffix(gcc/MIPS-Options.html#index-munaligned-access-1)
+
+muninit-const-in-rodata
+UrlSuffix(gcc/MIPS-Options.html#index-muninit-const-in-rodata)
+
+mvirt
+UrlSuffix(gcc/MIPS-Options.html#index-mvirt)
+
+mxpa
+UrlSuffix(gcc/MIPS-Options.html#index-mxpa)
+
+mcrc
+UrlSuffix(gcc/MIPS-Options.html#index-mcrc)
+
+mginv
+UrlSuffix(gcc/MIPS-Options.html#index-mginv)
+
+mvr4130-align
+UrlSuffix(gcc/MIPS-Options.html#index-mvr4130-align)
+
+mxgot
+UrlSuffix(gcc/MIPS-Options.html#index-mxgot-1)
+
+modd-spreg
+UrlSuffix(gcc/MIPS-Options.html#index-modd-spreg)
+
+mframe-header-opt
+UrlSuffix(gcc/MIPS-Options.html#index-mframe-header-opt)
+
+mload-store-pairs
+UrlSuffix(gcc/MIPS-Options.html#index-mload-store-pairs)
+
+mloongson-mmi
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-mmi)
+
+mloongson-ext
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext)
+
+mloongson-ext2
+UrlSuffix(gcc/MIPS-Options.html#index-mloongson-ext2)
+
diff --git a/gcc/config/mips/sde.opt.urls b/gcc/config/mips/sde.opt.urls
new file mode 100644
index 000000000000..2a3d290545f0
--- /dev/null
+++ b/gcc/config/mips/sde.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mips/sde.opt and generated HTML
+
diff --git a/gcc/config/mmix/mmix.opt.urls b/gcc/config/mmix/mmix.opt.urls
new file mode 100644
index 000000000000..6722f9e4e01d
--- /dev/null
+++ b/gcc/config/mmix/mmix.opt.urls
@@ -0,0 +1,44 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mmix/mmix.opt and generated HTML
+
+mlibfuncs
+UrlSuffix(gcc/MMIX-Options.html#index-mlibfuncs)
+
+mabi=mmixware
+UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dmmixware)
+
+mabi=gnu
+UrlSuffix(gcc/MMIX-Options.html#index-mabi_003dgnu)
+
+mepsilon
+UrlSuffix(gcc/MMIX-Options.html#index-mepsilon)
+
+mzero-extend
+UrlSuffix(gcc/MMIX-Options.html#index-mzero-extend)
+
+mknuthdiv
+UrlSuffix(gcc/MMIX-Options.html#index-mknuthdiv)
+
+mtoplevel-symbols
+UrlSuffix(gcc/MMIX-Options.html#index-mtoplevel-symbols)
+
+melf
+UrlSuffix(gcc/MMIX-Options.html#index-melf-1)
+
+mbranch-predict
+UrlSuffix(gcc/MMIX-Options.html#index-mbranch-predict)
+
+mno-branch-predict
+UrlSuffix(gcc/MMIX-Options.html#index-mno-branch-predict)
+
+mbase-addresses
+UrlSuffix(gcc/MMIX-Options.html#index-mbase-addresses)
+
+mno-base-addresses
+UrlSuffix(gcc/MMIX-Options.html#index-mno-base-addresses)
+
+msingle-exit
+UrlSuffix(gcc/MMIX-Options.html#index-msingle-exit)
+
+mno-single-exit
+UrlSuffix(gcc/MMIX-Options.html#index-mno-single-exit)
+
diff --git a/gcc/config/mn10300/mn10300.opt.urls b/gcc/config/mn10300/mn10300.opt.urls
new file mode 100644
index 000000000000..396ca4aa2e60
--- /dev/null
+++ b/gcc/config/mn10300/mn10300.opt.urls
@@ -0,0 +1,32 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/mn10300/mn10300.opt and generated HTML
+
+mam33
+UrlSuffix(gcc/MN10300-Options.html#index-mam33)
+
+mam33-2
+UrlSuffix(gcc/MN10300-Options.html#index-mam33-2)
+
+mam34
+UrlSuffix(gcc/MN10300-Options.html#index-mam34)
+
+mtune=
+UrlSuffix(gcc/MN10300-Options.html#index-mtune-11)
+
+mmult-bug
+UrlSuffix(gcc/MN10300-Options.html#index-mmult-bug)
+
+mno-crt0
+UrlSuffix(gcc/MN10300-Options.html#index-mno-crt0)
+
+mrelax
+UrlSuffix(gcc/MN10300-Options.html#index-mrelax-2)
+
+mreturn-pointer-on-d0
+UrlSuffix(gcc/MN10300-Options.html#index-mreturn-pointer-on-d0)
+
+mliw
+UrlSuffix(gcc/MN10300-Options.html#index-mliw)
+
+msetlb
+UrlSuffix(gcc/MN10300-Options.html#index-msetlb)
+
diff --git a/gcc/config/moxie/moxie.opt.urls b/gcc/config/moxie/moxie.opt.urls
new file mode 100644
index 000000000000..a1b8b8a7a767
--- /dev/null
+++ b/gcc/config/moxie/moxie.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/moxie/moxie.opt and generated HTML
+
+meb
+UrlSuffix(gcc/Moxie-Options.html#index-meb)
+
+mel
+UrlSuffix(gcc/Moxie-Options.html#index-mel)
+
+mmul.x
+UrlSuffix(gcc/Moxie-Options.html#index-mmul_002ex)
+
+mno-crt0
+UrlSuffix(gcc/Moxie-Options.html#index-mno-crt0-1)
+
diff --git a/gcc/config/msp430/msp430.opt.urls b/gcc/config/msp430/msp430.opt.urls
new file mode 100644
index 000000000000..420c1c50f13e
--- /dev/null
+++ b/gcc/config/msp430/msp430.opt.urls
@@ -0,0 +1,53 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/msp430/msp430.opt and generated HTML
+
+msim
+UrlSuffix(gcc/MSP430-Options.html#index-msim-5)
+
+mtiny-printf
+UrlSuffix(gcc/MSP430-Options.html#index-mtiny-printf)
+
+masm-hex
+UrlSuffix(gcc/MSP430-Options.html#index-masm-hex)
+
+mmcu=
+UrlSuffix(gcc/MSP430-Options.html#index-mmcu_003d)
+
+mwarn-mcu
+UrlSuffix(gcc/MSP430-Options.html#index-mwarn-mcu)
+
+mwarn-devices-csv
+UrlSuffix(gcc/MSP430-Options.html#index-mwarn-devices-csv)
+
+mcpu=
+UrlSuffix(gcc/MSP430-Options.html#index-mcpu_003d-4)
+
+mlarge
+UrlSuffix(gcc/MSP430-Options.html#index-mlarge)
+
+msmall
+UrlSuffix(gcc/MSP430-Options.html#index-msmall)
+
+mrelax
+UrlSuffix(gcc/MSP430-Options.html#index-mrelax-3)
+
+minrt
+UrlSuffix(gcc/MSP430-Options.html#index-minrt)
+
+mhwmult=
+UrlSuffix(gcc/MSP430-Options.html#index-mhwmult_003d)
+
+mcode-region=
+UrlSuffix(gcc/MSP430-Options.html#index-mcode-region)
+
+mdata-region=
+UrlSuffix(gcc/MSP430-Options.html#index-mdata-region)
+
+msilicon-errata=
+UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata)
+
+msilicon-errata-warn=
+UrlSuffix(gcc/MSP430-Options.html#index-msilicon-errata-warn)
+
+mmax-inline-shift=
+UrlSuffix(gcc/MSP430-Options.html#index-mmax-inline-shift_003d)
+
diff --git a/gcc/config/nds32/nds32-elf.opt.urls b/gcc/config/nds32/nds32-elf.opt.urls
new file mode 100644
index 000000000000..5399afba7d3d
--- /dev/null
+++ b/gcc/config/nds32/nds32-elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-elf.opt and generated HTML
+
+mcmodel=
+UrlSuffix(gcc/NDS32-Options.html#index-mcmodel)
+
diff --git a/gcc/config/nds32/nds32-linux.opt.urls b/gcc/config/nds32/nds32-linux.opt.urls
new file mode 100644
index 000000000000..27d39f04ad95
--- /dev/null
+++ b/gcc/config/nds32/nds32-linux.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32-linux.opt and generated HTML
+
+mcmodel=
+UrlSuffix(gcc/NDS32-Options.html#index-mcmodel)
+
diff --git a/gcc/config/nds32/nds32.opt.urls b/gcc/config/nds32/nds32.opt.urls
new file mode 100644
index 000000000000..e34512d69ba9
--- /dev/null
+++ b/gcc/config/nds32/nds32.opt.urls
@@ -0,0 +1,57 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nds32/nds32.opt and generated HTML
+
+; skipping UrlSuffix for 'EB' due to finding no URLs
+
+; skipping UrlSuffix for 'EL' due to finding no URLs
+
+; skipping UrlSuffix for 'mabi=' due to finding no URLs
+
+mreduced-regs
+UrlSuffix(gcc/NDS32-Options.html#index-mreduced-regs)
+
+mfull-regs
+UrlSuffix(gcc/NDS32-Options.html#index-mfull-regs)
+
+mbig-endian
+UrlSuffix(gcc/NDS32-Options.html#index-mbig-endian-9)
+
+mlittle-endian
+UrlSuffix(gcc/NDS32-Options.html#index-mlittle-endian-9)
+
+mcmov
+UrlSuffix(gcc/NDS32-Options.html#index-mcmov)
+
+mext-perf
+UrlSuffix(gcc/NDS32-Options.html#index-mext-perf)
+
+mext-perf2
+UrlSuffix(gcc/NDS32-Options.html#index-mext-perf2)
+
+mext-string
+UrlSuffix(gcc/NDS32-Options.html#index-mext-string)
+
+mv3push
+UrlSuffix(gcc/NDS32-Options.html#index-mv3push)
+
+m16-bit
+UrlSuffix(gcc/NDS32-Options.html#index-m16-bit-1)
+
+misr-vector-size=
+UrlSuffix(gcc/NDS32-Options.html#index-misr-vector-size)
+
+mcache-block-size=
+UrlSuffix(gcc/NDS32-Options.html#index-mcache-block-size)
+
+march=
+UrlSuffix(gcc/NDS32-Options.html#index-march-10)
+
+; skipping UrlSuffix for 'mcpu=' due to finding no URLs
+
+mctor-dtor
+UrlSuffix(gcc/NDS32-Options.html#index-mctor-dtor)
+
+mrelax
+UrlSuffix(gcc/NDS32-Options.html#index-mrelax-4)
+
+; skipping UrlSuffix for 'munaligned-access' due to finding no URLs
+
diff --git a/gcc/config/netbsd-elf.opt.urls b/gcc/config/netbsd-elf.opt.urls
new file mode 100644
index 000000000000..c0e791c3a35f
--- /dev/null
+++ b/gcc/config/netbsd-elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd-elf.opt and generated HTML
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/netbsd.opt.urls b/gcc/config/netbsd.opt.urls
new file mode 100644
index 000000000000..513bf9b7cba6
--- /dev/null
+++ b/gcc/config/netbsd.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/netbsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/nios2/elf.opt.urls b/gcc/config/nios2/elf.opt.urls
new file mode 100644
index 000000000000..1367c6ba50cf
--- /dev/null
+++ b/gcc/config/nios2/elf.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/elf.opt and generated HTML
+
+msmallc
+UrlSuffix(gcc/Nios-II-Options.html#index-msmallc)
+
+msys-lib=
+UrlSuffix(gcc/Nios-II-Options.html#index-msys-lib)
+
+msys-crt0=
+UrlSuffix(gcc/Nios-II-Options.html#index-msys-crt0)
+
+mhal
+UrlSuffix(gcc/Nios-II-Options.html#index-mhal)
+
diff --git a/gcc/config/nios2/nios2.opt.urls b/gcc/config/nios2/nios2.opt.urls
new file mode 100644
index 000000000000..a38ea285a6e2
--- /dev/null
+++ b/gcc/config/nios2/nios2.opt.urls
@@ -0,0 +1,50 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nios2/nios2.opt and generated HTML
+
+mhw-div
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-div)
+
+mhw-mul
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mul)
+
+mhw-mulx
+UrlSuffix(gcc/Nios-II-Options.html#index-mhw-mulx)
+
+mfast-sw-div
+UrlSuffix(gcc/Nios-II-Options.html#index-mfast-sw-div)
+
+mbypass-cache
+UrlSuffix(gcc/Nios-II-Options.html#index-mbypass-cache)
+
+mno-cache-volatile
+UrlSuffix(gcc/Nios-II-Options.html#index-mno-cache-volatile)
+
+mcache-volatile
+UrlSuffix(gcc/Nios-II-Options.html#index-mcache-volatile)
+
+mgpopt=
+UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1)
+
+mgpopt
+UrlSuffix(gcc/Nios-II-Options.html#index-mgpopt-1)
+
+mno-gpopt
+UrlSuffix(gcc/Nios-II-Options.html#index-mno-gpopt-1)
+
+meb
+UrlSuffix(gcc/Nios-II-Options.html#index-meb-1)
+
+mel
+UrlSuffix(gcc/Nios-II-Options.html#index-mel-1)
+
+mcustom-fpu-cfg=
+UrlSuffix(gcc/Nios-II-Options.html#index-mcustom-fpu-cfg)
+
+march=
+UrlSuffix(gcc/Nios-II-Options.html#index-march-11)
+
+mgprel-sec=
+UrlSuffix(gcc/Nios-II-Options.html#index-mgprel-sec)
+
+mr0rel-sec=
+UrlSuffix(gcc/Nios-II-Options.html#index-mr0rel-sec)
+
diff --git a/gcc/config/nvptx/nvptx-gen.opt.urls b/gcc/config/nvptx/nvptx-gen.opt.urls
new file mode 100644
index 000000000000..7ea132489aad
--- /dev/null
+++ b/gcc/config/nvptx/nvptx-gen.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx-gen.opt and generated HTML
+
diff --git a/gcc/config/nvptx/nvptx.opt.urls b/gcc/config/nvptx/nvptx.opt.urls
new file mode 100644
index 000000000000..5c8942ca7522
--- /dev/null
+++ b/gcc/config/nvptx/nvptx.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/nvptx/nvptx.opt and generated HTML
+
+m64
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-m64)
+
+mmainkernel
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mmainkernel)
+
+moptimize
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-moptimize)
+
+msoft-stack
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-msoft-stack)
+
+muniform-simt
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-muniform-simt)
+
+mgomp
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mgomp)
+
+misa=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-misa)
+
+march=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-march-12)
+
+mptx=
+UrlSuffix(gcc/Nvidia-PTX-Options.html#index-mptx)
+
diff --git a/gcc/config/openbsd.opt.urls b/gcc/config/openbsd.opt.urls
new file mode 100644
index 000000000000..d7ea1ae26e43
--- /dev/null
+++ b/gcc/config/openbsd.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/openbsd.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/or1k/elf.opt.urls b/gcc/config/or1k/elf.opt.urls
new file mode 100644
index 000000000000..ea3d5d76ac7d
--- /dev/null
+++ b/gcc/config/or1k/elf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/elf.opt and generated HTML
+
+mboard=
+UrlSuffix(gcc/OpenRISC-Options.html#index-mboard)
+
+mnewlib
+UrlSuffix(gcc/OpenRISC-Options.html#index-mnewlib)
+
diff --git a/gcc/config/or1k/or1k.opt.urls b/gcc/config/or1k/or1k.opt.urls
new file mode 100644
index 000000000000..2016ea622cfc
--- /dev/null
+++ b/gcc/config/or1k/or1k.opt.urls
@@ -0,0 +1,46 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/or1k/or1k.opt and generated HTML
+
+mhard-div
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-div)
+
+msoft-div
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-div)
+
+mhard-mul
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-mul)
+
+msoft-mul
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-mul)
+
+msoft-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-msoft-float-9)
+
+mhard-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-mhard-float-5)
+
+mdouble-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-mdouble-float-3)
+
+munordered-float
+UrlSuffix(gcc/OpenRISC-Options.html#index-munordered-float)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mcmov
+UrlSuffix(gcc/OpenRISC-Options.html#index-mcmov-1)
+
+mror
+UrlSuffix(gcc/OpenRISC-Options.html#index-mror)
+
+mrori
+UrlSuffix(gcc/OpenRISC-Options.html#index-mrori)
+
+msext
+UrlSuffix(gcc/OpenRISC-Options.html#index-msext)
+
+msfimm
+UrlSuffix(gcc/OpenRISC-Options.html#index-msfimm)
+
+mshftimm
+UrlSuffix(gcc/OpenRISC-Options.html#index-mshftimm)
+
diff --git a/gcc/config/pa/pa-hpux.opt.urls b/gcc/config/pa/pa-hpux.opt.urls
new file mode 100644
index 000000000000..6a52dd08e482
--- /dev/null
+++ b/gcc/config/pa/pa-hpux.opt.urls
@@ -0,0 +1,11 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux.opt and generated HTML
+
+msio
+UrlSuffix(gcc/HPPA-Options.html#index-msio)
+
+nolibdld
+UrlSuffix(gcc/HPPA-Options.html#index-nolibdld)
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/pa/pa-hpux1010.opt.urls b/gcc/config/pa/pa-hpux1010.opt.urls
new file mode 100644
index 000000000000..9b96cafbf065
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1010.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1010.opt and generated HTML
+
diff --git a/gcc/config/pa/pa-hpux1111.opt.urls b/gcc/config/pa/pa-hpux1111.opt.urls
new file mode 100644
index 000000000000..706e63c534bd
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1111.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1111.opt and generated HTML
+
diff --git a/gcc/config/pa/pa-hpux1131.opt.urls b/gcc/config/pa/pa-hpux1131.opt.urls
new file mode 100644
index 000000000000..497c49d186f3
--- /dev/null
+++ b/gcc/config/pa/pa-hpux1131.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa-hpux1131.opt and generated HTML
+
diff --git a/gcc/config/pa/pa.opt.urls b/gcc/config/pa/pa.opt.urls
new file mode 100644
index 000000000000..5b8bcebdd0da
--- /dev/null
+++ b/gcc/config/pa/pa.opt.urls
@@ -0,0 +1,71 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa.opt and generated HTML
+
+matomic-libcalls
+UrlSuffix(gcc/HPPA-Options.html#index-matomic-libcalls)
+
+mbig-switch
+UrlSuffix(gcc/HPPA-Options.html#index-mbig-switch)
+
+mcaller-copies
+UrlSuffix(gcc/HPPA-Options.html#index-mcaller-copies)
+
+mcoherent-ldcw
+UrlSuffix(gcc/HPPA-Options.html#index-mcoherent-ldcw)
+
+mdisable-fpregs
+UrlSuffix(gcc/HPPA-Options.html#index-mdisable-fpregs)
+
+mdisable-indexing
+UrlSuffix(gcc/HPPA-Options.html#index-mdisable-indexing)
+
+mfast-indirect-calls
+UrlSuffix(gcc/HPPA-Options.html#index-mfast-indirect-calls)
+
+mfixed-range=
+UrlSuffix(gcc/HPPA-Options.html#index-mfixed-range)
+
+mgas
+UrlSuffix(gcc/HPPA-Options.html#index-mgas)
+
+mjump-in-delay
+UrlSuffix(gcc/HPPA-Options.html#index-mjump-in-delay)
+
+mlinker-opt
+UrlSuffix(gcc/HPPA-Options.html#index-mlinker-opt)
+
+mlong-calls
+UrlSuffix(gcc/HPPA-Options.html#index-mlong-calls-5)
+
+mlong-load-store
+UrlSuffix(gcc/HPPA-Options.html#index-mlong-load-store)
+
+mno-space-regs
+UrlSuffix(gcc/HPPA-Options.html#index-mno-space-regs)
+
+mordered
+UrlSuffix(gcc/HPPA-Options.html#index-mordered)
+
+mpa-risc-1-0
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-0)
+
+mpa-risc-1-1
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-1-1)
+
+mpa-risc-2-0
+UrlSuffix(gcc/HPPA-Options.html#index-mpa-risc-2-0)
+
+mportable-runtime
+UrlSuffix(gcc/HPPA-Options.html#index-mportable-runtime)
+
+mschedule=
+UrlSuffix(gcc/HPPA-Options.html#index-mschedule)
+
+msoft-float
+UrlSuffix(gcc/HPPA-Options.html#index-msoft-float-4)
+
+msoft-mult
+UrlSuffix(gcc/HPPA-Options.html#index-msoft-mult)
+
+mspace-regs
+UrlSuffix(gcc/HPPA-Options.html#index-mspace-regs)
+
diff --git a/gcc/config/pa/pa64-hpux.opt.urls b/gcc/config/pa/pa64-hpux.opt.urls
new file mode 100644
index 000000000000..9ebf02759520
--- /dev/null
+++ b/gcc/config/pa/pa64-hpux.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pa/pa64-hpux.opt and generated HTML
+
+mgnu-ld
+UrlSuffix(gcc/HPPA-Options.html#index-mgnu-ld)
+
+mhp-ld
+UrlSuffix(gcc/HPPA-Options.html#index-mhp-ld)
+
diff --git a/gcc/config/pdp11/pdp11.opt.urls b/gcc/config/pdp11/pdp11.opt.urls
new file mode 100644
index 000000000000..f0544ca84f69
--- /dev/null
+++ b/gcc/config/pdp11/pdp11.opt.urls
@@ -0,0 +1,41 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pdp11/pdp11.opt and generated HTML
+
+m10
+UrlSuffix(gcc/PDP-11-Options.html#index-m10)
+
+m40
+UrlSuffix(gcc/PDP-11-Options.html#index-m40)
+
+m45
+UrlSuffix(gcc/PDP-11-Options.html#index-m45)
+
+mac0
+UrlSuffix(gcc/PDP-11-Options.html#index-mac0)
+
+mdec-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-mdec-asm)
+
+mgnu-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-mgnu-asm)
+
+mfpu
+UrlSuffix(gcc/PDP-11-Options.html#index-mfpu-3)
+
+mint16
+UrlSuffix(gcc/PDP-11-Options.html#index-mint16)
+
+mint32
+UrlSuffix(gcc/PDP-11-Options.html#index-mint32-1)
+
+msoft-float
+UrlSuffix(gcc/PDP-11-Options.html#index-msoft-float-10)
+
+msplit
+UrlSuffix(gcc/PDP-11-Options.html#index-msplit)
+
+munix-asm
+UrlSuffix(gcc/PDP-11-Options.html#index-munix-asm)
+
+mlra
+UrlSuffix(gcc/PDP-11-Options.html#index-mlra-2)
+
diff --git a/gcc/config/pru/pru.opt.urls b/gcc/config/pru/pru.opt.urls
new file mode 100644
index 000000000000..373b02d5aedc
--- /dev/null
+++ b/gcc/config/pru/pru.opt.urls
@@ -0,0 +1,17 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/pru/pru.opt and generated HTML
+
+minrt
+UrlSuffix(gcc/PRU-Options.html#index-minrt-1)
+
+mmcu=
+UrlSuffix(gcc/PRU-Options.html#index-mmcu-2)
+
+mno-relax
+UrlSuffix(gcc/PRU-Options.html#index-mno-relax)
+
+mloop
+UrlSuffix(gcc/PRU-Options.html#index-mloop)
+
+mabi=
+UrlSuffix(gcc/PRU-Options.html#index-mabi-3)
+
diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls
new file mode 100644
index 000000000000..e1ab96658ea6
--- /dev/null
+++ b/gcc/config/riscv/riscv.opt.urls
@@ -0,0 +1,91 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/riscv/riscv.opt and generated HTML
+
+mbig-endian
+UrlSuffix(gcc/RISC-V-Options.html#index-mbig-endian-10)
+
+mlittle-endian
+UrlSuffix(gcc/RISC-V-Options.html#index-mlittle-endian-10)
+
+mbranch-cost=
+UrlSuffix(gcc/RISC-V-Options.html#index-mbranch-cost-4)
+
+; skipping UrlSuffix for 'mplt' due to finding no URLs
+
+mabi=
+UrlSuffix(gcc/RISC-V-Options.html#index-mabi-4)
+
+mpreferred-stack-boundary=
+UrlSuffix(gcc/RISC-V-Options.html#index-mpreferred-stack-boundary)
+
+mfdiv
+UrlSuffix(gcc/RISC-V-Options.html#index-mfdiv)
+
+mdiv
+UrlSuffix(gcc/RISC-V-Options.html#index-mdiv-3)
+
+march=
+UrlSuffix(gcc/RISC-V-Options.html#index-march-14)
+
+mtune=
+UrlSuffix(gcc/RISC-V-Options.html#index-mtune-12)
+
+mcpu=
+UrlSuffix(gcc/RISC-V-Options.html#index-mcpu-8)
+
+msmall-data-limit=
+UrlSuffix(gcc/RISC-V-Options.html#index-msmall-data-limit-1)
+
+msave-restore
+UrlSuffix(gcc/RISC-V-Options.html#index-msave-restore)
+
+mshorten-memrefs
+UrlSuffix(gcc/RISC-V-Options.html#index-mshorten-memrefs)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mstrict-align
+UrlSuffix(gcc/RISC-V-Options.html#index-mstrict-align-3)
+
+; skipping UrlSuffix for 'mexplicit-relocs' due to finding no URLs
+
+mrelax
+UrlSuffix(gcc/RISC-V-Options.html#index-mrelax-5)
+
+mcsr-check
+UrlSuffix(gcc/RISC-V-Options.html#index-mcsr-check)
+
+; skipping UrlSuffix for 'momit-leaf-frame-pointer' due to finding no URLs
+
+mriscv-attribute
+UrlSuffix(gcc/RISC-V-Options.html#index-mriscv-attribute)
+
+malign-data=
+UrlSuffix(gcc/RISC-V-Options.html#index-malign-data)
+
+mstack-protector-guard=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-2)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-reg-1)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/RISC-V-Options.html#index-mstack-protector-guard-offset-2)
+
+misa-spec=
+UrlSuffix(gcc/RISC-V-Options.html#index-misa-spec)
+
+mmovcc
+UrlSuffix(gcc/RISC-V-Options.html#index-mmovcc)
+
+minline-atomics
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-atomics)
+
+minline-strcmp
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strcmp)
+
+minline-strncmp
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strncmp)
+
+minline-strlen
+UrlSuffix(gcc/RISC-V-Options.html#index-minline-strlen)
+
diff --git a/gcc/config/rl78/rl78.opt.urls b/gcc/config/rl78/rl78.opt.urls
new file mode 100644
index 000000000000..96eff5f72041
--- /dev/null
+++ b/gcc/config/rl78/rl78.opt.urls
@@ -0,0 +1,31 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rl78/rl78.opt and generated HTML
+
+msim
+UrlSuffix(gcc/RL78-Options.html#index-msim-6)
+
+mmul=
+UrlSuffix(gcc/RL78-Options.html#index-mmul)
+
+mallregs
+UrlSuffix(gcc/RL78-Options.html#index-mallregs)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+mcpu=
+UrlSuffix(gcc/RL78-Options.html#index-mcpu-9)
+
+mg10
+UrlSuffix(gcc/RL78-Options.html#index-mg10)
+
+mg13
+UrlSuffix(gcc/RL78-Options.html#index-mg13)
+
+mg14
+UrlSuffix(gcc/RL78-Options.html#index-mg14)
+
+mrl78
+UrlSuffix(gcc/RL78-Options.html#index-mrl78)
+
+msave-mduc-in-interrupts
+UrlSuffix(gcc/RL78-Options.html#index-msave-mduc-in-interrupts)
+
diff --git a/gcc/config/rpath.opt.urls b/gcc/config/rpath.opt.urls
new file mode 100644
index 000000000000..249dfdfb762d
--- /dev/null
+++ b/gcc/config/rpath.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rpath.opt and generated HTML
+
diff --git a/gcc/config/rs6000/476.opt.urls b/gcc/config/rs6000/476.opt.urls
new file mode 100644
index 000000000000..cecf72200a51
--- /dev/null
+++ b/gcc/config/rs6000/476.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/476.opt and generated HTML
+
diff --git a/gcc/config/rs6000/aix64.opt.urls b/gcc/config/rs6000/aix64.opt.urls
new file mode 100644
index 000000000000..89600bb27956
--- /dev/null
+++ b/gcc/config/rs6000/aix64.opt.urls
@@ -0,0 +1,23 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/aix64.opt and generated HTML
+
+maix64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix64)
+
+maix32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix32)
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
+mpe
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpe)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
diff --git a/gcc/config/rs6000/darwin.opt.urls b/gcc/config/rs6000/darwin.opt.urls
new file mode 100644
index 000000000000..3b7fa1a80f80
--- /dev/null
+++ b/gcc/config/rs6000/darwin.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/darwin.opt and generated HTML
+
+ffix-and-continue
+UrlSuffix(gcc/Darwin-Options.html#index-ffix-and-continue)
+
+findirect-data
+UrlSuffix(gcc/Darwin-Options.html#index-findirect-data)
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
diff --git a/gcc/config/rs6000/linux64.opt.urls b/gcc/config/rs6000/linux64.opt.urls
new file mode 100644
index 000000000000..eb81aa17fd2b
--- /dev/null
+++ b/gcc/config/rs6000/linux64.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/linux64.opt and generated HTML
+
+; skipping UrlSuffix for 'mcmodel=' due to finding no URLs
+
diff --git a/gcc/config/rs6000/rs6000-tables.opt.urls b/gcc/config/rs6000/rs6000-tables.opt.urls
new file mode 100644
index 000000000000..a44ce0d7aaa3
--- /dev/null
+++ b/gcc/config/rs6000/rs6000-tables.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000-tables.opt and generated HTML
+
diff --git a/gcc/config/rs6000/rs6000.opt.urls b/gcc/config/rs6000/rs6000.opt.urls
new file mode 100644
index 000000000000..28bf073c6cfd
--- /dev/null
+++ b/gcc/config/rs6000/rs6000.opt.urls
@@ -0,0 +1,214 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/rs6000.opt and generated HTML
+
+mpowerpc64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc64)
+
+mpowerpc-gpopt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gpopt)
+
+mpowerpc-gfxopt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpowerpc-gfxopt)
+
+mmfcrf
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmfcrf)
+
+mpopcntb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntb)
+
+mfprnd
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfprnd)
+
+mcmpb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcmpb)
+
+maltivec
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maltivec)
+
+mhard-dfp
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-dfp)
+
+mmulhw
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmulhw)
+
+mdlmzb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mdlmzb)
+
+mmultiple
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmultiple)
+
+msoft-float
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msoft-float-11)
+
+mhard-float
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhard-float-6)
+
+mpopcntd
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpopcntd)
+
+mfriz
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfriz)
+
+mveclibabi=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mveclibabi)
+
+mvsx
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvsx)
+
+mno-update
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-update)
+
+mupdate
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mupdate)
+
+msingle-pic-base
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msingle-pic-base-1)
+
+mavoid-indexed-addresses
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mavoid-indexed-addresses)
+
+; skipping UrlSuffix for 'msched-prolog' due to finding no URLs
+
+maix-struct-return
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-maix-struct-return)
+
+msvr4-struct-return
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msvr4-struct-return)
+
+mxl-compat
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mxl-compat)
+
+mrecip
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-1)
+
+mrecip=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-1)
+
+mrecip-precision
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrecip-precision)
+
+mno-fp-in-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-fp-in-toc)
+
+mno-sum-in-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-sum-in-toc)
+
+mminimal-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mminimal-toc)
+
+mfull-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfull-toc)
+
+mvrsave
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mvrsave)
+
+mblock-move-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-move-inline-limit)
+
+mblock-compare-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-limit)
+
+mblock-compare-inline-loop-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mblock-compare-inline-loop-limit)
+
+mstring-compare-inline-limit=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstring-compare-inline-limit)
+
+misel
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-misel)
+
+; skipping UrlSuffix for 'mdebug=' due to finding no URLs
+
+mabi=elfv1
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv1)
+
+mabi=elfv2
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003delfv2)
+
+mabi=ieeelongdouble
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dieeelongdouble)
+
+mabi=ibmlongdouble
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mabi_003dibmlongdouble)
+
+mcpu=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcpu-10)
+
+mtune=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtune-13)
+
+mtraceback=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtraceback)
+
+mlongcall
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlongcall)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+msched-costly-dep=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msched-costly-dep)
+
+minsert-sched-nops=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-minsert-sched-nops)
+
+mprioritize-restricted-insns=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprioritize-restricted-insns)
+
+mpointers-to-nested-functions
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpointers-to-nested-functions)
+
+msave-toc-indirect
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msave-toc-indirect)
+
+mpower8-fusion
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-fusion)
+
+mpower8-vector
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-vector)
+
+mcrypto
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcrypto)
+
+mhtm
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mhtm)
+
+mquad-memory
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory)
+
+mquad-memory-atomic
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mquad-memory-atomic)
+
+mcompat-align-parm
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcompat-align-parm)
+
+; skipping UrlSuffix for 'munroll-only-small-loops' due to finding no URLs
+
+mfloat128
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128)
+
+mfloat128-hardware
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mfloat128-hardware)
+
+mstack-protector-guard=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-3)
+
+mstack-protector-guard-reg=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-reg-2)
+
+mstack-protector-guard-offset=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstack-protector-guard-offset-3)
+
+mprefixed
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprefixed)
+
+mpcrel
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpcrel-1)
+
+mmma
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmma)
+
+mrop-protect
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrop-protect)
+
+mprivileged
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprivileged)
+
diff --git a/gcc/config/rs6000/sysv4.opt.urls b/gcc/config/rs6000/sysv4.opt.urls
new file mode 100644
index 000000000000..f8d58d6602cd
--- /dev/null
+++ b/gcc/config/rs6000/sysv4.opt.urls
@@ -0,0 +1,87 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rs6000/sysv4.opt and generated HTML
+
+msdata=
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2)
+
+mreadonly-in-sdata
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mreadonly-in-sdata)
+
+; skipping UrlSuffix for 'mtls-size=' due to finding no URLs
+
+mbit-align
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbit-align)
+
+mstrict-align
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mstrict-align-4)
+
+mrelocatable
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable)
+
+mrelocatable-lib
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mrelocatable-lib)
+
+mlittle-endian
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle-endian-11)
+
+mlittle
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mlittle)
+
+mbig-endian
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig-endian-11)
+
+mbig
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbig)
+
+mno-toc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mno-toc)
+
+mtoc
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mtoc)
+
+mprototype
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mprototype)
+
+meabi
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-meabi)
+
+mregnames
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mregnames)
+
+msdata
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msdata-2)
+
+msim
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msim-7)
+
+mads
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mads)
+
+myellowknife
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-myellowknife)
+
+mmvme
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mmvme)
+
+memb
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-memb)
+
+m64
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m64-1)
+
+m32
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-m32)
+
+; skipping UrlSuffix for 'mnewlib' due to finding no URLs
+
+msecure-plt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msecure-plt)
+
+mbss-plt
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mbss-plt)
+
+mpltseq
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpltseq)
+
+mgnu-attribute
+UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mgnu-attribute)
+
diff --git a/gcc/config/rtems.opt.urls b/gcc/config/rtems.opt.urls
new file mode 100644
index 000000000000..211a70d46ef3
--- /dev/null
+++ b/gcc/config/rtems.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rtems.opt and generated HTML
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
diff --git a/gcc/config/rx/elf.opt.urls b/gcc/config/rx/elf.opt.urls
new file mode 100644
index 000000000000..c43973a9d490
--- /dev/null
+++ b/gcc/config/rx/elf.opt.urls
@@ -0,0 +1,14 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/elf.opt and generated HTML
+
+msim
+UrlSuffix(gcc/RX-Options.html#index-msim-8)
+
+mas100-syntax
+UrlSuffix(gcc/RX-Options.html#index-mas100-syntax)
+
+mint-register=
+UrlSuffix(gcc/RX-Options.html#index-mint-register)
+
+msave-acc-in-interrupts
+UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts)
+
diff --git a/gcc/config/rx/rx.opt.urls b/gcc/config/rx/rx.opt.urls
new file mode 100644
index 000000000000..4cb037313b49
--- /dev/null
+++ b/gcc/config/rx/rx.opt.urls
@@ -0,0 +1,54 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/rx/rx.opt and generated HTML
+
+m64bit-doubles
+UrlSuffix(gcc/RX-Options.html#index-m64bit-doubles-1)
+
+m32bit-doubles
+UrlSuffix(gcc/RX-Options.html#index-m32bit-doubles-1)
+
+nofpu
+UrlSuffix(gcc/RX-Options.html#index-nofpu)
+
+fpu
+UrlSuffix(gcc/RX-Options.html#index-fpu)
+
+mcpu=
+UrlSuffix(gcc/RX-Options.html#index-mcpu-11)
+
+mbig-endian-data
+UrlSuffix(gcc/RX-Options.html#index-mbig-endian-data)
+
+mlittle-endian-data
+UrlSuffix(gcc/RX-Options.html#index-mlittle-endian-data)
+
+msmall-data-limit=
+UrlSuffix(gcc/RX-Options.html#index-msmall-data-limit-2)
+
+mrelax
+UrlSuffix(gcc/RX-Options.html#index-mrelax-6)
+
+mmax-constant-size=
+UrlSuffix(gcc/RX-Options.html#index-mmax-constant-size)
+
+mint-register=
+UrlSuffix(gcc/RX-Options.html#index-mint-register)
+
+msave-acc-in-interrupts
+UrlSuffix(gcc/RX-Options.html#index-msave-acc-in-interrupts)
+
+mpid
+UrlSuffix(gcc/RX-Options.html#index-mpid)
+
+mwarn-multiple-fast-interrupts
+UrlSuffix(gcc/RX-Options.html#index-mwarn-multiple-fast-interrupts)
+
+; skipping UrlSuffix for 'mgcc-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mallow-string-insns
+UrlSuffix(gcc/RX-Options.html#index-mallow-string-insns)
+
+mjsr
+UrlSuffix(gcc/RX-Options.html#index-mjsr)
+
diff --git a/gcc/config/s390/s390.opt.urls b/gcc/config/s390/s390.opt.urls
new file mode 100644
index 000000000000..ab1e761efa88
--- /dev/null
+++ b/gcc/config/s390/s390.opt.urls
@@ -0,0 +1,92 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/s390.opt and generated HTML
+
+m31
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m31)
+
+m64
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-m64-2)
+
+march=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-march-15)
+
+mbackchain
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mbackchain)
+
+mdebug
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mdebug-1)
+
+mesa
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mesa)
+
+mhard-dfp
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-dfp-1)
+
+mhard-float
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhard-float-7)
+
+mhotpatch=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhotpatch)
+
+mlong-double-128
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-128)
+
+mlong-double-64
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mlong-double-64)
+
+mhtm
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mhtm-1)
+
+mvx
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mvx)
+
+mpacked-stack
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mpacked-stack)
+
+msmall-exec
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msmall-exec)
+
+msoft-float
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-msoft-float-12)
+
+mstack-guard=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-guard)
+
+mstack-size=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mstack-size-2)
+
+mtune=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtune-14)
+
+mmvcle
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mmvcle)
+
+mzvector
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzvector)
+
+mwarn-dynamicstack
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-dynamicstack)
+
+mwarn-framesize=
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mwarn-framesize)
+
+mzarch
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mzarch)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+; skipping UrlSuffix for 'mpic-data-is-text-relative' due to finding no URLs
+
+; skipping UrlSuffix for 'mindirect-branch=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfunction-return=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfentry' due to finding no URLs
+
+; skipping UrlSuffix for 'mrecord-mcount' due to finding no URLs
+
+; skipping UrlSuffix for 'mnop-mcount' due to finding no URLs
+
+; skipping UrlSuffix for 'munroll-only-small-loops' due to finding no URLs
+
diff --git a/gcc/config/s390/tpf.opt.urls b/gcc/config/s390/tpf.opt.urls
new file mode 100644
index 000000000000..8322d7eaa001
--- /dev/null
+++ b/gcc/config/s390/tpf.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/s390/tpf.opt and generated HTML
+
+mtpf-trace
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace)
+
+mtpf-trace-skip
+UrlSuffix(gcc/S_002f390-and-zSeries-Options.html#index-mtpf-trace-skip)
+
diff --git a/gcc/config/sh/sh.opt.urls b/gcc/config/sh/sh.opt.urls
new file mode 100644
index 000000000000..2c3bc0699ec5
--- /dev/null
+++ b/gcc/config/sh/sh.opt.urls
@@ -0,0 +1,174 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/sh.opt and generated HTML
+
+m1
+UrlSuffix(gcc/SH-Options.html#index-m1)
+
+m2
+UrlSuffix(gcc/SH-Options.html#index-m2)
+
+m2a
+UrlSuffix(gcc/SH-Options.html#index-m2a)
+
+m2a-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m2a-nofpu)
+
+m2a-single
+UrlSuffix(gcc/SH-Options.html#index-m2a-single)
+
+m2a-single-only
+UrlSuffix(gcc/SH-Options.html#index-m2a-single-only)
+
+m3
+UrlSuffix(gcc/SH-Options.html#index-m3)
+
+m3e
+UrlSuffix(gcc/SH-Options.html#index-m3e)
+
+m4
+UrlSuffix(gcc/SH-Options.html#index-m4)
+
+m4-100
+UrlSuffix(gcc/SH-Options.html#index-m4-100)
+
+m4-200
+UrlSuffix(gcc/SH-Options.html#index-m4-200)
+
+m4-300
+UrlSuffix(gcc/SH-Options.html#index-m4-300)
+
+m4-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-nofpu)
+
+m4-100-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-100-nofpu)
+
+m4-200-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-200-nofpu)
+
+m4-300-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4-300-nofpu)
+
+m4-340
+UrlSuffix(gcc/SH-Options.html#index-m4-340)
+
+m4-500
+UrlSuffix(gcc/SH-Options.html#index-m4-500)
+
+m4-single
+UrlSuffix(gcc/SH-Options.html#index-m4-single)
+
+m4-100-single
+UrlSuffix(gcc/SH-Options.html#index-m4-100-single)
+
+m4-200-single
+UrlSuffix(gcc/SH-Options.html#index-m4-200-single)
+
+m4-300-single
+UrlSuffix(gcc/SH-Options.html#index-m4-300-single)
+
+m4-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-single-only)
+
+m4-100-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-100-single-only)
+
+m4-200-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-200-single-only)
+
+m4-300-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4-300-single-only)
+
+m4a
+UrlSuffix(gcc/SH-Options.html#index-m4a)
+
+m4a-nofpu
+UrlSuffix(gcc/SH-Options.html#index-m4a-nofpu)
+
+m4a-single
+UrlSuffix(gcc/SH-Options.html#index-m4a-single)
+
+m4a-single-only
+UrlSuffix(gcc/SH-Options.html#index-m4a-single-only)
+
+m4al
+UrlSuffix(gcc/SH-Options.html#index-m4al)
+
+maccumulate-outgoing-args
+UrlSuffix(gcc/SH-Options.html#index-maccumulate-outgoing-args)
+
+mb
+UrlSuffix(gcc/SH-Options.html#index-mb)
+
+mbigtable
+UrlSuffix(gcc/SH-Options.html#index-mbigtable)
+
+mbitops
+UrlSuffix(gcc/SH-Options.html#index-mbitops)
+
+; skipping UrlSuffix for 'mbranch-cost=' due to finding no URLs
+
+mzdcbranch
+UrlSuffix(gcc/SH-Options.html#index-mzdcbranch)
+
+mcbranch-force-delay-slot
+UrlSuffix(gcc/SH-Options.html#index-mcbranch-force-delay-slot)
+
+mdalign
+UrlSuffix(gcc/SH-Options.html#index-mdalign)
+
+; skipping UrlSuffix for 'mdiv=' due to finding no URLs
+
+; skipping UrlSuffix for 'mfdpic' due to finding no URLs
+
+mfmovd
+UrlSuffix(gcc/SH-Options.html#index-mfmovd)
+
+mfixed-range=
+UrlSuffix(gcc/SH-Options.html#index-mfixed-range-2)
+
+mieee
+UrlSuffix(gcc/SH-Options.html#index-mieee-1)
+
+minline-ic_invalidate
+UrlSuffix(gcc/SH-Options.html#index-minline-ic_005finvalidate)
+
+misize
+UrlSuffix(gcc/SH-Options.html#index-misize-1)
+
+ml
+UrlSuffix(gcc/SH-Options.html#index-ml)
+
+mnomacsave
+UrlSuffix(gcc/SH-Options.html#index-mnomacsave)
+
+mpadstruct
+UrlSuffix(gcc/SH-Options.html#index-mpadstruct)
+
+mprefergot
+UrlSuffix(gcc/SH-Options.html#index-mprefergot)
+
+mrelax
+UrlSuffix(gcc/SH-Options.html#index-mrelax-7)
+
+mrenesas
+UrlSuffix(gcc/SH-Options.html#index-mrenesas)
+
+mtas
+UrlSuffix(gcc/SH-Options.html#index-mtas)
+
+; skipping UrlSuffix for 'multcost=' due to finding no URLs
+
+musermode
+UrlSuffix(gcc/SH-Options.html#index-musermode)
+
+mpretend-cmove
+UrlSuffix(gcc/SH-Options.html#index-mpretend-cmove)
+
+mfsca
+UrlSuffix(gcc/SH-Options.html#index-mfsca)
+
+mfsrra
+UrlSuffix(gcc/SH-Options.html#index-mfsrra)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
diff --git a/gcc/config/sh/superh.opt.urls b/gcc/config/sh/superh.opt.urls
new file mode 100644
index 000000000000..c098ec12c276
--- /dev/null
+++ b/gcc/config/sh/superh.opt.urls
@@ -0,0 +1,4 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sh/superh.opt and generated HTML
+
+; skipping UrlSuffix for 'mboard=' due to finding no URLs
+
diff --git a/gcc/config/sol2.opt.urls b/gcc/config/sol2.opt.urls
new file mode 100644
index 000000000000..ef64d47d65ee
--- /dev/null
+++ b/gcc/config/sol2.opt.urls
@@ -0,0 +1,21 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sol2.opt and generated HTML
+
+G
+UrlSuffix(gcc/System-V-Options.html#index-G-5)
+
+mclear-hwcap
+UrlSuffix(gcc/Solaris-2-Options.html#index-mclear-hwcap)
+
+mimpure-text
+UrlSuffix(gcc/Solaris-2-Options.html#index-mimpure-text)
+
+; skipping UrlSuffix for 'pthread' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-pthread-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-pthread'
+
+pthreads
+UrlSuffix(gcc/Solaris-2-Options.html#index-pthreads)
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/sparc/long-double-switch.opt.urls b/gcc/config/sparc/long-double-switch.opt.urls
new file mode 100644
index 000000000000..62f5738f756c
--- /dev/null
+++ b/gcc/config/sparc/long-double-switch.opt.urls
@@ -0,0 +1,6 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/long-double-switch.opt and generated HTML
+
+; skipping UrlSuffix for 'mlong-double-128' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-double-64' due to finding no URLs
+
diff --git a/gcc/config/sparc/sparc.opt.urls b/gcc/config/sparc/sparc.opt.urls
new file mode 100644
index 000000000000..79774678984f
--- /dev/null
+++ b/gcc/config/sparc/sparc.opt.urls
@@ -0,0 +1,108 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/sparc/sparc.opt and generated HTML
+
+mfpu
+UrlSuffix(gcc/SPARC-Options.html#index-mfpu-4)
+
+mhard-float
+UrlSuffix(gcc/SPARC-Options.html#index-mhard-float-8)
+
+msoft-float
+UrlSuffix(gcc/SPARC-Options.html#index-msoft-float-13)
+
+mflat
+UrlSuffix(gcc/SPARC-Options.html#index-mflat)
+
+munaligned-doubles
+UrlSuffix(gcc/SPARC-Options.html#index-munaligned-doubles)
+
+mapp-regs
+UrlSuffix(gcc/SPARC-Options.html#index-mapp-regs)
+
+mhard-quad-float
+UrlSuffix(gcc/SPARC-Options.html#index-mhard-quad-float)
+
+msoft-quad-float
+UrlSuffix(gcc/SPARC-Options.html#index-msoft-quad-float)
+
+mlra
+UrlSuffix(gcc/SPARC-Options.html#index-mlra-3)
+
+mv8plus
+UrlSuffix(gcc/SPARC-Options.html#index-mv8plus)
+
+mvis
+UrlSuffix(gcc/SPARC-Options.html#index-mvis)
+
+mvis2
+UrlSuffix(gcc/SPARC-Options.html#index-mvis2)
+
+mvis3
+UrlSuffix(gcc/SPARC-Options.html#index-mvis3)
+
+mvis4
+UrlSuffix(gcc/SPARC-Options.html#index-mvis4)
+
+mvis4b
+UrlSuffix(gcc/SPARC-Options.html#index-mvis4b)
+
+mcbcond
+UrlSuffix(gcc/SPARC-Options.html#index-mcbcond)
+
+mfmaf
+UrlSuffix(gcc/SPARC-Options.html#index-mfmaf)
+
+mfsmuld
+UrlSuffix(gcc/SPARC-Options.html#index-mfsmuld)
+
+mpopc
+UrlSuffix(gcc/SPARC-Options.html#index-mpopc)
+
+msubxc
+UrlSuffix(gcc/SPARC-Options.html#index-msubxc)
+
+m64
+UrlSuffix(gcc/SPARC-Options.html#index-m64-3)
+
+m32
+UrlSuffix(gcc/SPARC-Options.html#index-m32-1)
+
+mstack-bias
+UrlSuffix(gcc/SPARC-Options.html#index-mstack-bias)
+
+mfaster-structs
+UrlSuffix(gcc/SPARC-Options.html#index-mfaster-structs)
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+muser-mode
+UrlSuffix(gcc/SPARC-Options.html#index-muser-mode)
+
+mcpu=
+UrlSuffix(gcc/SPARC-Options.html#index-mcpu-12)
+
+mtune=
+UrlSuffix(gcc/SPARC-Options.html#index-mtune-15)
+
+mcmodel=
+UrlSuffix(gcc/SPARC-Options.html#index-mcmodel-1)
+
+; skipping UrlSuffix for 'mdebug=' due to finding no URLs
+
+mstd-struct-return
+UrlSuffix(gcc/SPARC-Options.html#index-mstd-struct-return)
+
+mfix-at697f
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-at697f)
+
+mfix-ut699
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut699)
+
+mfix-ut700
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-ut700)
+
+mfix-gr712rc
+UrlSuffix(gcc/SPARC-Options.html#index-mfix-gr712rc)
+
+mmemory-model=
+UrlSuffix(gcc/SPARC-Options.html#index-mmemory-model)
+
diff --git a/gcc/config/stormy16/stormy16.opt.urls b/gcc/config/stormy16/stormy16.opt.urls
new file mode 100644
index 000000000000..6f47d4c5c180
--- /dev/null
+++ b/gcc/config/stormy16/stormy16.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/stormy16/stormy16.opt and generated HTML
+
+msim
+UrlSuffix(gcc/Xstormy16-Options.html#index-msim-10)
+
diff --git a/gcc/config/v850/v850.opt.urls b/gcc/config/v850/v850.opt.urls
new file mode 100644
index 000000000000..dc5a83107b3b
--- /dev/null
+++ b/gcc/config/v850/v850.opt.urls
@@ -0,0 +1,60 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/v850/v850.opt and generated HTML
+
+; skipping UrlSuffix for 'mapp-regs' due to finding no URLs
+
+; skipping UrlSuffix for 'mbig-switch' due to finding no URLs
+
+; skipping UrlSuffix for 'mdebug' due to finding no URLs
+
+; skipping UrlSuffix for 'mdisable-callt' due to finding no URLs
+
+; skipping UrlSuffix for 'mep' due to finding no URLs
+
+; skipping UrlSuffix for 'mghs' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-calls' due to finding no URLs
+
+; skipping UrlSuffix for 'mprolog-function' due to finding no URLs
+
+; skipping UrlSuffix for 'msda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mspace' due to finding no URLs
+
+; skipping UrlSuffix for 'mtda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mno-strict-align' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e1' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850es' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2v3' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e3v5' due to finding no URLs
+
+; skipping UrlSuffix for 'mv850e2v4' due to finding no URLs
+
+; skipping UrlSuffix for 'mloop' due to finding no URLs
+
+; skipping UrlSuffix for 'mzda=' due to finding no URLs
+
+; skipping UrlSuffix for 'mrelax' due to finding no URLs
+
+; skipping UrlSuffix for 'mlong-jumps' due to finding no URLs
+
+; skipping UrlSuffix for 'msoft-float' due to finding no URLs
+
+; skipping UrlSuffix for 'mhard-float' due to finding no URLs
+
+; skipping UrlSuffix for 'mrh850-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'mgcc-abi' due to finding no URLs
+
+; skipping UrlSuffix for 'm8byte-align' due to finding no URLs
+
diff --git a/gcc/config/vax/elf.opt.urls b/gcc/config/vax/elf.opt.urls
new file mode 100644
index 000000000000..0903513694b9
--- /dev/null
+++ b/gcc/config/vax/elf.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/elf.opt and generated HTML
+
diff --git a/gcc/config/vax/vax.opt.urls b/gcc/config/vax/vax.opt.urls
new file mode 100644
index 000000000000..c6b1c418b617
--- /dev/null
+++ b/gcc/config/vax/vax.opt.urls
@@ -0,0 +1,10 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vax/vax.opt and generated HTML
+
+; skipping UrlSuffix for 'mg' due to finding no URLs
+
+; skipping UrlSuffix for 'mgnu' due to finding no URLs
+
+; skipping UrlSuffix for 'munix' due to finding no URLs
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
diff --git a/gcc/config/visium/visium.opt.urls b/gcc/config/visium/visium.opt.urls
new file mode 100644
index 000000000000..38ba88dfe612
--- /dev/null
+++ b/gcc/config/visium/visium.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/visium/visium.opt and generated HTML
+
+mdebug
+UrlSuffix(gcc/Visium-Options.html#index-mdebug-2)
+
+msim
+UrlSuffix(gcc/Visium-Options.html#index-msim-9)
+
+mfpu
+UrlSuffix(gcc/Visium-Options.html#index-mfpu-5)
+
+mhard-float
+UrlSuffix(gcc/Visium-Options.html#index-mhard-float-10)
+
+msoft-float
+UrlSuffix(gcc/Visium-Options.html#index-msoft-float-15)
+
+mcpu=
+UrlSuffix(gcc/Visium-Options.html#index-mcpu-13)
+
+mtune=
+UrlSuffix(gcc/Visium-Options.html#index-mtune-16)
+
+msv-mode
+UrlSuffix(gcc/Visium-Options.html#index-msv-mode)
+
+muser-mode
+UrlSuffix(gcc/Visium-Options.html#index-muser-mode-1)
+
diff --git a/gcc/config/vms/vms.opt.urls b/gcc/config/vms/vms.opt.urls
new file mode 100644
index 000000000000..177b281cc774
--- /dev/null
+++ b/gcc/config/vms/vms.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vms/vms.opt and generated HTML
+
+mmalloc64
+UrlSuffix(gcc/VMS-Options.html#index-mmalloc64)
+
+mvms-return-codes
+UrlSuffix(gcc/VMS-Options.html#index-mvms-return-codes)
+
diff --git a/gcc/config/vxworks-smp.opt.urls b/gcc/config/vxworks-smp.opt.urls
new file mode 100644
index 000000000000..0a91011000f8
--- /dev/null
+++ b/gcc/config/vxworks-smp.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks-smp.opt and generated HTML
+
+msmp
+UrlSuffix(gcc/VxWorks-Options.html#index-msmp)
+
diff --git a/gcc/config/vxworks.opt.urls b/gcc/config/vxworks.opt.urls
new file mode 100644
index 000000000000..52888d0d91de
--- /dev/null
+++ b/gcc/config/vxworks.opt.urls
@@ -0,0 +1,20 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/vxworks.opt and generated HTML
+
+Bdynamic
+UrlSuffix(gcc/VxWorks-Options.html#index-Bdynamic)
+
+Bstatic
+UrlSuffix(gcc/VxWorks-Options.html#index-Bstatic)
+
+Xbind-lazy
+UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-lazy)
+
+Xbind-now
+UrlSuffix(gcc/VxWorks-Options.html#index-Xbind-now)
+
+mrtp
+UrlSuffix(gcc/VxWorks-Options.html#index-mrtp)
+
+non-static
+UrlSuffix(gcc/VxWorks-Options.html#index-non-static)
+
diff --git a/gcc/config/xtensa/elf.opt.urls b/gcc/config/xtensa/elf.opt.urls
new file mode 100644
index 000000000000..6774adadbf7a
--- /dev/null
+++ b/gcc/config/xtensa/elf.opt.urls
@@ -0,0 +1,5 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/elf.opt and generated HTML
+
+rdynamic
+UrlSuffix(gcc/Link-Options.html#index-rdynamic)
+
diff --git a/gcc/config/xtensa/uclinux.opt.urls b/gcc/config/xtensa/uclinux.opt.urls
new file mode 100644
index 000000000000..bd69ce56d4c6
--- /dev/null
+++ b/gcc/config/xtensa/uclinux.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/uclinux.opt and generated HTML
+
diff --git a/gcc/config/xtensa/xtensa.opt.urls b/gcc/config/xtensa/xtensa.opt.urls
new file mode 100644
index 000000000000..146db23d1e30
--- /dev/null
+++ b/gcc/config/xtensa/xtensa.opt.urls
@@ -0,0 +1,37 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/config/xtensa/xtensa.opt and generated HTML
+
+mconst16
+UrlSuffix(gcc/Xtensa-Options.html#index-mconst16)
+
+mforce-no-pic
+UrlSuffix(gcc/Xtensa-Options.html#index-mforce-no-pic)
+
+mlongcalls
+UrlSuffix(gcc/Xtensa-Options.html#index-mlongcalls)
+
+mextra-l32r-costs=
+UrlSuffix(gcc/Xtensa-Options.html#index-mextra-l32r-costs)
+
+; skipping UrlSuffix for 'mlra' due to finding no URLs
+
+mtarget-align
+UrlSuffix(gcc/Xtensa-Options.html#index-mtarget-align)
+
+mtext-section-literals
+UrlSuffix(gcc/Xtensa-Options.html#index-mtext-section-literals)
+
+mauto-litpools
+UrlSuffix(gcc/Xtensa-Options.html#index-mauto-litpools)
+
+mserialize-volatile
+UrlSuffix(gcc/Xtensa-Options.html#index-mserialize-volatile)
+
+mabi=call0
+UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dcall0)
+
+mabi=windowed
+UrlSuffix(gcc/Xtensa-Options.html#index-mabi_003dwindowed)
+
+mstrict-align
+UrlSuffix(gcc/Xtensa-Options.html#index-mstrict-align-5)
+
diff --git a/gcc/d/lang.opt.urls b/gcc/d/lang.opt.urls
new file mode 100644
index 000000000000..09b2a261e254
--- /dev/null
+++ b/gcc/d/lang.opt.urls
@@ -0,0 +1,223 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/d/lang.opt and generated HTML
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+Hd
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Hd)
+
+Hf
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Hf)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+J
+LangUrlSuffix_D(gdc/Directory-Options.html#index-J)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+Waddress
+UrlSuffix(gcc/Warning-Options.html#index-Waddress)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Walloca
+UrlSuffix(gcc/Warning-Options.html#index-Walloca) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca)
+
+Walloca-larger-than=
+UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
+
+Wbuiltin-declaration-mismatch
+UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
+
+Wcast-result
+LangUrlSuffix_D(gdc/Warnings.html#index-Wcast-result)
+
+Wdeprecated
+UrlSuffix(gcc/Warning-Options.html#index-Wdeprecated) LangUrlSuffix_D(gdc/Warnings.html#index-Wdeprecated)
+
+Werror
+UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.html#index-Werror)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wmismatched-special-enum
+LangUrlSuffix_D(gdc/Warnings.html#index-Wmismatched-special-enum)
+
+Wspeculative
+LangUrlSuffix_D(gdc/Warnings.html#index-Wno-speculative)
+
+Wunknown-pragmas
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
+
+Wvarargs
+UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-varargs)
+
+X
+LangUrlSuffix_D(gdc/Code-Generation.html#index-X)
+
+Xf
+LangUrlSuffix_D(gdc/Code-Generation.html#index-Xf)
+
+debuglib=
+LangUrlSuffix_D(gdc/Linking.html#index-debuglib_003d)
+
+defaultlib=
+LangUrlSuffix_D(gdc/Linking.html#index-defaultlib_003d)
+
+fall-instantiations
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fall-instantiations)
+
+fassert
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fassert)
+
+fbounds-check
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+fbounds-check=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fbounds-check)
+
+; skipping UrlSuffix for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-fbuiltin'
+;   duplicate: 'gcc/Other-Builtins.html#index-fno-builtin-3'
+;   duplicate: 'gcc/Warning-Options.html#index-fno-builtin-1'
+; skipping LangUrlSuffix_D for 'fbuiltin' due to multiple URLs:
+;   duplicate: 'gdc/Other-Builtins.html#index-fno-builtin-1'
+;   duplicate: 'gdc/Runtime-Options.html#index-fbuiltin'
+
+fcheckaction=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fcheckaction)
+
+fdebug
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdebug)
+
+fdebug=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdebug)
+
+fdoc
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc)
+
+fdoc-dir=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-dir)
+
+fdoc-file=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-file)
+
+fdoc-inc=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fdoc-inc)
+
+fdruntime
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fdruntime)
+
+fdump-d-original
+LangUrlSuffix_D(gdc/Developer-Options.html#index-fdump-d-original)
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fextern-std=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fextern-std)
+
+fignore-unknown-pragmas
+LangUrlSuffix_D(gdc/Warnings.html#index-fignore-unknown-pragmas)
+
+finvariants
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-finvariants)
+
+fmain
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fmain)
+
+fmodule-file=
+LangUrlSuffix_D(gdc/Directory-Options.html#index-fmodule-file)
+
+fmoduleinfo
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fmoduleinfo)
+
+fonly=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fonly)
+
+fpostconditions
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-postconditions)
+
+fpreconditions
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-preconditions)
+
+frelease
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-release)
+
+frtti
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-fno-rtti) LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-rtti)
+
+fsave-mixins=
+LangUrlSuffix_D(gdc/Code-Generation.html#index-fsave-mixins)
+
+fswitch-errors
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-switch-errors)
+
+funittest
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-unittest)
+
+fversion=
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+fweak-templates
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fno-weak-templates)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+nophoboslib
+LangUrlSuffix_D(gdc/Linking.html#index-nophoboslib)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+static-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-static-libphobos)
+
+shared-libphobos
+LangUrlSuffix_D(gdc/Linking.html#index-shared-libphobos)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
diff --git a/gcc/fortran/lang.opt.urls b/gcc/fortran/lang.opt.urls
new file mode 100644
index 000000000000..e335b42e357b
--- /dev/null
+++ b/gcc/fortran/lang.opt.urls
@@ -0,0 +1,167 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/fortran/lang.opt and generated HTML
+
+A
+UrlSuffix(gcc/Preprocessor-Options.html#index-A)
+
+C
+UrlSuffix(gcc/Preprocessor-Options.html#index-C)
+
+CC
+UrlSuffix(gcc/Preprocessor-Options.html#index-CC)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+H
+UrlSuffix(gcc/Preprocessor-Options.html#index-H) LangUrlSuffix_D(gdc/Code-Generation.html#index-H)
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+J
+LangUrlSuffix_D(gdc/Directory-Options.html#index-J)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+U
+UrlSuffix(gcc/Preprocessor-Options.html#index-U)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wdate-time
+UrlSuffix(gcc/Warning-Options.html#index-Wdate-time)
+
+Wconversion
+UrlSuffix(gcc/Warning-Options.html#index-Wconversion)
+
+Wextra
+UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
+
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
+
+Wmissing-include-dirs
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-include-dirs)
+
+Wopenacc-parallelism
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openacc-parallelism)
+
+Wopenmp
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp)
+
+Wopenmp-simd
+UrlSuffix(gcc/Warning-Options.html#index-Wno-openmp-simd)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wuninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
+
+Wunused
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
+
+; skipping UrlSuffix for 'nocpp' due to finding no URLs
+
+; skipping UrlSuffix for 'd' due to multiple URLs:
+;   duplicate: 'gcc/Developer-Options.html#index-d-1'
+;   duplicate: 'gcc/Preprocessor-Options.html#index-d'
+
+ff2c
+LangUrlSuffix_Fortran(gfortran/Code-Gen-Options.html#index-ff2c)
+
+fopenacc
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenacc)
+
+fopenacc-dim=
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenacc-dim)
+
+fopenmp
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp)
+
+fopenmp-simd
+UrlSuffix(gcc/C-Dialect-Options.html#index-fopenmp-simd) LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-simd)
+
+fopenmp-allocators
+LangUrlSuffix_Fortran(gfortran/Fortran-Dialect-Options.html#index-fopenmp-allocators)
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+; skipping UrlSuffix for 'fshort-enums' due to multiple URLs:
+;   duplicate: 'gcc/Code-Gen-Options.html#index-fshort-enums'
+;   duplicate: 'gcc/Non-bugs.html#index-fshort-enums-3'
+;   duplicate: 'gcc/Structures-unions-enumerations-and-bit-fields-implementation.html#index-fshort-enums-1'
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+nostdinc
+UrlSuffix(gcc/Directory-Options.html#index-nostdinc) LangUrlSuffix_D(gdc/Directory-Options.html#index-nostdinc)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
+undef
+UrlSuffix(gcc/Preprocessor-Options.html#index-undef)
+
+v
+UrlSuffix(gcc/Overall-Options.html#index-v) LangUrlSuffix_D(gdc/Developer-Options.html#index-v)
+
diff --git a/gcc/go/lang.opt.urls b/gcc/go/lang.opt.urls
new file mode 100644
index 000000000000..34d3154f2c50
--- /dev/null
+++ b/gcc/go/lang.opt.urls
@@ -0,0 +1,17 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/go/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
diff --git a/gcc/lto/lang.opt.urls b/gcc/lto/lang.opt.urls
new file mode 100644
index 000000000000..f7509c8211ec
--- /dev/null
+++ b/gcc/lto/lang.opt.urls
@@ -0,0 +1,8 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/lto/lang.opt and generated HTML
+
+flinker-output=
+UrlSuffix(gcc/Link-Options.html#index-flinker-output)
+
+help
+UrlSuffix(gcc/Overall-Options.html#index-help)
+
diff --git a/gcc/m2/lang.opt.urls b/gcc/m2/lang.opt.urls
new file mode 100644
index 000000000000..e9028f9656fa
--- /dev/null
+++ b/gcc/m2/lang.opt.urls
@@ -0,0 +1,118 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/m2/lang.opt and generated HTML
+
+fversion
+LangUrlSuffix_D(gdc/Runtime-Options.html#index-fversion)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wpedantic
+UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
+
+Wreturn-type
+UrlSuffix(gcc/Warning-Options.html#index-Wno-return-type)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-parameter
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-parameter)
+
+B
+UrlSuffix(gcc/Directory-Options.html#index-B) LangUrlSuffix_D(gdc/Directory-Options.html#index-B)
+
+D
+UrlSuffix(gcc/Preprocessor-Options.html#index-D-1)
+
+; skipping UrlSuffix for 'E' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-E-1'
+;   duplicate: 'gcc/Overall-Options.html#index-E'
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+M
+UrlSuffix(gcc/Preprocessor-Options.html#index-M) LangUrlSuffix_D(gdc/Code-Generation.html#index-M)
+
+MD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MD)
+
+MF
+UrlSuffix(gcc/Preprocessor-Options.html#index-MF) LangUrlSuffix_D(gdc/Code-Generation.html#index-MF)
+
+MG
+UrlSuffix(gcc/Preprocessor-Options.html#index-MG) LangUrlSuffix_D(gdc/Code-Generation.html#index-MG)
+
+MM
+UrlSuffix(gcc/Preprocessor-Options.html#index-MM) LangUrlSuffix_D(gdc/Code-Generation.html#index-MM)
+
+MMD
+UrlSuffix(gcc/Preprocessor-Options.html#index-MMD) LangUrlSuffix_D(gdc/Code-Generation.html#index-MMD)
+
+Mno-modules
+UrlSuffix(gcc/Preprocessor-Options.html#index-Mno-modules)
+
+MP
+UrlSuffix(gcc/Preprocessor-Options.html#index-MP) LangUrlSuffix_D(gdc/Code-Generation.html#index-MP)
+
+MQ
+UrlSuffix(gcc/Preprocessor-Options.html#index-MQ) LangUrlSuffix_D(gdc/Code-Generation.html#index-MQ)
+
+MT
+UrlSuffix(gcc/Preprocessor-Options.html#index-MT) LangUrlSuffix_D(gdc/Code-Generation.html#index-MT)
+
+P
+UrlSuffix(gcc/Preprocessor-Options.html#index-P)
+
+; skipping UrlSuffix for 'ansi' due to multiple URLs:
+;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
+;   duplicate: 'gcc/Non-bugs.html#index-ansi-3'
+;   duplicate: 'gcc/Other-Builtins.html#index-ansi-2'
+;   duplicate: 'gcc/Standards.html#index-ansi'
+
+; skipping UrlSuffix for 'c' due to multiple URLs:
+;   duplicate: 'gcc/Link-Options.html#index-c-1'
+;   duplicate: 'gcc/Overall-Options.html#index-c'
+
+fexceptions
+UrlSuffix(gcc/Code-Gen-Options.html#index-fexceptions)
+
+fpreprocessed
+UrlSuffix(gcc/Preprocessor-Options.html#index-fpreprocessed)
+
+fworking-directory
+UrlSuffix(gcc/Preprocessor-Options.html#index-fno-working-directory)
+
+iprefix
+UrlSuffix(gcc/Directory-Options.html#index-iprefix) LangUrlSuffix_D(gdc/Directory-Options.html#index-iprefix)
+
+iquote
+UrlSuffix(gcc/Directory-Options.html#index-iquote)
+
+isysroot
+UrlSuffix(gcc/Directory-Options.html#index-isysroot)
+
+isystem
+UrlSuffix(gcc/Directory-Options.html#index-isystem)
+
+idirafter
+UrlSuffix(gcc/Directory-Options.html#index-idirafter)
+
+imultilib
+UrlSuffix(gcc/Directory-Options.html#index-imultilib) LangUrlSuffix_D(gdc/Directory-Options.html#index-imultilib)
+
+save-temps
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+save-temps=
+UrlSuffix(gcc/Developer-Options.html#index-save-temps)
+
+traditional-cpp
+UrlSuffix(gcc/Preprocessor-Options.html#index-traditional-cpp)
+
diff --git a/gcc/params.opt.urls b/gcc/params.opt.urls
new file mode 100644
index 000000000000..e76310c6ac04
--- /dev/null
+++ b/gcc/params.opt.urls
@@ -0,0 +1,2 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/params.opt and generated HTML
+
diff --git a/gcc/rust/lang.opt.urls b/gcc/rust/lang.opt.urls
new file mode 100644
index 000000000000..9cf8987e7344
--- /dev/null
+++ b/gcc/rust/lang.opt.urls
@@ -0,0 +1,29 @@
+; Autogenerated by regenerate-opt-urls.py from gcc/rust/lang.opt and generated HTML
+
+I
+UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I)
+
+L
+UrlSuffix(gcc/Directory-Options.html#index-L) LangUrlSuffix_D(gdc/Directory-Options.html#index-L)
+
+; skipping UrlSuffix for 'Wall' due to multiple URLs:
+;   duplicate: 'gcc/Standard-Libraries.html#index-Wall-1'
+;   duplicate: 'gcc/Warning-Options.html#index-Wall'
+Wall
+LangUrlSuffix_D(gdc/Warnings.html#index-Wall)
+
+Wunused-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
+
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-result
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
+
+o
+UrlSuffix(gcc/Overall-Options.html#index-o)
+
-- 
2.26.3


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

* Re: [PATCH 2/3] Add generated .opt.urls files
  2023-11-13 16:02       ` Marc Poulhiès
@ 2023-12-19 14:47         ` Marc Poulhiès
  0 siblings, 0 replies; 47+ messages in thread
From: Marc Poulhiès @ 2023-12-19 14:47 UTC (permalink / raw)
  To: David Malcolm; +Cc: gcc-patches


Marc Poulhiès <poulhies@adacore.com> writes:
>> Perhaps this script could also deal directly with Sphinx-generated
>> HTML?
>
> I investigated a bit... The Ada part doesn't handle the html target, so
> it's expected you don't have anything to parse. The online docs are
> generated using a different script, not using these makefiles.
>
> I'll see if I can fix the html target for ada, so that your script
> doesn't need to be changed :)
>
>>>  We are generating the texinfo files
>>> from sphinx, so maybe we could adjust the script to also match what
>>> the
>>> sphinx generator produces?
>>
>> It *might* be as simple as pointing it at the option index for the
>> generated HTML for Ada.
>
> That's worth a try, when/if I can fix the HTML target.

FYI, I've committed a simple patch for having the HTML documentation
correctly generated when invoking "make html" (r14-6712) so maybe you
can also enable it for the Ada frontend.

But that will probably not produce any useful output as most compiler
options for GNAT are handled in the frontend (no .opt and the actual
messages are emitted without using gcc's mechanism).

Marc

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

* Re: [PATCH 1/4; v3] options: add gcc/regenerate-opt-urls.py
  2023-12-14 15:01                       ` [PATCH 1/4; v3] options: add gcc/regenerate-opt-urls.py David Malcolm
@ 2023-12-20  0:24                         ` Joseph Myers
  0 siblings, 0 replies; 47+ messages in thread
From: Joseph Myers @ 2023-12-20  0:24 UTC (permalink / raw)
  To: David Malcolm; +Cc: Mark Wielaard, Tobias Burnus, gcc-patches

On Thu, 14 Dec 2023, David Malcolm wrote:

> diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
> index 26a7e9c35070..9a394b3e2c77 100644
> --- a/gcc/doc/sourcebuild.texi
> +++ b/gcc/doc/sourcebuild.texi
> @@ -813,6 +813,10 @@ options supported by this target (@pxref{Run-time Target, , Run-time
>  Target Specification}).  This means both entries in the summary table
>  of options and details of the individual options.
>  @item
> +An entry in @file{gcc/regenerate-opt-urls.py}'s TARGET_SPECIFIC_PAGES
> +dictionary mapping from target-specific HTML documentation pages
> +to the target specific source directory.

There should probably also be something under Front End to indicate when 
anything needs to be done (based on a front end having its own option 
index? one with options also present in other manuals?), outside the front 
end's own directory, for that front end's option URLs.

> +    def add_entry(self, matched_text, url_suffix, language, verbose=False):
> +        # TODO: use language

This TODO seems out of date.

> +        #print(f'{url_suffix=} {index_text=}')

Various commented-out or "if 0" debugging code like this should probably 
be removed (or made into an actual runtime conditional if desired).

-- 
Joseph S. Myers
joseph@codesourcery.com

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

* Re: [PATCH 0/4] v3 of: Option handling: add documentation URLs
  2023-12-14 15:01                     ` [PATCH 0/4] v3 of: " David Malcolm
                                         ` (4 preceding siblings ...)
  2023-12-15  0:59                       ` [PATCH 0/4] v3 of: Option handling: add documentation URLs Mark Wielaard
@ 2023-12-20  0:28                       ` Joseph Myers
  5 siblings, 0 replies; 47+ messages in thread
From: Joseph Myers @ 2023-12-20  0:28 UTC (permalink / raw)
  To: David Malcolm; +Cc: Mark Wielaard, Tobias Burnus, gcc-patches

On Thu, 14 Dec 2023, David Malcolm wrote:

> Are these OK for trunk, assuming I followup with adding CI for this?
> (that said, I disappear for the rest of 2023 at the end of this week, so
> I'd work on the CI in early January)

Patches 2 (updated at the time of commit to reflect the latest options 
then in the source), 3 and 4 are OK once patch 1 is ready, unless anyone 
objects within the next week.

-- 
Joseph S. Myers
joseph@codesourcery.com

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

* CI for "Option handling: add documentation URLs"
  2023-12-15  0:59                       ` [PATCH 0/4] v3 of: Option handling: add documentation URLs Mark Wielaard
  2023-12-15 14:47                         ` David Malcolm
@ 2024-01-04 14:57                         ` David Malcolm
  2024-02-18 22:58                           ` Mark Wielaard
  1 sibling, 1 reply; 47+ messages in thread
From: David Malcolm @ 2024-01-04 14:57 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: Joseph Myers, Tobias Burnus, gcc-patches, buildbot

On Fri, 2023-12-15 at 01:59 +0100, Mark Wielaard wrote:
> Hi David,
> 
> On Thu, Dec 14, 2023 at 10:01:39AM -0500, David Malcolm wrote:
> > > Once your patch is in please feel free to sent an email to
> > > buildbot@sourceware.org
> > > https://sourceware.org/mailman/listinfo/buildbot
> > > And we'll add the above build steps and update the autotools
> > > Containerfile to include the fortran (gfortran?) and d (gdc?)
> > > build
> > > dependencies.
> > 
> > Joseph: it seems that we have a way to add CI for this.
> > 
> > I refreshed the patches and successfully bootstrapped & regrtested
> > them
> > on x86_64-pc-linux-gnu; here's the v3 version of them.
> > 
> > Are these OK for trunk, assuming I followup with adding CI for
> > this?
> > (that said, I disappear for the rest of 2023 at the end of this
> > week, so
> > I'd work on the CI in early January)
> 
> I will be around next week to fixup any CI issues.
> But once you commit this we can immediate activate the check.
> 
> I have attached a patch for the gcc-autoregen builder to also do
> regenerate-opt-urls. Since it is a --disable-bootstrap build and uses
> ccache it should take just a few minutes. So can be done on every
> commit.
> 
> Note that with you patch applied to master it does flag and generate
> the attached diff (I assume that is expected).

Hi Mark

I've pushed the .opt.urls patch kit to gcc trunk [1], so hopefully the
CI check you wrote can go live now.

Dave

[1], specifically, as these four commits:

  options: add gcc/regenerate-opt-urls.py:
    r14-6920-g9e49746da303b8
  Add generated .opt.urls files:
    r14-6921-g5bb18475a10d05
  opts: add logic to generate options-urls.cc:
    r14-6922-g6ecc1e32353e33
  options: wire up options-urls.cc into gcc_urlifier:
    r14-6923-g4ded42c2c5a5c9


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

* Re: CI for "Option handling: add documentation URLs"
  2024-01-04 14:57                         ` CI for "Option handling: add documentation URLs" David Malcolm
@ 2024-02-18 22:58                           ` Mark Wielaard
  2024-02-19 11:38                             ` Mark Wielaard
  2024-02-22  3:57                             ` YunQiang Su
  0 siblings, 2 replies; 47+ messages in thread
From: Mark Wielaard @ 2024-02-18 22:58 UTC (permalink / raw)
  To: David Malcolm; +Cc: Joseph Myers, Tobias Burnus, gcc-patches, buildbot

Hi David,

On Thu, Jan 04, 2024 at 09:57:09AM -0500, David Malcolm wrote:
> I've pushed the .opt.urls patch kit to gcc trunk [1], so hopefully the
> CI check you wrote can go live now.

And then I was on vacation myself and forgot. I am sorry.

So, I did try the regenerate-opt-urls locally, and it did generate the
attached diff. Which seems to show we really need this automated.

Going over the diff. The -Winfinite-recursion in rust does indeed seem
new.  As do the -mapx-inline-asm-use-gpr32 and mevex512 for i386.  And
the avr options -mskip-bug, -mflmap and mrodata-in-ram.  The change in
common.opt.urls for -Wuse-after-free comes from it being moved from
c++ to the c-family. The changes in mips.opt.urls seem to come from
commit 46df1369 "doc/invoke: Remove duplicate explicit-relocs entry of
MIPS".

The changes in c.opt.urls seem mostly reordering. The sorting makes
more sense after the diff imho. And must have come from commit
4666cbde5 "Sort warning options in c-family/c.opt".

Also the documentation for -Warray-parameter was fixed.

So I think the regenerate-opt-urls check does work as intended. So
lets automate it, because it looks like nobody regenerated the
url.opts after updating the documentation.

But we should first apply this diff. Could you double check it is
sane/correct?

Thanks,

Mark

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

* Re: CI for "Option handling: add documentation URLs"
  2024-02-18 22:58                           ` Mark Wielaard
@ 2024-02-19 11:38                             ` Mark Wielaard
  2024-02-22  3:57                             ` YunQiang Su
  1 sibling, 0 replies; 47+ messages in thread
From: Mark Wielaard @ 2024-02-19 11:38 UTC (permalink / raw)
  To: David Malcolm; +Cc: Joseph Myers, Tobias Burnus, gcc-patches, buildbot

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

On Sun, 2024-02-18 at 23:58 +0100, Mark Wielaard wrote:
> So I think the regenerate-opt-urls check does work as intended. So
> lets automate it, because it looks like nobody regenerated the
> url.opts after updating the documentation.
> 
> But we should first apply this diff. Could you double check it is
> sane/correct?

And then I forgot to attach the diff. Attached now.
Hopefully it is identical for you after doing
  make html && cd gcc && make regenerate-opt-urls
(It is for me having now done it on a debian and fedora x86_64 setup.)

Cheers,

Mark

[-- Attachment #2: regenerate-opt-urls.diff --]
[-- Type: text/x-patch, Size: 23985 bytes --]

diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
index 5365c8e2bc5..9f97dc61a77 100644
--- a/gcc/c-family/c.opt.urls
+++ b/gcc/c-family/c.opt.urls
@@ -88,6 +88,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wabsolute-value)
 Waddress
 UrlSuffix(gcc/Warning-Options.html#index-Waddress)
 
+Waddress-of-packed-member
+UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
+
 Waligned-new
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
 
@@ -115,6 +118,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Walloc-zero)
 Walloca-larger-than=
 UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
 
+Warith-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
+
 Warray-bounds=
 UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
 
@@ -122,13 +128,10 @@ Warray-compare
 UrlSuffix(gcc/Warning-Options.html#index-Warray-compare)
 
 Warray-parameter
-UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+UrlSuffix(gcc/Warning-Options.html#index-Warray-parameter)
 
 Warray-parameter=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
-
-Wzero-length-bounds
-UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
+UrlSuffix(gcc/Warning-Options.html#index-Warray-parameter)
 
 Wassign-intercept
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wassign-intercept)
@@ -148,9 +151,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wbool-compare)
 Wbool-operation
 UrlSuffix(gcc/Warning-Options.html#index-Wbool-operation)
 
-Wframe-address
-UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
-
 Wbuiltin-declaration-mismatch
 UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
 
@@ -217,6 +217,12 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
 Wchar-subscripts
 UrlSuffix(gcc/Warning-Options.html#index-Wchar-subscripts)
 
+Wclass-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
+
+Wclass-memaccess
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
+
 Wclobbered
 UrlSuffix(gcc/Warning-Options.html#index-Wclobbered)
 
@@ -298,6 +304,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-qualifiers)
 Wdiv-by-zero
 UrlSuffix(gcc/Warning-Options.html#index-Wdiv-by-zero)
 
+Wdouble-promotion
+UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
+
+Wduplicate-decl-specifier
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
+
 Wduplicated-branches
 UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-branches)
 
@@ -307,6 +319,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-cond)
 Weffc++
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Weffc_002b_002b)
 
+Welaborated-enum-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
+
 Wempty-body
 UrlSuffix(gcc/Warning-Options.html#index-Wempty-body)
 
@@ -328,12 +343,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.ht
 Wexceptions
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wexceptions)
 
+Wexpansion-to-defined
+UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
+
 Wextra
 UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
 
 Wextra-semi
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wextra-semi)
 
+Wflex-array-member-not-at-end
+UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+
 Wfloat-conversion
 UrlSuffix(gcc/Warning-Options.html#index-Wfloat-conversion)
 
@@ -355,6 +376,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-nonliteral)
 Wformat-overflow
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
 
+Wformat-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
 Wformat-security
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-security)
 
@@ -364,6 +388,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-signedness)
 Wformat-truncation
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
 
+Wformat-truncation=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
 Wformat-y2k
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-y2k)
 
@@ -373,14 +400,8 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-zero-length)
 Wformat=
 UrlSuffix(gcc/Warning-Options.html#index-Wformat)
 
-Wformat-overflow=
-UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
-
-Wformat-truncation=
-UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
-
-Wflex-array-member-not-at-end
-UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+Wframe-address
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
 
 Wif-not-aligned
 UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned)
@@ -391,6 +412,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Wignored-qualifiers)
 Wignored-attributes
 UrlSuffix(gcc/Warning-Options.html#index-Wignored-attributes)
 
+Wimplicit
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wimplicit-function-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
+
+Wimplicit-int
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
+
 Winaccessible-base
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winaccessible-base)
 
@@ -400,9 +433,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wincompatible-pointer-types)
 Winfinite-recursion
 UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
 
-Waddress-of-packed-member
-UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
-
 Winit-self
 UrlSuffix(gcc/Warning-Options.html#index-Winit-self)
 
@@ -412,24 +442,6 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winit-list-lifetime)
 Winterference-size
 UrlSuffix(gcc/Warning-Options.html#index-Winterference-size)
 
-Wimplicit
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
-
-Wimplicit-fallthrough=
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
-
-Wdouble-promotion
-UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
-
-Wexpansion-to-defined
-UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
-
-Wimplicit-function-declaration
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
-
-Wimplicit-int
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
-
 Winherited-variadic-ctor
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winherited-variadic-ctor)
 
@@ -460,12 +472,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wjump-misses-init)
 Wliteral-suffix
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wliteral-suffix)
 
-Wlogical-op
-UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
-
 Wlogical-not-parentheses
 UrlSuffix(gcc/Warning-Options.html#index-Wlogical-not-parentheses)
 
+Wlogical-op
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
+
 Wlong-long
 UrlSuffix(gcc/Warning-Options.html#index-Wlong-long)
 
@@ -475,12 +487,15 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmain)
 Wmain
 UrlSuffix(gcc/Warning-Options.html#index-Wmain)
 
-Wmemset-transposed-args
-UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
 
 Wmemset-elt-size
 UrlSuffix(gcc/Warning-Options.html#index-Wmemset-elt-size)
 
+Wmemset-transposed-args
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+
 Wmisleading-indentation
 UrlSuffix(gcc/Warning-Options.html#index-Wmisleading-indentation)
 
@@ -493,6 +508,9 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete)
 Wmismatched-tags
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-tags)
 
+Wmissing-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
+
 Wmissing-braces
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-braces)
 
@@ -502,93 +520,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmissing-declarations)
 Wmissing-field-initializers
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-field-initializers)
 
-Wmissing-requires
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
-
-Wmissing-template-keyword
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
-
-Wmultistatement-macros
-UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
-
-Wmultiple-inheritance
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
-
-Wnamespaces
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
-
-Wnrvo
-UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
-
-Wpacked-not-aligned
-UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
-
-Wrange-loop-construct
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
-
-Wredundant-tags
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
-
-Wsized-deallocation
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
-
-Wsizeof-pointer-div
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
-
-Wsizeof-array-div
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
-
-Wsizeof-pointer-memaccess
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
-
-Wsizeof-array-argument
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
-
-Wstring-compare
-UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
-
-Wstringop-overflow
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
-
-Wstringop-overflow=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
-
-Wstringop-overread
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
-
-Wstringop-truncation
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
-
-Wstrict-flex-arrays
-UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
-
-Wsuggest-attribute=format
-UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
-
-Wsuggest-override
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
-
-Wswitch
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
-
-Wswitch-default
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
-
-Wswitch-enum
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
-
-Wswitch-bool
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
-
-Wswitch-outside-range
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
-
-Wtemplates
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
-
-Wmissing-attributes
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
-
 Wmissing-format-attribute
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-format-attribute)
 
@@ -601,12 +532,27 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmissing-parameter-type)
 Wmissing-prototypes
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-prototypes)
 
+Wmissing-requires
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
+
+Wmissing-template-keyword
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
+
 Wmissing-variable-declarations
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-variable-declarations)
 
 Wmultichar
 UrlSuffix(gcc/Warning-Options.html#index-Wmultichar)
 
+Wmultiple-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
+
+Wmultistatement-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
+
+Wnamespaces
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
+
 Wnarrowing
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnarrowing)
 
@@ -622,12 +568,6 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept-type)
 Wnon-template-friend
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-template-friend)
 
-Wclass-conversion
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
-
-Wclass-memaccess
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
-
 Wnon-virtual-dtor
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-virtual-dtor)
 
@@ -682,9 +622,15 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init)
 Woverride-init-side-effects
 UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init-side-effects)
 
+Wnrvo
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
+
 Wpacked-bitfield-compat
 UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-bitfield-compat)
 
+Wpacked-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
+
 Wparentheses
 UrlSuffix(gcc/Warning-Options.html#index-Wno-parentheses)
 
@@ -694,6 +640,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
 Wpessimizing-move
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-pessimizing-move)
 
+Wplacement-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wplacement-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
 ; skipping UrlSuffix for 'Wpmf-conversions' due to multiple URLs:
 ;   duplicate: 'gcc/Bound-member-functions.html#index-Wno-pmf-conversions-1'
 ;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-Wno-pmf-conversions'
@@ -723,11 +675,8 @@ UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-W
 Wprotocol
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-protocol)
 
-Wplacement-new
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
-
-Wplacement-new=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+Wrange-loop-construct
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
 
 Wredundant-decls
 UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
@@ -735,12 +684,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
 Wredundant-move
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-move)
 
+Wredundant-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
+
 Wregister
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register)
 
 Wreorder
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder)
 
+Wrestrict
+UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+
 Wreturn-mismatch
 UrlSuffix(gcc/Warning-Options.html#index-Wno-return-mismatch)
 
@@ -777,9 +732,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-overflow)
 Wshift-negative-value
 UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-negative-value)
 
-Warith-conversion
-UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
-
 Wsign-compare
 UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
 
@@ -792,30 +744,93 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-conversion)
 Wsign-promo
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sign-promo)
 
-Wstrict-null-sentinel
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+Wsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
 
-Wstrict-prototypes
-UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+Wsizeof-array-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
+
+Wsizeof-array-argument
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
+
+Wsizeof-pointer-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
+
+Wsizeof-pointer-memaccess
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
 
 Wstrict-aliasing=
 UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
 
+Wstrict-flex-arrays
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
+
+Wstrict-null-sentinel
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+
 Wstrict-overflow=
 UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
 
+Wstrict-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+
 Wstrict-selector-match
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-strict-selector-match)
 
+Wstring-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
+
+Wstringop-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overread
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
+
+Wstringop-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
+
+Wsubobject-linkage
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
+
+Wsuggest-attribute=format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
+
+Wsuggest-override
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
+
+Wswitch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
+
+Wswitch-default
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
+
+Wswitch-enum
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
+
+Wswitch-bool
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
+
+Wswitch-outside-range
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
+
 Wsync-nand
 UrlSuffix(gcc/Warning-Options.html#index-Wno-sync-nand)
 
 Wsystem-headers
 UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
 
+Wtemplates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
+
 Wtautological-compare
 UrlSuffix(gcc/Warning-Options.html#index-Wno-tautological-compare)
 
+Wtemplate-id-cdtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-template-id-cdtor)
+
 Wterminate
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-terminate)
 
@@ -840,9 +855,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unicode)
 Wuninitialized
 UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
 
-Wmaybe-uninitialized
-UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
-
 Wunknown-pragmas
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
 
@@ -852,6 +864,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unsuffixed-float-constants)
 Wunused
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
 
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
 Wunused-local-typedefs
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-local-typedefs)
 
@@ -864,14 +882,11 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
 Wunused-variable
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
 
-Wunused-const-variable
-UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
-
-Wunused-const-variable=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
-
 Wuse-after-free=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
+
+Wuseless-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wno-useless-cast)
 
 Wvariadic-macros
 UrlSuffix(gcc/Warning-Options.html#index-Wno-variadic-macros)
@@ -882,6 +897,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnin
 Wvexing-parse
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-vexing-parse)
 
+Wvirtual-move-assign
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
+
 Wvla
 UrlSuffix(gcc/Warning-Options.html#index-Wno-vla)
 
@@ -900,9 +918,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-volatile-register-var)
 Wvirtual-inheritance
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-inheritance)
 
-Wvirtual-move-assign
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
-
 Wwrite-strings
 UrlSuffix(gcc/Warning-Options.html#index-Wno-write-strings)
 
@@ -912,20 +927,8 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-xor-used-as-pow)
 Wzero-as-null-pointer-constant
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-zero-as-null-pointer-constant)
 
-Wuseless-cast
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-useless-cast)
-
-Wsubobject-linkage
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
-
-Welaborated-enum-base
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
-
-Wduplicate-decl-specifier
-UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
-
-Wrestrict
-UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+Wzero-length-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
 
 ; skipping UrlSuffix for 'ansi' due to multiple URLs:
 ;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
index 4cb2d7dc628..db4354989fc 100644
--- a/gcc/common.opt.urls
+++ b/gcc/common.opt.urls
@@ -64,10 +64,10 @@ Warray-bounds=
 UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
 
 Wuse-after-free
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
 
 Wuse-after-free=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
 
 Wattributes
 UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
diff --git a/gcc/config/avr/avr.opt.urls b/gcc/config/avr/avr.opt.urls
index 7af677199cc..9f09e9aff9f 100644
--- a/gcc/config/avr/avr.opt.urls
+++ b/gcc/config/avr/avr.opt.urls
@@ -12,6 +12,9 @@ UrlSuffix(gcc/AVR-Options.html#index-mgas-isr-prologues)
 mn-flash=
 UrlSuffix(gcc/AVR-Options.html#index-mn-flash)
 
+mskip-bug
+UrlSuffix(gcc/AVR-Options.html#index-mskip-bug)
+
 mrmw
 UrlSuffix(gcc/AVR-Options.html#index-mrmw)
 
@@ -42,6 +45,12 @@ UrlSuffix(gcc/AVR-Options.html#index-maccumulate-args)
 mstrict-X
 UrlSuffix(gcc/AVR-Options.html#index-mstrict-X)
 
+mflmap
+UrlSuffix(gcc/AVR-Options.html#index-mflmap)
+
+mrodata-in-ram
+UrlSuffix(gcc/AVR-Options.html#index-mrodata-in-ram)
+
 msp8
 UrlSuffix(gcc/AVR-Options.html#index-msp8)
 
diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls
index 9b988fd6996..902db290480 100644
--- a/gcc/config/i386/i386.opt.urls
+++ b/gcc/config/i386/i386.opt.urls
@@ -597,6 +597,12 @@ UrlSuffix(gcc/x86-Options.html#index-msm4)
 mapxf
 UrlSuffix(gcc/x86-Options.html#index-mapxf)
 
+mapx-inline-asm-use-gpr32
+UrlSuffix(gcc/x86-Options.html#index-mapx-inline-asm-use-gpr32)
+
+mevex512
+UrlSuffix(gcc/x86-Options.html#index-mevex512)
+
 musermsr
 UrlSuffix(gcc/x86-Options.html#index-musermsr)
 
diff --git a/gcc/config/mips/mips.opt.urls b/gcc/config/mips/mips.opt.urls
index ff2f0aee0e3..03f0002d5ce 100644
--- a/gcc/config/mips/mips.opt.urls
+++ b/gcc/config/mips/mips.opt.urls
@@ -65,8 +65,11 @@ UrlSuffix(gcc/MIPS-Options.html#index-membedded-data)
 meva
 UrlSuffix(gcc/MIPS-Options.html#index-meva)
 
-mexplicit-relocs
-UrlSuffix(gcc/MIPS-Options.html#index-mexplicit-relocs-2)
+; skipping UrlSuffix for 'mexplicit-relocs=' due to finding no URLs
+
+; skipping UrlSuffix for 'mexplicit-relocs' due to finding no URLs
+
+; skipping UrlSuffix for 'mno-explicit-relocs' due to finding no URLs
 
 mextern-sdata
 UrlSuffix(gcc/MIPS-Options.html#index-mextern-sdata)
diff --git a/gcc/rust/lang.opt.urls b/gcc/rust/lang.opt.urls
index 9cf8987e734..3d899ae97b0 100644
--- a/gcc/rust/lang.opt.urls
+++ b/gcc/rust/lang.opt.urls
@@ -24,6 +24,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
 Wunused-result
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
 
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
 o
 UrlSuffix(gcc/Overall-Options.html#index-o)
 

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

* Re: CI for "Option handling: add documentation URLs"
  2024-02-18 22:58                           ` Mark Wielaard
  2024-02-19 11:38                             ` Mark Wielaard
@ 2024-02-22  3:57                             ` YunQiang Su
  2024-02-24 17:42                               ` Mark Wielaard
  1 sibling, 1 reply; 47+ messages in thread
From: YunQiang Su @ 2024-02-22  3:57 UTC (permalink / raw)
  To: Mark Wielaard
  Cc: David Malcolm, Joseph Myers, Tobias Burnus, gcc-patches, buildbot

Mark Wielaard <mark@klomp.org> 于2024年2月19日周一 06:58写道:
>
> Hi David,
>
> On Thu, Jan 04, 2024 at 09:57:09AM -0500, David Malcolm wrote:
> > I've pushed the .opt.urls patch kit to gcc trunk [1], so hopefully the
> > CI check you wrote can go live now.
>
> And then I was on vacation myself and forgot. I am sorry.
>
> So, I did try the regenerate-opt-urls locally, and it did generate the
> attached diff. Which seems to show we really need this automated.
>
> Going over the diff. The -Winfinite-recursion in rust does indeed seem
> new.  As do the -mapx-inline-asm-use-gpr32 and mevex512 for i386.  And
> the avr options -mskip-bug, -mflmap and mrodata-in-ram.  The change in
> common.opt.urls for -Wuse-after-free comes from it being moved from
> c++ to the c-family. The changes in mips.opt.urls seem to come from
> commit 46df1369 "doc/invoke: Remove duplicate explicit-relocs entry of
> MIPS".
>

For MIPS, it's due to malformed patches to invoke.text.
I will fix them.

> The changes in c.opt.urls seem mostly reordering. The sorting makes
> more sense after the diff imho. And must have come from commit
> 4666cbde5 "Sort warning options in c-family/c.opt".
>
> Also the documentation for -Warray-parameter was fixed.
>
> So I think the regenerate-opt-urls check does work as intended. So
> lets automate it, because it looks like nobody regenerated the
> url.opts after updating the documentation.
>
> But we should first apply this diff. Could you double check it is
> sane/correct?
>
> Thanks,
>
> Mark



-- 
YunQiang Su

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

* Re: CI for "Option handling: add documentation URLs"
  2024-02-22  3:57                             ` YunQiang Su
@ 2024-02-24 17:42                               ` Mark Wielaard
  2024-03-03 20:04                                 ` Mark Wielaard
  0 siblings, 1 reply; 47+ messages in thread
From: Mark Wielaard @ 2024-02-24 17:42 UTC (permalink / raw)
  To: YunQiang Su
  Cc: David Malcolm, Joseph Myers, Tobias Burnus, gcc-patches, buildbot

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

Hi,

On Thu, Feb 22, 2024 at 11:57:50AM +0800, YunQiang Su wrote:
> Mark Wielaard <mark@klomp.org> 于2024年2月19日周一 06:58写道:
> > So, I did try the regenerate-opt-urls locally, and it did generate the
> > attached diff. Which seems to show we really need this automated.
> >
> > Going over the diff. The -Winfinite-recursion in rust does indeed seem
> > new.  As do the -mapx-inline-asm-use-gpr32 and mevex512 for i386.  And
> > the avr options -mskip-bug, -mflmap and mrodata-in-ram.  The change in
> > common.opt.urls for -Wuse-after-free comes from it being moved from
> > c++ to the c-family. The changes in mips.opt.urls seem to come from
> > commit 46df1369 "doc/invoke: Remove duplicate explicit-relocs entry of
> > MIPS".
> >
> 
> For MIPS, it's due to malformed patches to invoke.text.
> I will fix them.

Thanks. So with your commit 00bc8c0998d8 ("invoke.texi: Fix some
skipping UrlSuffix problem for MIPS") pushed now, the attached patch
fixes the remaining issues.

Is this OK to push?

> > The changes in c.opt.urls seem mostly reordering. The sorting makes
> > more sense after the diff imho. And must have come from commit
> > 4666cbde5 "Sort warning options in c-family/c.opt".
> >
> > Also the documentation for -Warray-parameter was fixed.
> >
> > So I think the regenerate-opt-urls check does work as intended. So
> > lets automate it, because it looks like nobody regenerated the
> > url.opts after updating the documentation.
> >
> > But we should first apply this diff. Could you double check it is
> > sane/correct?
> >
> > Thanks,
> >
> > Mark
> 
> 
> 
> -- 
> YunQiang Su

[-- Attachment #2: 0001-Regenerate-opt.urls.patch --]
[-- Type: text/plain, Size: 26584 bytes --]

From c019327e919fff87ffa94799e8f521bda707a883 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Sat, 24 Feb 2024 17:34:05 +0100
Subject: [PATCH] Regenerate opt.urls

There were several commits that didn't regenerate the opt.urls files.

Fixes: 438ef143679e ("rs6000: Neuter option -mpower{8,9}-vector")
Fixes: 50c549ef3db6 ("gccrs: enable -Winfinite-recursion warnings by default")
Fixes: 25bb8a40abd9 ("Move docs for -Wuse-after-free and -Wuseless-cast")
Fixes: 48448055fb70 ("AVR: Support .rodata in Flash for AVR64* and AVR128*")
Fixes: 42503cc257fb ("AVR: Document option -mskip-bug")
Fixes: 7de5bb642c12 ("i386: [APX] Document inline asm behavior and new switch")
Fixes: 49a14ee488b8 ("Add -mevex512 into invoke.texi")
Fixes: 4666cbde5e6d ("Sort warning options in c-family/c.opt.")

gcc/config/
	* rs6000/rs6000.opt.urls: Regenerate.
	* avr/avr.opt.urls: Likewise.
	* i386/i386.opt.urls: Likewise.
	* pru/pru.opt.urls: Likewise.
	* riscv/riscv.opt.urls: Likewise.

gcc/rust/
	* lang.opt.urls: Regenerate.

gcc/
	* common.opt.urls: Regenerate.

gcc/c-family/
	* c.opt.urls: Regenerate.
---
 gcc/c-family/c.opt.urls           | 351 +++++++++++++++---------------
 gcc/common.opt.urls               |   4 +-
 gcc/config/avr/avr.opt.urls       |   9 +
 gcc/config/i386/i386.opt.urls     |   8 +-
 gcc/config/pru/pru.opt.urls       |   2 +-
 gcc/config/riscv/riscv.opt.urls   |   2 +-
 gcc/config/rs6000/rs6000.opt.urls |   3 -
 gcc/rust/lang.opt.urls            |   3 +
 8 files changed, 200 insertions(+), 182 deletions(-)

diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
index 5365c8e2bc54..9f97dc61a778 100644
--- a/gcc/c-family/c.opt.urls
+++ b/gcc/c-family/c.opt.urls
@@ -88,6 +88,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wabsolute-value)
 Waddress
 UrlSuffix(gcc/Warning-Options.html#index-Waddress)
 
+Waddress-of-packed-member
+UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
+
 Waligned-new
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
 
@@ -115,6 +118,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Walloc-zero)
 Walloca-larger-than=
 UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
 
+Warith-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
+
 Warray-bounds=
 UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
 
@@ -122,13 +128,10 @@ Warray-compare
 UrlSuffix(gcc/Warning-Options.html#index-Warray-compare)
 
 Warray-parameter
-UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+UrlSuffix(gcc/Warning-Options.html#index-Warray-parameter)
 
 Warray-parameter=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
-
-Wzero-length-bounds
-UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
+UrlSuffix(gcc/Warning-Options.html#index-Warray-parameter)
 
 Wassign-intercept
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wassign-intercept)
@@ -148,9 +151,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wbool-compare)
 Wbool-operation
 UrlSuffix(gcc/Warning-Options.html#index-Wbool-operation)
 
-Wframe-address
-UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
-
 Wbuiltin-declaration-mismatch
 UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
 
@@ -217,6 +217,12 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
 Wchar-subscripts
 UrlSuffix(gcc/Warning-Options.html#index-Wchar-subscripts)
 
+Wclass-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
+
+Wclass-memaccess
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
+
 Wclobbered
 UrlSuffix(gcc/Warning-Options.html#index-Wclobbered)
 
@@ -298,6 +304,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-qualifiers)
 Wdiv-by-zero
 UrlSuffix(gcc/Warning-Options.html#index-Wdiv-by-zero)
 
+Wdouble-promotion
+UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
+
+Wduplicate-decl-specifier
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
+
 Wduplicated-branches
 UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-branches)
 
@@ -307,6 +319,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-cond)
 Weffc++
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Weffc_002b_002b)
 
+Welaborated-enum-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
+
 Wempty-body
 UrlSuffix(gcc/Warning-Options.html#index-Wempty-body)
 
@@ -328,12 +343,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.ht
 Wexceptions
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wexceptions)
 
+Wexpansion-to-defined
+UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
+
 Wextra
 UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
 
 Wextra-semi
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wextra-semi)
 
+Wflex-array-member-not-at-end
+UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+
 Wfloat-conversion
 UrlSuffix(gcc/Warning-Options.html#index-Wfloat-conversion)
 
@@ -355,6 +376,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-nonliteral)
 Wformat-overflow
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
 
+Wformat-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
 Wformat-security
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-security)
 
@@ -364,6 +388,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-signedness)
 Wformat-truncation
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
 
+Wformat-truncation=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
 Wformat-y2k
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-y2k)
 
@@ -373,14 +400,8 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-zero-length)
 Wformat=
 UrlSuffix(gcc/Warning-Options.html#index-Wformat)
 
-Wformat-overflow=
-UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
-
-Wformat-truncation=
-UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
-
-Wflex-array-member-not-at-end
-UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+Wframe-address
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
 
 Wif-not-aligned
 UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned)
@@ -391,6 +412,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Wignored-qualifiers)
 Wignored-attributes
 UrlSuffix(gcc/Warning-Options.html#index-Wignored-attributes)
 
+Wimplicit
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wimplicit-function-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
+
+Wimplicit-int
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
+
 Winaccessible-base
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winaccessible-base)
 
@@ -400,9 +433,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wincompatible-pointer-types)
 Winfinite-recursion
 UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
 
-Waddress-of-packed-member
-UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
-
 Winit-self
 UrlSuffix(gcc/Warning-Options.html#index-Winit-self)
 
@@ -412,24 +442,6 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winit-list-lifetime)
 Winterference-size
 UrlSuffix(gcc/Warning-Options.html#index-Winterference-size)
 
-Wimplicit
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
-
-Wimplicit-fallthrough=
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
-
-Wdouble-promotion
-UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
-
-Wexpansion-to-defined
-UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
-
-Wimplicit-function-declaration
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
-
-Wimplicit-int
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
-
 Winherited-variadic-ctor
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winherited-variadic-ctor)
 
@@ -460,12 +472,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wjump-misses-init)
 Wliteral-suffix
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wliteral-suffix)
 
-Wlogical-op
-UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
-
 Wlogical-not-parentheses
 UrlSuffix(gcc/Warning-Options.html#index-Wlogical-not-parentheses)
 
+Wlogical-op
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
+
 Wlong-long
 UrlSuffix(gcc/Warning-Options.html#index-Wlong-long)
 
@@ -475,12 +487,15 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmain)
 Wmain
 UrlSuffix(gcc/Warning-Options.html#index-Wmain)
 
-Wmemset-transposed-args
-UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
 
 Wmemset-elt-size
 UrlSuffix(gcc/Warning-Options.html#index-Wmemset-elt-size)
 
+Wmemset-transposed-args
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+
 Wmisleading-indentation
 UrlSuffix(gcc/Warning-Options.html#index-Wmisleading-indentation)
 
@@ -493,6 +508,9 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete)
 Wmismatched-tags
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-tags)
 
+Wmissing-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
+
 Wmissing-braces
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-braces)
 
@@ -502,93 +520,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmissing-declarations)
 Wmissing-field-initializers
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-field-initializers)
 
-Wmissing-requires
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
-
-Wmissing-template-keyword
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
-
-Wmultistatement-macros
-UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
-
-Wmultiple-inheritance
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
-
-Wnamespaces
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
-
-Wnrvo
-UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
-
-Wpacked-not-aligned
-UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
-
-Wrange-loop-construct
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
-
-Wredundant-tags
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
-
-Wsized-deallocation
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
-
-Wsizeof-pointer-div
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
-
-Wsizeof-array-div
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
-
-Wsizeof-pointer-memaccess
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
-
-Wsizeof-array-argument
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
-
-Wstring-compare
-UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
-
-Wstringop-overflow
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
-
-Wstringop-overflow=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
-
-Wstringop-overread
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
-
-Wstringop-truncation
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
-
-Wstrict-flex-arrays
-UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
-
-Wsuggest-attribute=format
-UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
-
-Wsuggest-override
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
-
-Wswitch
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
-
-Wswitch-default
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
-
-Wswitch-enum
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
-
-Wswitch-bool
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
-
-Wswitch-outside-range
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
-
-Wtemplates
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
-
-Wmissing-attributes
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
-
 Wmissing-format-attribute
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-format-attribute)
 
@@ -601,12 +532,27 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmissing-parameter-type)
 Wmissing-prototypes
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-prototypes)
 
+Wmissing-requires
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
+
+Wmissing-template-keyword
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
+
 Wmissing-variable-declarations
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-variable-declarations)
 
 Wmultichar
 UrlSuffix(gcc/Warning-Options.html#index-Wmultichar)
 
+Wmultiple-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
+
+Wmultistatement-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
+
+Wnamespaces
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
+
 Wnarrowing
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnarrowing)
 
@@ -622,12 +568,6 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept-type)
 Wnon-template-friend
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-template-friend)
 
-Wclass-conversion
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
-
-Wclass-memaccess
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
-
 Wnon-virtual-dtor
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-virtual-dtor)
 
@@ -682,9 +622,15 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init)
 Woverride-init-side-effects
 UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init-side-effects)
 
+Wnrvo
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
+
 Wpacked-bitfield-compat
 UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-bitfield-compat)
 
+Wpacked-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
+
 Wparentheses
 UrlSuffix(gcc/Warning-Options.html#index-Wno-parentheses)
 
@@ -694,6 +640,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
 Wpessimizing-move
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-pessimizing-move)
 
+Wplacement-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wplacement-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
 ; skipping UrlSuffix for 'Wpmf-conversions' due to multiple URLs:
 ;   duplicate: 'gcc/Bound-member-functions.html#index-Wno-pmf-conversions-1'
 ;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-Wno-pmf-conversions'
@@ -723,11 +675,8 @@ UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-W
 Wprotocol
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-protocol)
 
-Wplacement-new
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
-
-Wplacement-new=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+Wrange-loop-construct
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
 
 Wredundant-decls
 UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
@@ -735,12 +684,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
 Wredundant-move
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-move)
 
+Wredundant-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
+
 Wregister
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register)
 
 Wreorder
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder)
 
+Wrestrict
+UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+
 Wreturn-mismatch
 UrlSuffix(gcc/Warning-Options.html#index-Wno-return-mismatch)
 
@@ -777,9 +732,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-overflow)
 Wshift-negative-value
 UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-negative-value)
 
-Warith-conversion
-UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
-
 Wsign-compare
 UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
 
@@ -792,30 +744,93 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-conversion)
 Wsign-promo
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sign-promo)
 
-Wstrict-null-sentinel
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+Wsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
 
-Wstrict-prototypes
-UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+Wsizeof-array-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
+
+Wsizeof-array-argument
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
+
+Wsizeof-pointer-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
+
+Wsizeof-pointer-memaccess
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
 
 Wstrict-aliasing=
 UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
 
+Wstrict-flex-arrays
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
+
+Wstrict-null-sentinel
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+
 Wstrict-overflow=
 UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
 
+Wstrict-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+
 Wstrict-selector-match
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-strict-selector-match)
 
+Wstring-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
+
+Wstringop-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overread
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
+
+Wstringop-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
+
+Wsubobject-linkage
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
+
+Wsuggest-attribute=format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
+
+Wsuggest-override
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
+
+Wswitch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
+
+Wswitch-default
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
+
+Wswitch-enum
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
+
+Wswitch-bool
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
+
+Wswitch-outside-range
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
+
 Wsync-nand
 UrlSuffix(gcc/Warning-Options.html#index-Wno-sync-nand)
 
 Wsystem-headers
 UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
 
+Wtemplates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
+
 Wtautological-compare
 UrlSuffix(gcc/Warning-Options.html#index-Wno-tautological-compare)
 
+Wtemplate-id-cdtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-template-id-cdtor)
+
 Wterminate
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-terminate)
 
@@ -840,9 +855,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unicode)
 Wuninitialized
 UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
 
-Wmaybe-uninitialized
-UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
-
 Wunknown-pragmas
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
 
@@ -852,6 +864,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unsuffixed-float-constants)
 Wunused
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
 
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
 Wunused-local-typedefs
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-local-typedefs)
 
@@ -864,14 +882,11 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
 Wunused-variable
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
 
-Wunused-const-variable
-UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
-
-Wunused-const-variable=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
-
 Wuse-after-free=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
+
+Wuseless-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wno-useless-cast)
 
 Wvariadic-macros
 UrlSuffix(gcc/Warning-Options.html#index-Wno-variadic-macros)
@@ -882,6 +897,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnin
 Wvexing-parse
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-vexing-parse)
 
+Wvirtual-move-assign
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
+
 Wvla
 UrlSuffix(gcc/Warning-Options.html#index-Wno-vla)
 
@@ -900,9 +918,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-volatile-register-var)
 Wvirtual-inheritance
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-inheritance)
 
-Wvirtual-move-assign
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
-
 Wwrite-strings
 UrlSuffix(gcc/Warning-Options.html#index-Wno-write-strings)
 
@@ -912,20 +927,8 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-xor-used-as-pow)
 Wzero-as-null-pointer-constant
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-zero-as-null-pointer-constant)
 
-Wuseless-cast
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-useless-cast)
-
-Wsubobject-linkage
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
-
-Welaborated-enum-base
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
-
-Wduplicate-decl-specifier
-UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
-
-Wrestrict
-UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+Wzero-length-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
 
 ; skipping UrlSuffix for 'ansi' due to multiple URLs:
 ;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
index 4cb2d7dc628e..db4354989fcc 100644
--- a/gcc/common.opt.urls
+++ b/gcc/common.opt.urls
@@ -64,10 +64,10 @@ Warray-bounds=
 UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
 
 Wuse-after-free
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
 
 Wuse-after-free=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
 
 Wattributes
 UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
diff --git a/gcc/config/avr/avr.opt.urls b/gcc/config/avr/avr.opt.urls
index 7af677199cc4..9f09e9aff9f7 100644
--- a/gcc/config/avr/avr.opt.urls
+++ b/gcc/config/avr/avr.opt.urls
@@ -12,6 +12,9 @@ UrlSuffix(gcc/AVR-Options.html#index-mgas-isr-prologues)
 mn-flash=
 UrlSuffix(gcc/AVR-Options.html#index-mn-flash)
 
+mskip-bug
+UrlSuffix(gcc/AVR-Options.html#index-mskip-bug)
+
 mrmw
 UrlSuffix(gcc/AVR-Options.html#index-mrmw)
 
@@ -42,6 +45,12 @@ UrlSuffix(gcc/AVR-Options.html#index-maccumulate-args)
 mstrict-X
 UrlSuffix(gcc/AVR-Options.html#index-mstrict-X)
 
+mflmap
+UrlSuffix(gcc/AVR-Options.html#index-mflmap)
+
+mrodata-in-ram
+UrlSuffix(gcc/AVR-Options.html#index-mrodata-in-ram)
+
 msp8
 UrlSuffix(gcc/AVR-Options.html#index-msp8)
 
diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls
index 9b988fd6996f..0f2015610aed 100644
--- a/gcc/config/i386/i386.opt.urls
+++ b/gcc/config/i386/i386.opt.urls
@@ -146,7 +146,7 @@ miamcu
 UrlSuffix(gcc/x86-Options.html#index-miamcu)
 
 mabi=
-UrlSuffix(gcc/x86-Options.html#index-mabi-6)
+UrlSuffix(gcc/x86-Options.html#index-mabi-7)
 
 mcall-ms2sysv-xlogues
 UrlSuffix(gcc/x86-Options.html#index-mcall-ms2sysv-xlogues)
@@ -597,6 +597,12 @@ UrlSuffix(gcc/x86-Options.html#index-msm4)
 mapxf
 UrlSuffix(gcc/x86-Options.html#index-mapxf)
 
+mapx-inline-asm-use-gpr32
+UrlSuffix(gcc/x86-Options.html#index-mapx-inline-asm-use-gpr32)
+
+mevex512
+UrlSuffix(gcc/x86-Options.html#index-mevex512)
+
 musermsr
 UrlSuffix(gcc/x86-Options.html#index-musermsr)
 
diff --git a/gcc/config/pru/pru.opt.urls b/gcc/config/pru/pru.opt.urls
index 373b02d5aedc..1f8a26a0db5f 100644
--- a/gcc/config/pru/pru.opt.urls
+++ b/gcc/config/pru/pru.opt.urls
@@ -13,5 +13,5 @@ mloop
 UrlSuffix(gcc/PRU-Options.html#index-mloop)
 
 mabi=
-UrlSuffix(gcc/PRU-Options.html#index-mabi-3)
+UrlSuffix(gcc/PRU-Options.html#index-mabi-4)
 
diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls
index e1ab96658ea6..f40795866cfb 100644
--- a/gcc/config/riscv/riscv.opt.urls
+++ b/gcc/config/riscv/riscv.opt.urls
@@ -12,7 +12,7 @@ UrlSuffix(gcc/RISC-V-Options.html#index-mbranch-cost-4)
 ; skipping UrlSuffix for 'mplt' due to finding no URLs
 
 mabi=
-UrlSuffix(gcc/RISC-V-Options.html#index-mabi-4)
+UrlSuffix(gcc/RISC-V-Options.html#index-mabi-5)
 
 mpreferred-stack-boundary=
 UrlSuffix(gcc/RISC-V-Options.html#index-mpreferred-stack-boundary)
diff --git a/gcc/config/rs6000/rs6000.opt.urls b/gcc/config/rs6000/rs6000.opt.urls
index 28bf073c6cfd..c7c1cefe22cd 100644
--- a/gcc/config/rs6000/rs6000.opt.urls
+++ b/gcc/config/rs6000/rs6000.opt.urls
@@ -162,9 +162,6 @@ UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msave-toc-indirect)
 mpower8-fusion
 UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-fusion)
 
-mpower8-vector
-UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-vector)
-
 mcrypto
 UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcrypto)
 
diff --git a/gcc/rust/lang.opt.urls b/gcc/rust/lang.opt.urls
index 9cf8987e7344..3d899ae97b0a 100644
--- a/gcc/rust/lang.opt.urls
+++ b/gcc/rust/lang.opt.urls
@@ -24,6 +24,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
 Wunused-result
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
 
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
 o
 UrlSuffix(gcc/Overall-Options.html#index-o)
 
-- 
2.43.0


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

* Re: CI for "Option handling: add documentation URLs"
  2024-02-24 17:42                               ` Mark Wielaard
@ 2024-03-03 20:04                                 ` Mark Wielaard
  2024-03-04 13:48                                   ` David Malcolm
  0 siblings, 1 reply; 47+ messages in thread
From: Mark Wielaard @ 2024-03-03 20:04 UTC (permalink / raw)
  To: YunQiang Su
  Cc: David Malcolm, Joseph Myers, Tobias Burnus, gcc-patches, buildbot

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

Hi,

On Sat, Feb 24, 2024 at 06:42:58PM +0100, Mark Wielaard wrote:
> On Thu, Feb 22, 2024 at 11:57:50AM +0800, YunQiang Su wrote:
> > Mark Wielaard <mark@klomp.org> 于2024年2月19日周一 06:58写道:
> > > So, I did try the regenerate-opt-urls locally, and it did generate the
> > > attached diff. Which seems to show we really need this automated.
> > >
> > > Going over the diff. The -Winfinite-recursion in rust does indeed seem
> > > new.  As do the -mapx-inline-asm-use-gpr32 and mevex512 for i386.  And
> > > the avr options -mskip-bug, -mflmap and mrodata-in-ram.  The change in
> > > common.opt.urls for -Wuse-after-free comes from it being moved from
> > > c++ to the c-family. The changes in mips.opt.urls seem to come from
> > > commit 46df1369 "doc/invoke: Remove duplicate explicit-relocs entry of
> > > MIPS".
> > 
> > For MIPS, it's due to malformed patches to invoke.text.
> > I will fix them.
> 
> Thanks. So with your commit 00bc8c0998d8 ("invoke.texi: Fix some
> skipping UrlSuffix problem for MIPS") pushed now, the attached patch
> fixes the remaining issues.
> 
> Is this OK to push?

Ping.

I have now regenerated the patch to also include the new avr mfuse-add
change. It would be nice to get this committed so we can turn on the
automatic checker.

Thanks,

Mark

[-- Attachment #2: 0001-Regenerate-opt.urls.patch --]
[-- Type: text/plain, Size: 26878 bytes --]

From 84373cd8045e67f0d1716dad899c3463b823ea97 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Sun, 3 Mar 2024 20:50:32 +0100
Subject: [PATCH] Regenerate opt.urls

There were several commits that didn't regenerate the opt.urls files.

Fixes: 438ef143679e ("rs6000: Neuter option -mpower{8,9}-vector")
Fixes: 50c549ef3db6 ("gccrs: enable -Winfinite-recursion warnings by default")
Fixes: 25bb8a40abd9 ("Move docs for -Wuse-after-free and -Wuseless-cast")
Fixes: 48448055fb70 ("AVR: Support .rodata in Flash for AVR64* and AVR128*")
Fixes: 42503cc257fb ("AVR: Document option -mskip-bug")
Fixes: 7de5bb642c12 ("i386: [APX] Document inline asm behavior and new switch")
Fixes: 49a14ee488b8 ("Add -mevex512 into invoke.texi")
Fixes: 4666cbde5e6d ("Sort warning options in c-family/c.opt.")
Fixes: cda383616183 ("AVR: target/114100 - Better indirect accesses for reduced Tiny")

gcc/config/
	* rs6000/rs6000.opt.urls: Regenerate.
	* avr/avr.opt.urls: Likewise.
	* i386/i386.opt.urls: Likewise.
	* pru/pru.opt.urls: Likewise.
	* riscv/riscv.opt.urls: Likewise.

gcc/rust/
	* lang.opt.urls: Regenerate.

gcc/
	* common.opt.urls: Regenerate.

gcc/c-family/
	* c.opt.urls: Regenerate.
---
 gcc/c-family/c.opt.urls           | 351 +++++++++++++++---------------
 gcc/common.opt.urls               |   4 +-
 gcc/config/avr/avr.opt.urls       |  15 ++
 gcc/config/i386/i386.opt.urls     |   8 +-
 gcc/config/pru/pru.opt.urls       |   2 +-
 gcc/config/riscv/riscv.opt.urls   |   2 +-
 gcc/config/rs6000/rs6000.opt.urls |   3 -
 gcc/rust/lang.opt.urls            |   3 +
 8 files changed, 206 insertions(+), 182 deletions(-)

diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
index 5365c8e2bc54..9f97dc61a778 100644
--- a/gcc/c-family/c.opt.urls
+++ b/gcc/c-family/c.opt.urls
@@ -88,6 +88,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wabsolute-value)
 Waddress
 UrlSuffix(gcc/Warning-Options.html#index-Waddress)
 
+Waddress-of-packed-member
+UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
+
 Waligned-new
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Waligned-new)
 
@@ -115,6 +118,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Walloc-zero)
 Walloca-larger-than=
 UrlSuffix(gcc/Warning-Options.html#index-Walloca-larger-than_003d) LangUrlSuffix_D(gdc/Warnings.html#index-Walloca-larger-than)
 
+Warith-conversion
+UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
+
 Warray-bounds=
 UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
 
@@ -122,13 +128,10 @@ Warray-compare
 UrlSuffix(gcc/Warning-Options.html#index-Warray-compare)
 
 Warray-parameter
-UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
+UrlSuffix(gcc/Warning-Options.html#index-Warray-parameter)
 
 Warray-parameter=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-array-parameter)
-
-Wzero-length-bounds
-UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
+UrlSuffix(gcc/Warning-Options.html#index-Warray-parameter)
 
 Wassign-intercept
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wassign-intercept)
@@ -148,9 +151,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wbool-compare)
 Wbool-operation
 UrlSuffix(gcc/Warning-Options.html#index-Wbool-operation)
 
-Wframe-address
-UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
-
 Wbuiltin-declaration-mismatch
 UrlSuffix(gcc/Warning-Options.html#index-Wbuiltin-declaration-mismatch) LangUrlSuffix_D(gdc/Warnings.html#index-Wbuiltin-declaration-mismatch)
 
@@ -217,6 +217,12 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wcatch-value)
 Wchar-subscripts
 UrlSuffix(gcc/Warning-Options.html#index-Wchar-subscripts)
 
+Wclass-conversion
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
+
+Wclass-memaccess
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
+
 Wclobbered
 UrlSuffix(gcc/Warning-Options.html#index-Wclobbered)
 
@@ -298,6 +304,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wdiscarded-qualifiers)
 Wdiv-by-zero
 UrlSuffix(gcc/Warning-Options.html#index-Wdiv-by-zero)
 
+Wdouble-promotion
+UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
+
+Wduplicate-decl-specifier
+UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
+
 Wduplicated-branches
 UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-branches)
 
@@ -307,6 +319,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wduplicated-cond)
 Weffc++
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Weffc_002b_002b)
 
+Welaborated-enum-base
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
+
 Wempty-body
 UrlSuffix(gcc/Warning-Options.html#index-Wempty-body)
 
@@ -328,12 +343,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Werror) LangUrlSuffix_D(gdc/Warnings.ht
 Wexceptions
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wexceptions)
 
+Wexpansion-to-defined
+UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
+
 Wextra
 UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra)
 
 Wextra-semi
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wextra-semi)
 
+Wflex-array-member-not-at-end
+UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+
 Wfloat-conversion
 UrlSuffix(gcc/Warning-Options.html#index-Wfloat-conversion)
 
@@ -355,6 +376,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-nonliteral)
 Wformat-overflow
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
 
+Wformat-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
+
 Wformat-security
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-security)
 
@@ -364,6 +388,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-signedness)
 Wformat-truncation
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
 
+Wformat-truncation=
+UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
+
 Wformat-y2k
 UrlSuffix(gcc/Warning-Options.html#index-Wformat-y2k)
 
@@ -373,14 +400,8 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat-zero-length)
 Wformat=
 UrlSuffix(gcc/Warning-Options.html#index-Wformat)
 
-Wformat-overflow=
-UrlSuffix(gcc/Warning-Options.html#index-Wformat-overflow)
-
-Wformat-truncation=
-UrlSuffix(gcc/Warning-Options.html#index-Wformat-truncation)
-
-Wflex-array-member-not-at-end
-UrlSuffix(gcc/Warning-Options.html#index-Wflex-array-member-not-at-end)
+Wframe-address
+UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
 
 Wif-not-aligned
 UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned)
@@ -391,6 +412,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Wignored-qualifiers)
 Wignored-attributes
 UrlSuffix(gcc/Warning-Options.html#index-Wignored-attributes)
 
+Wimplicit
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
+
+Wimplicit-fallthrough=
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
+
+Wimplicit-function-declaration
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
+
+Wimplicit-int
+UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
+
 Winaccessible-base
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winaccessible-base)
 
@@ -400,9 +433,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wincompatible-pointer-types)
 Winfinite-recursion
 UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
 
-Waddress-of-packed-member
-UrlSuffix(gcc/Warning-Options.html#index-Waddress-of-packed-member)
-
 Winit-self
 UrlSuffix(gcc/Warning-Options.html#index-Winit-self)
 
@@ -412,24 +442,6 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winit-list-lifetime)
 Winterference-size
 UrlSuffix(gcc/Warning-Options.html#index-Winterference-size)
 
-Wimplicit
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit)
-
-Wimplicit-fallthrough=
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-fallthrough)
-
-Wdouble-promotion
-UrlSuffix(gcc/Warning-Options.html#index-Wdouble-promotion)
-
-Wexpansion-to-defined
-UrlSuffix(gcc/Warning-Options.html#index-Wexpansion-to-defined)
-
-Wimplicit-function-declaration
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-function-declaration)
-
-Wimplicit-int
-UrlSuffix(gcc/Warning-Options.html#index-Wimplicit-int)
-
 Winherited-variadic-ctor
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Winherited-variadic-ctor)
 
@@ -460,12 +472,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wjump-misses-init)
 Wliteral-suffix
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wliteral-suffix)
 
-Wlogical-op
-UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
-
 Wlogical-not-parentheses
 UrlSuffix(gcc/Warning-Options.html#index-Wlogical-not-parentheses)
 
+Wlogical-op
+UrlSuffix(gcc/Warning-Options.html#index-Wlogical-op)
+
 Wlong-long
 UrlSuffix(gcc/Warning-Options.html#index-Wlong-long)
 
@@ -475,12 +487,15 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmain)
 Wmain
 UrlSuffix(gcc/Warning-Options.html#index-Wmain)
 
-Wmemset-transposed-args
-UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+Wmaybe-uninitialized
+UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
 
 Wmemset-elt-size
 UrlSuffix(gcc/Warning-Options.html#index-Wmemset-elt-size)
 
+Wmemset-transposed-args
+UrlSuffix(gcc/Warning-Options.html#index-Wmemset-transposed-args)
+
 Wmisleading-indentation
 UrlSuffix(gcc/Warning-Options.html#index-Wmisleading-indentation)
 
@@ -493,6 +508,9 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-new-delete)
 Wmismatched-tags
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmismatched-tags)
 
+Wmissing-attributes
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
+
 Wmissing-braces
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-braces)
 
@@ -502,93 +520,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmissing-declarations)
 Wmissing-field-initializers
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-field-initializers)
 
-Wmissing-requires
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
-
-Wmissing-template-keyword
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
-
-Wmultistatement-macros
-UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
-
-Wmultiple-inheritance
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
-
-Wnamespaces
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
-
-Wnrvo
-UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
-
-Wpacked-not-aligned
-UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
-
-Wrange-loop-construct
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
-
-Wredundant-tags
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
-
-Wsized-deallocation
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
-
-Wsizeof-pointer-div
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
-
-Wsizeof-array-div
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
-
-Wsizeof-pointer-memaccess
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
-
-Wsizeof-array-argument
-UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
-
-Wstring-compare
-UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
-
-Wstringop-overflow
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
-
-Wstringop-overflow=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
-
-Wstringop-overread
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
-
-Wstringop-truncation
-UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
-
-Wstrict-flex-arrays
-UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
-
-Wsuggest-attribute=format
-UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
-
-Wsuggest-override
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
-
-Wswitch
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
-
-Wswitch-default
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
-
-Wswitch-enum
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
-
-Wswitch-bool
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
-
-Wswitch-outside-range
-UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
-
-Wtemplates
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
-
-Wmissing-attributes
-UrlSuffix(gcc/Warning-Options.html#index-Wmissing-attributes)
-
 Wmissing-format-attribute
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-format-attribute)
 
@@ -601,12 +532,27 @@ UrlSuffix(gcc/Warning-Options.html#index-Wmissing-parameter-type)
 Wmissing-prototypes
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-prototypes)
 
+Wmissing-requires
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-requires)
+
+Wmissing-template-keyword
+UrlSuffix(gcc/Warning-Options.html#index-Wmissing-template-keyword)
+
 Wmissing-variable-declarations
 UrlSuffix(gcc/Warning-Options.html#index-Wmissing-variable-declarations)
 
 Wmultichar
 UrlSuffix(gcc/Warning-Options.html#index-Wmultichar)
 
+Wmultiple-inheritance
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wmultiple-inheritance)
+
+Wmultistatement-macros
+UrlSuffix(gcc/Warning-Options.html#index-Wmultistatement-macros)
+
+Wnamespaces
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnamespaces)
+
 Wnarrowing
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wnarrowing)
 
@@ -622,12 +568,6 @@ UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-noexcept-type)
 Wnon-template-friend
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-template-friend)
 
-Wclass-conversion
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-conversion)
-
-Wclass-memaccess
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wclass-memaccess)
-
 Wnon-virtual-dtor
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-non-virtual-dtor)
 
@@ -682,9 +622,15 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init)
 Woverride-init-side-effects
 UrlSuffix(gcc/Warning-Options.html#index-Wno-override-init-side-effects)
 
+Wnrvo
+UrlSuffix(gcc/Warning-Options.html#index-Wno-nrvo)
+
 Wpacked-bitfield-compat
 UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-bitfield-compat)
 
+Wpacked-not-aligned
+UrlSuffix(gcc/Warning-Options.html#index-Wno-packed-not-aligned)
+
 Wparentheses
 UrlSuffix(gcc/Warning-Options.html#index-Wno-parentheses)
 
@@ -694,6 +640,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-pedantic)
 Wpessimizing-move
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-pessimizing-move)
 
+Wplacement-new
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
+Wplacement-new=
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+
 ; skipping UrlSuffix for 'Wpmf-conversions' due to multiple URLs:
 ;   duplicate: 'gcc/Bound-member-functions.html#index-Wno-pmf-conversions-1'
 ;   duplicate: 'gcc/C_002b_002b-Dialect-Options.html#index-Wno-pmf-conversions'
@@ -723,11 +675,8 @@ UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-W
 Wprotocol
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-protocol)
 
-Wplacement-new
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
-
-Wplacement-new=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-placement-new)
+Wrange-loop-construct
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-range-loop-construct)
 
 Wredundant-decls
 UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
@@ -735,12 +684,18 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-redundant-decls)
 Wredundant-move
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-move)
 
+Wredundant-tags
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-redundant-tags)
+
 Wregister
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-register)
 
 Wreorder
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-reorder)
 
+Wrestrict
+UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+
 Wreturn-mismatch
 UrlSuffix(gcc/Warning-Options.html#index-Wno-return-mismatch)
 
@@ -777,9 +732,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-count-overflow)
 Wshift-negative-value
 UrlSuffix(gcc/Warning-Options.html#index-Wno-shift-negative-value)
 
-Warith-conversion
-UrlSuffix(gcc/Warning-Options.html#index-Warith-conversion)
-
 Wsign-compare
 UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-compare)
 
@@ -792,30 +744,93 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-sign-conversion)
 Wsign-promo
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sign-promo)
 
-Wstrict-null-sentinel
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+Wsized-deallocation
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-sized-deallocation)
 
-Wstrict-prototypes
-UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+Wsizeof-array-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-div)
+
+Wsizeof-array-argument
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-array-argument)
+
+Wsizeof-pointer-div
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-div)
+
+Wsizeof-pointer-memaccess
+UrlSuffix(gcc/Warning-Options.html#index-Wno-sizeof-pointer-memaccess)
 
 Wstrict-aliasing=
 UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-aliasing)
 
+Wstrict-flex-arrays
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-flex-arrays)
+
+Wstrict-null-sentinel
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-strict-null-sentinel)
+
 Wstrict-overflow=
 UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-overflow)
 
+Wstrict-prototypes
+UrlSuffix(gcc/Warning-Options.html#index-Wno-strict-prototypes)
+
 Wstrict-selector-match
 UrlSuffix(gcc/Objective-C-and-Objective-C_002b_002b-Dialect-Options.html#index-Wno-strict-selector-match)
 
+Wstring-compare
+UrlSuffix(gcc/Warning-Options.html#index-Wno-string-compare)
+
+Wstringop-overflow
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overflow=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overflow)
+
+Wstringop-overread
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-overread)
+
+Wstringop-truncation
+UrlSuffix(gcc/Warning-Options.html#index-Wno-stringop-truncation)
+
+Wsubobject-linkage
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
+
+Wsuggest-attribute=format
+UrlSuffix(gcc/Warning-Options.html#index-Wno-suggest-attribute_003dformat)
+
+Wsuggest-override
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-suggest-override)
+
+Wswitch
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch)
+
+Wswitch-default
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-default)
+
+Wswitch-enum
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-enum)
+
+Wswitch-bool
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-bool)
+
+Wswitch-outside-range
+UrlSuffix(gcc/Warning-Options.html#index-Wno-switch-outside-range)
+
 Wsync-nand
 UrlSuffix(gcc/Warning-Options.html#index-Wno-sync-nand)
 
 Wsystem-headers
 UrlSuffix(gcc/Warning-Options.html#index-Wno-system-headers)
 
+Wtemplates
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-templates)
+
 Wtautological-compare
 UrlSuffix(gcc/Warning-Options.html#index-Wno-tautological-compare)
 
+Wtemplate-id-cdtor
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-template-id-cdtor)
+
 Wterminate
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-terminate)
 
@@ -840,9 +855,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unicode)
 Wuninitialized
 UrlSuffix(gcc/Warning-Options.html#index-Wno-uninitialized)
 
-Wmaybe-uninitialized
-UrlSuffix(gcc/Warning-Options.html#index-Wmaybe-uninitialized)
-
 Wunknown-pragmas
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unknown-pragmas) LangUrlSuffix_D(gdc/Warnings.html#index-Wno-unknown-pragmas)
 
@@ -852,6 +864,12 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unsuffixed-float-constants)
 Wunused
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused)
 
+Wunused-const-variable
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
+Wunused-const-variable=
+UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
+
 Wunused-local-typedefs
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-local-typedefs)
 
@@ -864,14 +882,11 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
 Wunused-variable
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-variable)
 
-Wunused-const-variable
-UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
-
-Wunused-const-variable=
-UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
-
 Wuse-after-free=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
+
+Wuseless-cast
+UrlSuffix(gcc/Warning-Options.html#index-Wno-useless-cast)
 
 Wvariadic-macros
 UrlSuffix(gcc/Warning-Options.html#index-Wno-variadic-macros)
@@ -882,6 +897,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-varargs) LangUrlSuffix_D(gdc/Warnin
 Wvexing-parse
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-vexing-parse)
 
+Wvirtual-move-assign
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
+
 Wvla
 UrlSuffix(gcc/Warning-Options.html#index-Wno-vla)
 
@@ -900,9 +918,6 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-volatile-register-var)
 Wvirtual-inheritance
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-inheritance)
 
-Wvirtual-move-assign
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-virtual-move-assign)
-
 Wwrite-strings
 UrlSuffix(gcc/Warning-Options.html#index-Wno-write-strings)
 
@@ -912,20 +927,8 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-xor-used-as-pow)
 Wzero-as-null-pointer-constant
 UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-zero-as-null-pointer-constant)
 
-Wuseless-cast
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-useless-cast)
-
-Wsubobject-linkage
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-subobject-linkage)
-
-Welaborated-enum-base
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Welaborated-enum-base)
-
-Wduplicate-decl-specifier
-UrlSuffix(gcc/Warning-Options.html#index-Wduplicate-decl-specifier)
-
-Wrestrict
-UrlSuffix(gcc/Warning-Options.html#index-Wno-restrict)
+Wzero-length-bounds
+UrlSuffix(gcc/Warning-Options.html#index-Wzero-length-bounds)
 
 ; skipping UrlSuffix for 'ansi' due to multiple URLs:
 ;   duplicate: 'gcc/C-Dialect-Options.html#index-ansi-1'
diff --git a/gcc/common.opt.urls b/gcc/common.opt.urls
index 4cb2d7dc628e..db4354989fcc 100644
--- a/gcc/common.opt.urls
+++ b/gcc/common.opt.urls
@@ -64,10 +64,10 @@ Warray-bounds=
 UrlSuffix(gcc/Warning-Options.html#index-Warray-bounds)
 
 Wuse-after-free
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
 
 Wuse-after-free=
-UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wno-use-after-free)
+UrlSuffix(gcc/Warning-Options.html#index-Wno-use-after-free)
 
 Wattributes
 UrlSuffix(gcc/Warning-Options.html#index-Wattributes)
diff --git a/gcc/config/avr/avr.opt.urls b/gcc/config/avr/avr.opt.urls
index 7af677199cc4..f38e67384ab1 100644
--- a/gcc/config/avr/avr.opt.urls
+++ b/gcc/config/avr/avr.opt.urls
@@ -12,6 +12,9 @@ UrlSuffix(gcc/AVR-Options.html#index-mgas-isr-prologues)
 mn-flash=
 UrlSuffix(gcc/AVR-Options.html#index-mn-flash)
 
+mskip-bug
+UrlSuffix(gcc/AVR-Options.html#index-mskip-bug)
+
 mrmw
 UrlSuffix(gcc/AVR-Options.html#index-mrmw)
 
@@ -42,9 +45,21 @@ UrlSuffix(gcc/AVR-Options.html#index-maccumulate-args)
 mstrict-X
 UrlSuffix(gcc/AVR-Options.html#index-mstrict-X)
 
+mflmap
+UrlSuffix(gcc/AVR-Options.html#index-mflmap)
+
+mrodata-in-ram
+UrlSuffix(gcc/AVR-Options.html#index-mrodata-in-ram)
+
 msp8
 UrlSuffix(gcc/AVR-Options.html#index-msp8)
 
+mfuse-add
+UrlSuffix(gcc/AVR-Options.html#index-mfuse-add)
+
+mfuse-add=
+UrlSuffix(gcc/AVR-Options.html#index-mfuse-add)
+
 Waddr-space-convert
 UrlSuffix(gcc/AVR-Options.html#index-Waddr-space-convert)
 
diff --git a/gcc/config/i386/i386.opt.urls b/gcc/config/i386/i386.opt.urls
index 9b988fd6996f..0f2015610aed 100644
--- a/gcc/config/i386/i386.opt.urls
+++ b/gcc/config/i386/i386.opt.urls
@@ -146,7 +146,7 @@ miamcu
 UrlSuffix(gcc/x86-Options.html#index-miamcu)
 
 mabi=
-UrlSuffix(gcc/x86-Options.html#index-mabi-6)
+UrlSuffix(gcc/x86-Options.html#index-mabi-7)
 
 mcall-ms2sysv-xlogues
 UrlSuffix(gcc/x86-Options.html#index-mcall-ms2sysv-xlogues)
@@ -597,6 +597,12 @@ UrlSuffix(gcc/x86-Options.html#index-msm4)
 mapxf
 UrlSuffix(gcc/x86-Options.html#index-mapxf)
 
+mapx-inline-asm-use-gpr32
+UrlSuffix(gcc/x86-Options.html#index-mapx-inline-asm-use-gpr32)
+
+mevex512
+UrlSuffix(gcc/x86-Options.html#index-mevex512)
+
 musermsr
 UrlSuffix(gcc/x86-Options.html#index-musermsr)
 
diff --git a/gcc/config/pru/pru.opt.urls b/gcc/config/pru/pru.opt.urls
index 373b02d5aedc..1f8a26a0db5f 100644
--- a/gcc/config/pru/pru.opt.urls
+++ b/gcc/config/pru/pru.opt.urls
@@ -13,5 +13,5 @@ mloop
 UrlSuffix(gcc/PRU-Options.html#index-mloop)
 
 mabi=
-UrlSuffix(gcc/PRU-Options.html#index-mabi-3)
+UrlSuffix(gcc/PRU-Options.html#index-mabi-4)
 
diff --git a/gcc/config/riscv/riscv.opt.urls b/gcc/config/riscv/riscv.opt.urls
index e1ab96658ea6..f40795866cfb 100644
--- a/gcc/config/riscv/riscv.opt.urls
+++ b/gcc/config/riscv/riscv.opt.urls
@@ -12,7 +12,7 @@ UrlSuffix(gcc/RISC-V-Options.html#index-mbranch-cost-4)
 ; skipping UrlSuffix for 'mplt' due to finding no URLs
 
 mabi=
-UrlSuffix(gcc/RISC-V-Options.html#index-mabi-4)
+UrlSuffix(gcc/RISC-V-Options.html#index-mabi-5)
 
 mpreferred-stack-boundary=
 UrlSuffix(gcc/RISC-V-Options.html#index-mpreferred-stack-boundary)
diff --git a/gcc/config/rs6000/rs6000.opt.urls b/gcc/config/rs6000/rs6000.opt.urls
index 28bf073c6cfd..c7c1cefe22cd 100644
--- a/gcc/config/rs6000/rs6000.opt.urls
+++ b/gcc/config/rs6000/rs6000.opt.urls
@@ -162,9 +162,6 @@ UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-msave-toc-indirect)
 mpower8-fusion
 UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-fusion)
 
-mpower8-vector
-UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mpower8-vector)
-
 mcrypto
 UrlSuffix(gcc/RS_002f6000-and-PowerPC-Options.html#index-mcrypto)
 
diff --git a/gcc/rust/lang.opt.urls b/gcc/rust/lang.opt.urls
index 9cf8987e7344..3d899ae97b0a 100644
--- a/gcc/rust/lang.opt.urls
+++ b/gcc/rust/lang.opt.urls
@@ -24,6 +24,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-const-variable)
 Wunused-result
 UrlSuffix(gcc/Warning-Options.html#index-Wno-unused-result)
 
+Winfinite-recursion
+UrlSuffix(gcc/Warning-Options.html#index-Winfinite-recursion)
+
 o
 UrlSuffix(gcc/Overall-Options.html#index-o)
 
-- 
2.43.2


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

* Re: CI for "Option handling: add documentation URLs"
  2024-03-03 20:04                                 ` Mark Wielaard
@ 2024-03-04 13:48                                   ` David Malcolm
  2024-03-05 12:06                                     ` Mark Wielaard
  0 siblings, 1 reply; 47+ messages in thread
From: David Malcolm @ 2024-03-04 13:48 UTC (permalink / raw)
  To: Mark Wielaard, YunQiang Su
  Cc: Joseph Myers, Tobias Burnus, gcc-patches, buildbot

On Sun, 2024-03-03 at 21:04 +0100, Mark Wielaard wrote:
> Hi,
> 
> On Sat, Feb 24, 2024 at 06:42:58PM +0100, Mark Wielaard wrote:
> > On Thu, Feb 22, 2024 at 11:57:50AM +0800, YunQiang Su wrote:
> > > Mark Wielaard <mark@klomp.org> 于2024年2月19日周一 06:58写道:
> > > > So, I did try the regenerate-opt-urls locally, and it did
> > > > generate the
> > > > attached diff. Which seems to show we really need this
> > > > automated.
> > > > 
> > > > Going over the diff. The -Winfinite-recursion in rust does
> > > > indeed seem
> > > > new.  As do the -mapx-inline-asm-use-gpr32 and mevex512 for
> > > > i386.  And
> > > > the avr options -mskip-bug, -mflmap and mrodata-in-ram.  The
> > > > change in
> > > > common.opt.urls for -Wuse-after-free comes from it being moved
> > > > from
> > > > c++ to the c-family. The changes in mips.opt.urls seem to come
> > > > from
> > > > commit 46df1369 "doc/invoke: Remove duplicate explicit-relocs
> > > > entry of
> > > > MIPS".
> > > 
> > > For MIPS, it's due to malformed patches to invoke.text.
> > > I will fix them.
> > 
> > Thanks. So with your commit 00bc8c0998d8 ("invoke.texi: Fix some
> > skipping UrlSuffix problem for MIPS") pushed now, the attached
> > patch
> > fixes the remaining issues.
> > 
> > Is this OK to push?

Thanks, looks good to me.

> Ping.
> 
> I have now regenerated the patch to also include the new avr mfuse-
> add
> change. It would be nice to get this committed so we can turn on the
> automatic checker.

Please go ahead with that.

Thanks
Dave


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

* Re: CI for "Option handling: add documentation URLs"
  2024-03-04 13:48                                   ` David Malcolm
@ 2024-03-05 12:06                                     ` Mark Wielaard
  2024-03-05 13:34                                       ` David Malcolm
  0 siblings, 1 reply; 47+ messages in thread
From: Mark Wielaard @ 2024-03-05 12:06 UTC (permalink / raw)
  To: David Malcolm, Patrick Palka; +Cc: gcc-patches, buildbot

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

Hi,

On Mon, 2024-03-04 at 08:48 -0500, David Malcolm wrote:
> > I have now regenerated the patch to also include the new avr mfuse-
> > add change. It would be nice to get this committed so we can turn on the
> > automatic checker.
> 
> Please go ahead with that.

I committed that patch, but was not fast enough actually enabling the
buildbot and missed another fixlet needed first.

OK, to push the attached regeneration patch?

Thanks,

Mark

[-- Attachment #2: 0001-Regenerate-c.opt.urls.patch --]
[-- Type: text/x-patch, Size: 869 bytes --]

From e5c2b9983d7c09e5a21fa587dc9cd03d53d67a23 Mon Sep 17 00:00:00 2001
From: Mark Wielaard <mark@klomp.org>
Date: Tue, 5 Mar 2024 13:01:08 +0100
Subject: [PATCH] Regenerate c.opt.urls

Fixes: 08edf85f747b ("c++/modules: relax diagnostic about GMF contents")

gcc/c-family/ChangeLog:

	* c.opt.urls: Regenerate.
---
 gcc/c-family/c.opt.urls | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gcc/c-family/c.opt.urls b/gcc/c-family/c.opt.urls
index 9f97dc61a778..631719863a5e 100644
--- a/gcc/c-family/c.opt.urls
+++ b/gcc/c-family/c.opt.urls
@@ -403,6 +403,9 @@ UrlSuffix(gcc/Warning-Options.html#index-Wformat)
 Wframe-address
 UrlSuffix(gcc/Warning-Options.html#index-Wframe-address)
 
+Wglobal-module
+UrlSuffix(gcc/C_002b_002b-Dialect-Options.html#index-Wglobal-module)
+
 Wif-not-aligned
 UrlSuffix(gcc/Warning-Options.html#index-Wif-not-aligned)
 
-- 
2.44.0


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

* Re: CI for "Option handling: add documentation URLs"
  2024-03-05 12:06                                     ` Mark Wielaard
@ 2024-03-05 13:34                                       ` David Malcolm
  2024-03-05 20:24                                         ` Mark Wielaard
  0 siblings, 1 reply; 47+ messages in thread
From: David Malcolm @ 2024-03-05 13:34 UTC (permalink / raw)
  To: Mark Wielaard, Patrick Palka; +Cc: gcc-patches, buildbot

On Tue, 2024-03-05 at 13:06 +0100, Mark Wielaard wrote:
> Hi,
> 
> On Mon, 2024-03-04 at 08:48 -0500, David Malcolm wrote:
> > > I have now regenerated the patch to also include the new avr
> > > mfuse-
> > > add change. It would be nice to get this committed so we can turn
> > > on the
> > > automatic checker.
> > 
> > Please go ahead with that.
> 
> I committed that patch, but was not fast enough actually enabling the
> buildbot and missed another fixlet needed first.
> 
> OK, to push the attached regeneration patch?

Yes

Thanks
Dave


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

* Re: CI for "Option handling: add documentation URLs"
  2024-03-05 13:34                                       ` David Malcolm
@ 2024-03-05 20:24                                         ` Mark Wielaard
  2024-03-15  7:33                                           ` YunQiang Su
  0 siblings, 1 reply; 47+ messages in thread
From: Mark Wielaard @ 2024-03-05 20:24 UTC (permalink / raw)
  To: David Malcolm; +Cc: Patrick Palka, gcc-patches, buildbot

On Tue, Mar 05, 2024 at 08:34:31AM -0500, David Malcolm wrote:
> > I committed that patch, but was not fast enough actually enabling the
> > buildbot and missed another fixlet needed first.
> > 
> > OK, to push the attached regeneration patch?
> 
> Yes

Thanks, pushed. And now also pushed the builder patch (attached) to
enable it in the CI autoregen checker. It already ran without finding
any issues.

https://builder.sourceware.org/buildbot/#/builders/gcc-autoregen

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

* Re: CI for "Option handling: add documentation URLs"
  2024-03-05 20:24                                         ` Mark Wielaard
@ 2024-03-15  7:33                                           ` YunQiang Su
  2024-03-15 10:06                                             ` Mark Wielaard
  0 siblings, 1 reply; 47+ messages in thread
From: YunQiang Su @ 2024-03-15  7:33 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: David Malcolm, Patrick Palka, gcc-patches, buildbot

Great work. The CI works well now: it blames me ;)
https://builder.sourceware.org/buildbot/#/builders/269/builds/3846

When I add '-mstrict-align' option to MIPS,
the riscv.opt.urls, sysv4.opt.urls, xtensa.opt.urls are changed also.
(why they are effected?

So what's the best practice for this cases?
Should I push a new commit? Or in fact a single commit is preferred?

-- 
YunQiang Su

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

* Re: CI for "Option handling: add documentation URLs"
  2024-03-15  7:33                                           ` YunQiang Su
@ 2024-03-15 10:06                                             ` Mark Wielaard
  0 siblings, 0 replies; 47+ messages in thread
From: Mark Wielaard @ 2024-03-15 10:06 UTC (permalink / raw)
  To: YunQiang Su; +Cc: David Malcolm, Patrick Palka, gcc-patches, buildbot

Hi YunQiang Su,

On Fri, Mar 15, 2024 at 03:33:28PM +0800, YunQiang Su wrote:
> Great work. The CI works well now: it blames me ;)
> https://builder.sourceware.org/buildbot/#/builders/269/builds/3846
> 
> When I add '-mstrict-align' option to MIPS,
> the riscv.opt.urls, sysv4.opt.urls, xtensa.opt.urls are changed also.
> (why they are effected?

They are effected because they also have a '-mstrict-align' option and
each option with the same name gets an unique number.

> So what's the best practice for this cases?
> Should I push a new commit? Or in fact a single commit is preferred?

I don't know if there is a rule for this. But I hope this falls under
the obvious rule. What I would do is simply take that diff the CI
produced.
https://builder.sourceware.org/buildbot/api/v2/logs/7798308/raw

Apply it and commit that with:

Regenerate opt.urls

Fixes: acc38ff59976 ("MIPS: Add -m(no-)strict-align option")

gcc/ChangeLog:

	* config/riscv/riscv.opt.urls: Regenerated.
	* config/rs6000/sysv4.opt.urls: Likewise.
	* config/xtensa/xtensa.opt.urls: Likewise.

Cheers,

Mark


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

end of thread, other threads:[~2024-03-15 10:06 UTC | newest]

Thread overview: 47+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-10 21:42 [PATCH 0/3] Option handling: add documentation URLs David Malcolm
2023-11-10 21:42 ` [PATCH 1/3] options: add gcc/regenerate-opt-urls.py David Malcolm
2023-11-10 21:42 ` [PATCH 2/3] Add generated .opt.urls files David Malcolm
2023-11-12 10:56   ` Iain Buclaw
2023-11-13 14:07     ` David Malcolm
2023-11-13 13:11   ` Marc Poulhiès
2023-11-13 14:07     ` David Malcolm
2023-11-13 16:02       ` Marc Poulhiès
2023-12-19 14:47         ` Marc Poulhiès
2023-11-10 21:42 ` [PATCH 3/3] diagnostics: use the .opt.urls files to urlify quoted text David Malcolm
2023-11-14 17:44   ` Arthur Cohen
2023-11-14  0:12 ` [PATCH 0/3] Option handling: add documentation URLs Joseph Myers
2023-11-15 22:50   ` David Malcolm
2023-11-15 23:40     ` Joseph Myers
2023-11-16 14:28       ` [PATCH 0/4] v2 of " David Malcolm
2023-11-16 14:28         ` [PATCH 1/4] options: add gcc/regenerate-opt-urls.py David Malcolm
2023-11-16 14:28         ` [PATCH 2/4] Add generated .opt.urls files David Malcolm
2023-11-16 14:28         ` [PATCH 3/4] opts: add logic to generate options-urls.cc David Malcolm
2023-11-16 14:28         ` [PATCH 4/4] options: wire up options-urls.cc into gcc_urlifier David Malcolm
2023-11-21  1:09         ` [PATCH 0/4] v2 of Option handling: add documentation URLs Hans-Peter Nilsson
2023-11-21 13:57           ` David Malcolm
2023-11-21 14:12             ` Tobias Burnus
2023-11-21 15:23               ` David Malcolm
2023-11-21 23:43               ` Joseph Myers
2023-12-08 23:35                 ` David Malcolm
2023-12-10 23:35                   ` Mark Wielaard
2023-12-14 15:01                     ` [PATCH 0/4] v3 of: " David Malcolm
2023-12-14 15:01                       ` [PATCH 1/4; v3] options: add gcc/regenerate-opt-urls.py David Malcolm
2023-12-20  0:24                         ` Joseph Myers
2023-12-14 15:01                       ` [PATCH 2/4; v3] Add generated .opt.urls files David Malcolm
2023-12-14 15:01                       ` [PATCH 3/4; v2] opts: add logic to generate options-urls.cc David Malcolm
2023-12-14 15:01                       ` [PATCH 4/4; v2] options: wire up options-urls.cc into gcc_urlifier David Malcolm
2023-12-15  0:59                       ` [PATCH 0/4] v3 of: Option handling: add documentation URLs Mark Wielaard
2023-12-15 14:47                         ` David Malcolm
2024-01-04 14:57                         ` CI for "Option handling: add documentation URLs" David Malcolm
2024-02-18 22:58                           ` Mark Wielaard
2024-02-19 11:38                             ` Mark Wielaard
2024-02-22  3:57                             ` YunQiang Su
2024-02-24 17:42                               ` Mark Wielaard
2024-03-03 20:04                                 ` Mark Wielaard
2024-03-04 13:48                                   ` David Malcolm
2024-03-05 12:06                                     ` Mark Wielaard
2024-03-05 13:34                                       ` David Malcolm
2024-03-05 20:24                                         ` Mark Wielaard
2024-03-15  7:33                                           ` YunQiang Su
2024-03-15 10:06                                             ` Mark Wielaard
2023-12-20  0:28                       ` [PATCH 0/4] v3 of: Option handling: add documentation URLs Joseph Myers

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).